Toggle
This commit is contained in:
parent
2fd676ef3e
commit
414c980c13
@ -24,16 +24,17 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type Config struct {
|
type Config struct {
|
||||||
Server Server `mapstructure:"server"`
|
Server Server `mapstructure:"server"`
|
||||||
Database Database `mapstructure:"postgresql"`
|
Database Database `mapstructure:"postgresql"`
|
||||||
Jwt Jwt `mapstructure:"jwt"`
|
Jwt Jwt `mapstructure:"jwt"`
|
||||||
OSSConfig OSSConfig `mapstructure:"oss"`
|
OSSConfig OSSConfig `mapstructure:"oss"`
|
||||||
Midtrans Midtrans `mapstructure:"midtrans"`
|
Midtrans Midtrans `mapstructure:"midtrans"`
|
||||||
Brevo Brevo `mapstructure:"brevo"`
|
Brevo Brevo `mapstructure:"brevo"`
|
||||||
Email Email `mapstructure:"email"`
|
Email Email `mapstructure:"email"`
|
||||||
Withdraw Withdraw `mapstructure:"withdrawal"`
|
Withdraw Withdraw `mapstructure:"withdrawal"`
|
||||||
Discovery Discovery `mapstructure:"discovery"`
|
Discovery Discovery `mapstructure:"discovery"`
|
||||||
Order Order `mapstructure:"order"`
|
Order Order `mapstructure:"order"`
|
||||||
|
FeatureToggle FeatureToggle `mapstructure:"feature_toggle"`
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
|||||||
9
config/logger.go
Normal file
9
config/logger.go
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
package config
|
||||||
|
|
||||||
|
type FeatureToggle struct {
|
||||||
|
LoggerEnabled bool `mapstructure:"logger_enabled"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *FeatureToggle) IsLoggerEnabled() bool {
|
||||||
|
return f.LoggerEnabled
|
||||||
|
}
|
||||||
@ -51,7 +51,7 @@ email:
|
|||||||
subject: "Reset Password"
|
subject: "Reset Password"
|
||||||
opening_word: "Terima kasih sudah menjadi bagian dari Furtuna. Anda telah berhasil melakukan reset password, silakan masukan unik password yang dibuat oleh sistem dibawah ini:"
|
opening_word: "Terima kasih sudah menjadi bagian dari Furtuna. Anda telah berhasil melakukan reset password, silakan masukan unik password yang dibuat oleh sistem dibawah ini:"
|
||||||
closing_word: "Silakan login kembali menggunakan email dan password anda diatas, sistem akan secara otomatis meminta anda untuk membuat password baru setelah berhasil login. Mohon maaf atas kendala yang dialami."
|
closing_word: "Silakan login kembali menggunakan email dan password anda diatas, sistem akan secara otomatis meminta anda untuk membuat password baru setelah berhasil login. Mohon maaf atas kendala yang dialami."
|
||||||
|
|
||||||
order:
|
order:
|
||||||
fee: 5000
|
fee: 5000
|
||||||
|
|
||||||
@ -76,4 +76,7 @@ discovery:
|
|||||||
- name: "Jawa"
|
- name: "Jawa"
|
||||||
- name: "Sumatera"
|
- name: "Sumatera"
|
||||||
- name: "Kalimantan"
|
- name: "Kalimantan"
|
||||||
- name: "Sulawesi"
|
- name: "Sulawesi"
|
||||||
|
|
||||||
|
feature_toggle:
|
||||||
|
logger_enabled: false
|
||||||
@ -2,6 +2,7 @@ package app
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"furtuna-be/config"
|
||||||
|
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"github.com/gofrs/uuid"
|
"github.com/gofrs/uuid"
|
||||||
@ -9,7 +10,7 @@ import (
|
|||||||
"furtuna-be/internal/middlewares"
|
"furtuna-be/internal/middlewares"
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewServer() *Server {
|
func NewServer(cfg *config.Config) *Server {
|
||||||
gin.SetMode(gin.ReleaseMode)
|
gin.SetMode(gin.ReleaseMode)
|
||||||
|
|
||||||
server := &Server{
|
server := &Server{
|
||||||
@ -19,8 +20,8 @@ func NewServer() *Server {
|
|||||||
server.Use(middlewares.Cors())
|
server.Use(middlewares.Cors())
|
||||||
server.Use(middlewares.LogCorsError())
|
server.Use(middlewares.LogCorsError())
|
||||||
server.Use(middlewares.Trace())
|
server.Use(middlewares.Trace())
|
||||||
server.Use(middlewares.Logger())
|
server.Use(middlewares.Logger(&cfg.FeatureToggle))
|
||||||
server.Use(middlewares.RequestMiddleware())
|
server.Use(middlewares.RequestMiddleware(&cfg.FeatureToggle))
|
||||||
|
|
||||||
return server
|
return server
|
||||||
}
|
}
|
||||||
|
|||||||
@ -29,7 +29,7 @@ func NewPostgres(c config.Database) (*gorm.DB, error) {
|
|||||||
|
|
||||||
zapCfg := zap.NewProductionConfig()
|
zapCfg := zap.NewProductionConfig()
|
||||||
zapCfg.Level = zap.NewAtomicLevelAt(zap.DebugLevel) // whatever minimum level
|
zapCfg.Level = zap.NewAtomicLevelAt(zap.DebugLevel) // whatever minimum level
|
||||||
zapCfg.DisableCaller = true
|
zapCfg.DisableCaller = false
|
||||||
// logger, _ := zapCfg.Build()
|
// logger, _ := zapCfg.Build()
|
||||||
// db = gorm.Open(sqldblogger.New(logger), db)
|
// db = gorm.Open(sqldblogger.New(logger), db)
|
||||||
|
|
||||||
|
|||||||
@ -9,16 +9,28 @@ import (
|
|||||||
"furtuna-be/internal/common/request"
|
"furtuna-be/internal/common/request"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Logger() gin.HandlerFunc {
|
type ConfigLogger interface {
|
||||||
|
IsLoggerEnabled() bool
|
||||||
|
}
|
||||||
|
|
||||||
|
func Logger(c ConfigLogger) gin.HandlerFunc {
|
||||||
|
if !c.IsLoggerEnabled() {
|
||||||
|
return func(ctx *gin.Context) {
|
||||||
|
ctx.Next()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return gin.LoggerWithFormatter(func(param gin.LogFormatterParams) string {
|
return gin.LoggerWithFormatter(func(param gin.LogFormatterParams) string {
|
||||||
var parsedReqInfo request.RequestInfo
|
var parsedReqInfo request.RequestInfo
|
||||||
|
|
||||||
reqInfo, exists := param.Keys[request.ReqInfoKey]
|
if reqInfo, exists := param.Keys[request.ReqInfoKey]; exists {
|
||||||
if exists {
|
if castedReqInfo, ok := reqInfo.(request.RequestInfo); ok {
|
||||||
parsedReqInfo = reqInfo.(request.RequestInfo)
|
parsedReqInfo = castedReqInfo
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return fmt.Sprintf("%s - [HTTP] TraceId: %s; UserId: %d; Method: %s; Path: %s; Status: %d, Latency: %s;\n\n",
|
return fmt.Sprintf(
|
||||||
|
"%s - [HTTP] TraceId: %s; UserId: %d; Method: %s; Path: %s; Status: %d; Latency: %s;\n\n",
|
||||||
param.TimeStamp.Format(time.RFC1123),
|
param.TimeStamp.Format(time.RFC1123),
|
||||||
parsedReqInfo.TraceId,
|
parsedReqInfo.TraceId,
|
||||||
parsedReqInfo.UserId,
|
parsedReqInfo.UserId,
|
||||||
|
|||||||
@ -16,7 +16,13 @@ import (
|
|||||||
"furtuna-be/internal/common/logger"
|
"furtuna-be/internal/common/logger"
|
||||||
)
|
)
|
||||||
|
|
||||||
func RequestMiddleware() (handler gin.HandlerFunc) {
|
func RequestMiddleware(c ConfigLogger) (handler gin.HandlerFunc) {
|
||||||
|
if !c.IsLoggerEnabled() {
|
||||||
|
return func(ctx *gin.Context) {
|
||||||
|
ctx.Next()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return func(ctx *gin.Context) {
|
return func(ctx *gin.Context) {
|
||||||
start := time.Now()
|
start := time.Now()
|
||||||
body, _ := readRequestBody(ctx.Request)
|
body, _ := readRequestBody(ctx.Request)
|
||||||
|
|||||||
@ -2,6 +2,7 @@ package license
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"errors"
|
||||||
"furtuna-be/internal/common/logger"
|
"furtuna-be/internal/common/logger"
|
||||||
"furtuna-be/internal/entity"
|
"furtuna-be/internal/entity"
|
||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
@ -99,11 +100,17 @@ func (r *LicenseRepository) GetAll(ctx context.Context, limit, offset int, statu
|
|||||||
|
|
||||||
func (r *LicenseRepository) FindByPartnerIDMaxEndDate(ctx context.Context, partnerID *int64) (*entity.LicenseDB, error) {
|
func (r *LicenseRepository) FindByPartnerIDMaxEndDate(ctx context.Context, partnerID *int64) (*entity.LicenseDB, error) {
|
||||||
var licenseDB entity.LicenseDB
|
var licenseDB entity.LicenseDB
|
||||||
if err := r.db.Debug().WithContext(ctx).
|
if err := r.db.WithContext(ctx).
|
||||||
Where("partner_id = ?", partnerID).
|
Where("partner_id = ?", partnerID).
|
||||||
Order("end_date DESC").
|
Order("end_date DESC").
|
||||||
First(&licenseDB).Error; err != nil {
|
First(&licenseDB).Error; err != nil {
|
||||||
|
|
||||||
|
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return &licenseDB, nil
|
return &licenseDB, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@ -150,7 +150,7 @@ func (b *OrderRepository) GetAllHystoryOrders(ctx context.Context, req entity.Or
|
|||||||
query = query.Limit(req.Limit)
|
query = query.Limit(req.Limit)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := query.Debug().Scan(&orders).Error; err != nil {
|
if err := query.Scan(&orders).Error; err != nil {
|
||||||
logger.ContextLogger(ctx).Error("error when get all history orders", zap.Error(err))
|
logger.ContextLogger(ctx).Error("error when get all history orders", zap.Error(err))
|
||||||
return nil, 0, err
|
return nil, 0, err
|
||||||
}
|
}
|
||||||
|
|||||||
@ -79,7 +79,7 @@ func (r *SiteRepository) Update(ctx context.Context, site *entity.SiteDB) (*enti
|
|||||||
|
|
||||||
func (r *SiteRepository) GetByID(ctx context.Context, id int64) (*entity.SiteDB, error) {
|
func (r *SiteRepository) GetByID(ctx context.Context, id int64) (*entity.SiteDB, error) {
|
||||||
site := new(entity.SiteDB)
|
site := new(entity.SiteDB)
|
||||||
if err := r.db.Debug().Preload("Products").First(site, id).Error; err != nil {
|
if err := r.db.Preload("Products").First(site, id).Error; err != nil {
|
||||||
logger.ContextLogger(ctx).Error("error when getting site by ID", zap.Error(err))
|
logger.ContextLogger(ctx).Error("error when getting site by ID", zap.Error(err))
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,7 +6,6 @@ import (
|
|||||||
"furtuna-be/internal/common/mycontext"
|
"furtuna-be/internal/common/mycontext"
|
||||||
"furtuna-be/internal/entity"
|
"furtuna-be/internal/entity"
|
||||||
"furtuna-be/internal/utils"
|
"furtuna-be/internal/utils"
|
||||||
|
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
|
|
||||||
"furtuna-be/internal/common/errors"
|
"furtuna-be/internal/common/errors"
|
||||||
@ -68,7 +67,9 @@ func (u *AuthServiceImpl) AuthenticateUser(ctx context.Context, email, password
|
|||||||
logger.ContextLogger(ctx).Error("error when get user license", zap.Error(err))
|
logger.ContextLogger(ctx).Error("error when get user license", zap.Error(err))
|
||||||
return nil, errors.ErrorInternalServer
|
return nil, errors.ErrorInternalServer
|
||||||
}
|
}
|
||||||
licensePartner = parterLicense.ToPartnerLicense()
|
if parterLicense != nil {
|
||||||
|
licensePartner = parterLicense.ToPartnerLicense()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return user.ToUserAuthenticate(signedToken, licensePartner), nil
|
return user.ToUserAuthenticate(signedToken, licensePartner), nil
|
||||||
|
|||||||
2
main.go
2
main.go
@ -25,7 +25,7 @@ func main() {
|
|||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
server := app.NewServer()
|
server := app.NewServer(cfg)
|
||||||
|
|
||||||
repo := repository.NewRepoManagerImpl(dbConn, cfg)
|
repo := repository.NewRepoManagerImpl(dbConn, cfg)
|
||||||
service := services.NewServiceManagerImpl(cfg, repo)
|
service := services.NewServiceManagerImpl(cfg, repo)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user