Merge pull request 'feature/toggle' (#10) from feature/toggle into main

Reviewed-on: https://git.altru.id/Furtuna/furtuna-backend/pulls/10
This commit is contained in:
altru 2024-08-10 16:54:16 +00:00
commit 1bfbc1bccc
12 changed files with 69 additions and 29 deletions

View File

@ -34,6 +34,7 @@ type Config struct {
Withdraw Withdraw `mapstructure:"withdrawal"`
Discovery Discovery `mapstructure:"discovery"`
Order Order `mapstructure:"order"`
FeatureToggle FeatureToggle `mapstructure:"feature_toggle"`
}
var (

9
config/logger.go Normal file
View File

@ -0,0 +1,9 @@
package config
type FeatureToggle struct {
LoggerEnabled bool `mapstructure:"logger_enabled"`
}
func (f *FeatureToggle) IsLoggerEnabled() bool {
return f.LoggerEnabled
}

View File

@ -41,7 +41,7 @@ midtrans:
env: 1
brevo:
api_key: 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
api_key: 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
email:
sender: "siregaraditya@gmail.com"
@ -77,3 +77,6 @@ discovery:
- name: "Sumatera"
- name: "Kalimantan"
- name: "Sulawesi"
feature_toggle:
logger_enabled: false

View File

@ -2,6 +2,7 @@ package app
import (
"fmt"
"furtuna-be/config"
"github.com/gin-gonic/gin"
"github.com/gofrs/uuid"
@ -9,7 +10,7 @@ import (
"furtuna-be/internal/middlewares"
)
func NewServer() *Server {
func NewServer(cfg *config.Config) *Server {
gin.SetMode(gin.ReleaseMode)
server := &Server{
@ -19,8 +20,8 @@ func NewServer() *Server {
server.Use(middlewares.Cors())
server.Use(middlewares.LogCorsError())
server.Use(middlewares.Trace())
server.Use(middlewares.Logger())
server.Use(middlewares.RequestMiddleware())
server.Use(middlewares.Logger(&cfg.FeatureToggle))
server.Use(middlewares.RequestMiddleware(&cfg.FeatureToggle))
return server
}

View File

@ -29,7 +29,7 @@ func NewPostgres(c config.Database) (*gorm.DB, error) {
zapCfg := zap.NewProductionConfig()
zapCfg.Level = zap.NewAtomicLevelAt(zap.DebugLevel) // whatever minimum level
zapCfg.DisableCaller = true
zapCfg.DisableCaller = false
// logger, _ := zapCfg.Build()
// db = gorm.Open(sqldblogger.New(logger), db)

View File

@ -9,16 +9,28 @@ import (
"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 {
var parsedReqInfo request.RequestInfo
reqInfo, exists := param.Keys[request.ReqInfoKey]
if exists {
parsedReqInfo = reqInfo.(request.RequestInfo)
if reqInfo, exists := param.Keys[request.ReqInfoKey]; exists {
if castedReqInfo, ok := reqInfo.(request.RequestInfo); ok {
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),
parsedReqInfo.TraceId,
parsedReqInfo.UserId,

View File

@ -16,7 +16,13 @@ import (
"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) {
start := time.Now()
body, _ := readRequestBody(ctx.Request)

View File

@ -2,6 +2,7 @@ package license
import (
"context"
"errors"
"furtuna-be/internal/common/logger"
"furtuna-be/internal/entity"
"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) {
var licenseDB entity.LicenseDB
if err := r.db.Debug().WithContext(ctx).
if err := r.db.WithContext(ctx).
Where("partner_id = ?", partnerID).
Order("end_date DESC").
First(&licenseDB).Error; err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
return nil, nil
}
return nil, err
}
return &licenseDB, nil
}

View File

@ -155,7 +155,7 @@ func (b *OrderRepository) GetAllHystoryOrders(ctx context.Context, req entity.Or
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))
return nil, 0, err
}

View File

@ -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) {
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))
return nil, err
}

View File

@ -6,7 +6,6 @@ import (
"furtuna-be/internal/common/mycontext"
"furtuna-be/internal/entity"
"furtuna-be/internal/utils"
"go.uber.org/zap"
"furtuna-be/internal/common/errors"
@ -68,8 +67,10 @@ func (u *AuthServiceImpl) AuthenticateUser(ctx context.Context, email, password
logger.ContextLogger(ctx).Error("error when get user license", zap.Error(err))
return nil, errors.ErrorInternalServer
}
if parterLicense != nil {
licensePartner = parterLicense.ToPartnerLicense()
}
}
return user.ToUserAuthenticate(signedToken, licensePartner), nil
}

View File

@ -25,7 +25,7 @@ func main() {
log.Fatal(err)
}
server := app.NewServer()
server := app.NewServer(cfg)
repo := repository.NewRepoManagerImpl(dbConn, cfg)
service := services.NewServiceManagerImpl(cfg, repo)