common_utils

package
v1.1.72 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 5, 2024 License: MIT Imports: 30 Imported by: 0

Documentation

Index

Constants

View Source
const (
	TEST        = "test"
	DEVELOPMENT = "development"
	STAGING     = "staging"
	PRODUCTION  = "production"
)

Variables

This section is empty.

Functions

func BuildCacheKey

func BuildCacheKey(key string, identifier string, funcName string, args ...any) string

func BuildPrefixKey

func BuildPrefixKey(keys ...string) string

func CheckIfFileExists

func CheckIfFileExists(path string) bool

func ComparedPassword

func ComparedPassword(hashedPassword string, password string) error

func ConvertInterfaceE

func ConvertInterfaceE(from any, to any) error

func ConvertInterfaceP

func ConvertInterfaceP(from any, to any)

func CreateFile

func CreateFile(path string) (*os.File, error)

func CustomError

func CustomError(message string, statusCode int) error

func CustomErrorWithTrace

func CustomErrorWithTrace(err error, message string, statusCode int) error

func DeferCheck

func DeferCheck(function func() error)

func DeleteFile

func DeleteFile(path string) error

func DownloadFile

func DownloadFile(url, filePath string) error

func EnableCORS

func EnableCORS(r *chi.Mux)

func ExecSession

func ExecSession(ctx context.Context, client *mongo.Client, fn func(mongo.SessionContext) error) error

func ExecSessionWithRetry

func ExecSessionWithRetry(ctx context.Context, client *mongo.Client, fn func(mongo.SessionContext) error) error

func ExecTx

func ExecTx(ctx context.Context, pgxPool *pgxpool.Pool, fn func(tx pgx.Tx) error) error

func ExecTxWithRetry

func ExecTxWithRetry(ctx context.Context, pgxPool *pgxpool.Pool, fn func(tx pgx.Tx) error) error

func Fetch

func Fetch(urlStr string, options Options) (*goquery.Document, error)

func FetchFile

func FetchFile(url string) (*os.File, error)

func GenerateJsonResponse

func GenerateJsonResponse(w http.ResponseWriter, data interface{}, statusCode int, message string)

func GetCurrentDir

func GetCurrentDir() string

func GetExt

func GetExt(pathOrFilename string) string

func HashedPassword

func HashedPassword(password string) (string, error)

func ImageUriToBase64

func ImageUriToBase64(uri string) (string, error)

func LogAndPanicIfError

func LogAndPanicIfError(err error, message string)

func LogDebug

func LogDebug(message string, fields ...zap.Field)

func LogError

func LogError(message string, fields ...zap.Field)

func LogFatal

func LogFatal(message string, fields ...zap.Field)

func LogIfError

func LogIfError(err error)

func LogInfo

func LogInfo(message string, fields ...zap.Field)

func LogPanic

func LogPanic(message string, fields ...zap.Field)

func Marshal

func Marshal(v any) ([]byte, error)

func NewDecoder

func NewDecoder(r io.Reader) *jsoniter.Decoder

func NewEncoder

func NewEncoder(w io.Writer) *jsoniter.Encoder

func PanicAppError

func PanicAppError(message string, statusCode int)

func PanicIfAppError

func PanicIfAppError(err error, message string, statusCode int)

func PanicIfAppErrorWithTrace

func PanicIfAppErrorWithTrace(ctx context.Context, err error, message string, statusCode int)

func PanicIfError

func PanicIfError(err error)

func PanicValidationError

func PanicValidationError(errors []ValidationError, statusCode int)

func Unmarshal

func Unmarshal(data []byte, v any) error

func ValidateBodyPayload

func ValidateBodyPayload(body io.ReadCloser, output interface{})

func ValidateQueryParamInt

func ValidateQueryParamInt(r *http.Request, queryName string) int

func ValidateStruct

func ValidateStruct(data interface{})

func ValidateUrlParamUUID

func ValidateUrlParamUUID(r *http.Request, paramName string) uuid.UUID

Types

type AppError

type AppError struct {
	Message    string
	StatusCode int
}

func (*AppError) Error

func (ae *AppError) Error() string

type BaseConfig

