refactor : adjust use case after mw refactored

This commit is contained in:
dpurbosakti
2025-08-22 15:18:25 +07:00
parent 7a032ff518
commit a4a0a4f672
49 changed files with 2331 additions and 2304 deletions

No files matched your search

@@ -1,159 +1,9 @@
package user
// pm "simrs-vx/internal/use-case/plugin/modifier"
import (
"fmt"
e "simrs-vx/internal/domain/main-entities/user"
pl "simrs-vx/pkg/logger"
pu "simrs-vx/pkg/use-case-helper"
"gorm.io/gorm"
)
// example of middleware
// func init() {
// createPreMw = append(createPreMw, pm.ModifInput)
// createPreMw = append(createPreMw, pm.CheckData)
// createPreMw = append(createPreMw,
// CreateMw{Name: "modif-input", Func: pm.ModifInput},
// CreateMw{Name: "check-data", Func: pm.CheckData},
// )
// }
type middlewareExecutor struct {
Event *pl.Event
Tx *gorm.DB
MwType pu.MWType
}
// NewMiddlewareExecutor creates a new middleware executor
func newMiddlewareExecutor(event *pl.Event, tx *gorm.DB) *middlewareExecutor {
return &middlewareExecutor{
Event: event,
Tx: tx,
}
}
// ExecuteCreateMiddleware executes create middleware
func (me *middlewareExecutor) ExecuteCreateMiddleware(middlewares []createMw, input *e.CreateDto, data *e.User) error {
for i, middleware := range middlewares {
mwName := fmt.Sprintf("%s[%d]", me.MwType, i)
pl.SetLogInfo(me.Event, data, "started", mwName)
if err := middleware(input, data, me.Tx); err != nil {
me.Event.Status = "failed"
me.Event.ErrInfo = pl.ErrorInfo{
Code: pu.GetMiddlewareErrorCode(me.MwType),
Detail: fmt.Sprintf("%s middleware %s failed", me.MwType, mwName),
Raw: err,
}
return pl.SetLogError(*me.Event, data)
}
pl.SetLogInfo(me.Event, nil, "complete")
}
return nil
}
func (me *middlewareExecutor) ExecuteReadListMiddleware(middlewares []readListMw, input *e.ReadListDto, data *e.User) error {
for i, middleware := range middlewares {
mwName := fmt.Sprintf("%s[%d]", me.MwType, i)
pl.SetLogInfo(me.Event, input, "started", mwName)
if err := middleware(input, data, me.Tx); err != nil {
me.Event.Status = "failed"
me.Event.ErrInfo = pl.ErrorInfo{
Code: pu.GetMiddlewareErrorCode(me.MwType),
Detail: fmt.Sprintf("%s middleware %s failed", me.MwType, mwName),
Raw: err,
}
return pl.SetLogError(*me.Event, input)
}
pl.SetLogInfo(me.Event, nil, "complete")
}
return nil
}
func (me *middlewareExecutor) ExecuteReadDetailMiddleware(middlewares []readDetailMw, input *e.ReadDetailDto, data *e.User) error {
for i, middleware := range middlewares {
mwName := fmt.Sprintf("%s[%d]", me.MwType, i)
// Use data for logging if available, otherwise use input
logData := interface{}(input)
if data != nil {
logData = data
}
pl.SetLogInfo(me.Event, logData, "started", mwName)
if err := middleware(input, data, me.Tx); err != nil {
me.Event.Status = "failed"
me.Event.ErrInfo = pl.ErrorInfo{
Code: pu.GetMiddlewareErrorCode(me.MwType),
Detail: fmt.Sprintf("%s middleware %s failed", me.MwType, mwName),
Raw: err,
}
return pl.SetLogError(*me.Event, logData)
}
pl.SetLogInfo(me.Event, nil, "complete")
}
return nil
}
func (me *middlewareExecutor) ExecuteUpdateMiddleware(middlewares []readDetailMw, input *e.ReadDetailDto, data *e.User) error {
for i, middleware := range middlewares {
mwName := fmt.Sprintf("%s[%d]", me.MwType, i)
// Use data for logging if available, otherwise use input
logData := interface{}(input)
if data != nil {
logData = data
}
pl.SetLogInfo(me.Event, logData, "started", mwName)
if err := middleware(input, data, me.Tx); err != nil {
me.Event.Status = "failed"
me.Event.ErrInfo = pl.ErrorInfo{
Code: pu.GetMiddlewareErrorCode(me.MwType),
Detail: fmt.Sprintf("%s middleware %s failed", me.MwType, mwName),
Raw: err,
}
return pl.SetLogError(*me.Event, logData)
}
pl.SetLogInfo(me.Event, nil, "complete")
}
return nil
}
func (me *middlewareExecutor) ExecuteDeleteMiddleware(middlewares []readDetailMw, input *e.ReadDetailDto, data *e.User) error {
for i, middleware := range middlewares {
mwName := fmt.Sprintf("%s[%d]", me.MwType, i)
// Use data for logging if available, otherwise use input
logData := interface{}(input)
if data != nil {
logData = data
}
pl.SetLogInfo(me.Event, logData, "started", mwName)
if err := middleware(input, data, me.Tx); err != nil {
me.Event.Status = "failed"
me.Event.ErrInfo = pl.ErrorInfo{
Code: pu.GetMiddlewareErrorCode(me.MwType),
Detail: fmt.Sprintf("%s middleware %s failed", me.MwType, mwName),
Raw: err,
}
return pl.SetLogError(*me.Event, logData)
}
pl.SetLogInfo(me.Event, nil, "complete")
}
return nil
}
func (me *middlewareExecutor) setMwtype(mwType pu.MWType) {
me.MwType = mwType
}