type BaseConfig struct {
	ServiceName            string        `mapstructure:"SERVICE_NAME"`
	ServiceEnv             string        `mapstructure:"SERVICE_ENV"`
	ServiceHost            string        `mapstructure:"SERVICE_HOST"`
	ServiceHttpPort        string        `mapstructure:"SERVICE_HTTP_PORT"`
	ServiceGrpcPort        string        `mapstructure:"SERVICE_GRPC_PORT"`
	GcpProjectId           string        `mapstructure:"GCP_PROJECT_ID"`
	PubsubDlq              string        `mapstructure:"PUBSUB_DLQ_TOPIC"`
	RedisHost              string        `mapstructure:"REDIS_HOST"`
	RedisPort              string        `mapstructure:"REDIS_PORT"`
	RedisUser              string        `mapstructure:"REDIS_USER"`
	RedisPassword          string        `mapstructure:"REDIS_PASSWORD"`
	RedisCacheExpire       int           `mapstructure:"REDIS_DEFAULT_CACHE_EXPIRE"`
	MongoHost              string        `mapstructure:"MONGO_HOST"`
	MongoPort              string        `mapstructure:"MONGO_PORT"`
	MongoUser              string        `mapstructure:"MONGO_USER"`
	MongoPassword          string        `mapstructure:"MONGO_PASSWORD"`
	MongoDb                string        `mapstructure:"MONGO_DATABASE"`
	MongoReplicaSet        string        `mapstructure:"MONGO_REPLICA_SET,default=rs0"`
	PostgresHost           string        `mapstructure:"POSTGRES_HOST"`
	PostgresPort           string        `mapstructure:"POSTGRES_PORT"`
	PostgresUser           string        `mapstructure:"POSTGRES_USER"`
	PostgresPassword       string        `mapstructure:"POSTGRES_PASSWORD"`
	PostgresDb             string        `mapstructure:"POSTGRES_DATABASE"`
	ElasticsearchHost      []string      `mapstructure:"ELASTICSEARCH_HOST"`
	ElasticsearchUser      string        `mapstructure:"ELASTICSEARCH_USER"`
	ElasticsearchPassword  string        `mapstructure:"ELASTICSEARCH_PASSWORD"`
	ElasticsearchLogging   bool          `mapstructure:"ELASTICSEARCH_LOGGING,default=false"`
	JaegerEnable           bool          `mapstructure:"JAEGER_ENABLE"`
	JaegerHost             string        `mapstructure:"JAEGER_HOST"`
	JaegerPort             string        `mapstructure:"JAEGER_PORT"`
	JaegerLogSpans         bool          `mapstructure:"JAEGER_LOG_SPANS"`
	S3Endpoint             string        `mapstructure:"S3_ENDPOINT"`
	S3AccessKey            string        `mapstructure:"S3_ACCESS_KEY"`
	S3SecretKey            string        `mapstructure:"S3_SECRET_KEY"`
	S3Region               string        `mapstructure:"S3_REGION"`
	S3PublicBucket         string        `mapstructure:"S3_PUBLIC_BUCKET"`
	S3PrivateBucket        string        `mapstructure:"S3_PRIVATE_BUCKET"`
	S3PublicUrl            string        `mapstructure:"S3_PUBLIC_URL"`
	S3PreSignedExpire      time.Duration `mapstructure:"S3_PRESIGNED_EXPIRE"`
	JwtSecretKey           string        `mapstructure:"JWT_SECRET_KEY"`
	JwtAccessTokenExpire   time.Duration `mapstructure:"JWT_ACCESS_TOKEN_EXPIRE"`
	JwtRefreshTokenExpire  time.Duration `mapstructure:"JWT_REFRESH_TOKEN_EXPIRE"`
	KafkaBrokers           []string      `mapstructure:"KAFKA_BROKERS"`
	KafkaTopics            []string      `mapstructure:"KAFKA_TOPICS"`
	KafkaGroupID           string        `mapstructure:"KAFKA_GROUP_ID"`
	KafkaDlqTopic          string        `mapstructure:"KAFKA_DLQ_TOPIC"`
	KafkaDlqRetry          int           `mapstructure:"KAFKA_DLQ_RETRY,default=3"`
	KafkaAutoCommit        bool          `mapstructure:"KAFKA_AUTO_COMMIT,default=false"`
	KafkaAutoTopicCreation bool          `mapstructure:"KAFKA_AUTO_TOPIC_CREATION,default=true"`
	KafkaReplicationFactor int           `mapstructure:"KAFKA_REPLICATION_FACTOR,default=1"`
}

func CheckAndSetConfig

func CheckAndSetConfig(path string, configName string) *BaseConfig

func LoadBaseConfig

func LoadBaseConfig(path string, configName string) (*BaseConfig, error)

type Options added in v1.1.72

type Options struct {
	Headers map[string]string
	Proxy   string
}

type Pagination

type Pagination[T any] struct {
	SearchField string `json:"searchField,omitempty"`
	SearchValue string `json:"searchValue,omitempty"`
	Limit       int    `json:"limit,omitempty"`
	Page        int    `json:"page,omitempty"`
	Sort        string `json:"sort,omitempty"`
	TotalRows   int    `json:"totalRows,omitempty"`
	TotalPages  int    `json:"totalPages,omitempty"`
	Rows        []T    `json:"rows,omitempty"`
}

func Paginate

func Paginate[T any](pagination *Pagination[T], rows []T) *Pagination[T]

func ValidatePagination

func ValidatePagination[T any](r *http.Request) *Pagination[T]

type ParamType

type ParamType interface {
	uuid.UUID | string
}

type Response

type Response[T any] struct {
	StatusCode int    `json:"status_code"`
	Status     string `json:"status"`
	Message    string `json:"message"`
	Data       T      `json:"data,omitempty"`
}

swagger:model Response

type ResponseMap

type ResponseMap struct {
	StatusCode int                    `json:"status_code"`
	Status     string                 `json:"status"`
	Message    string                 `json:"message"`
	Data       map[string]interface{} `json:"data,omitempty"`
}

FOR TESTING PURPOSE

type ResponseSlice

type ResponseSlice struct {
	StatusCode int                      `json:"status_code"`
	Status     string                   `json:"status"`
	Message    string                   `json:"message"`
	Data       []map[string]interface{} `json:"data,omitempty"`
}

FOR TESTING PURPOSE

type ValidationError

type ValidationError struct {
	Message string
}

func (*ValidationError) Error

func (ve *ValidationError) Error() string

type ValidationErrors

type ValidationErrors struct {
	Errors     []ValidationError
	StatusCode int
}

func (*ValidationErrors) Error

func (ve *ValidationErrors) Error() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL