finish sync soapi early-medic

This commit is contained in:
vanilia
2025-12-03 10:19:44 +07:00
parent 11955df8ec
commit 132ce5f5ed
16 changed files with 646 additions and 192 deletions
@@ -2,6 +2,8 @@ package soapi
import (
e "simrs-vx/internal/domain/main-entities/soapi"
esync "simrs-vx/internal/domain/sync-entities/log"
sync "simrs-vx/internal/infra/sync-cfg"
pl "simrs-vx/pkg/logger"
pu "simrs-vx/pkg/use-case-helper"
@@ -12,24 +14,45 @@ type middlewareRunner struct {
Event *pl.Event
Tx *gorm.DB
MwType pu.MWType
SyncOn bool
}
// NewMiddlewareExecutor creates a new middleware executor
func newMiddlewareRunner(event *pl.Event, tx *gorm.DB) *middlewareRunner {
func newMiddlewareRunner(event *pl.Event, syncFromOldSource bool) *middlewareRunner {
activateSync := sync.O.Enable
if syncFromOldSource {
activateSync = false
}
return &middlewareRunner{
Event: event,
Tx: tx,
Event: event,
SyncOn: activateSync,
}
}
// ExecuteCreateMiddleware executes create middleware
func (me *middlewareRunner) RunCreateMiddleware(middlewares []createMw, input *e.CreateDto, data *e.Soapi) error {
func (me *middlewareRunner) RunCreateMiddleware(middlewares []createMw, input *e.Soapi) error {
for _, middleware := range middlewares {
logData := pu.GetLogData(input, data)
logData := pu.GetLogData(input, nil)
pl.SetLogInfo(me.Event, logData, "started", middleware.Name)
if err := middleware.Func(input, data, me.Tx); err != nil {
if err := middleware.Func(input); err != nil {
return pu.HandleMiddlewareError(me.Event, string(me.MwType), middleware.Name, logData, err)
}
pl.SetLogInfo(me.Event, nil, "complete")
}
return nil
}
func (me *middlewareRunner) RunCreateLogMiddleware(middlewares []createLogMw, input *esync.SimxLogDto) error {
for _, middleware := range middlewares {
logData := pu.GetLogData(input, nil)
pl.SetLogInfo(me.Event, logData, "started", middleware.Name)
if err := middleware.Func(input); err != nil {
return pu.HandleMiddlewareError(me.Event, string(me.MwType), middleware.Name, logData, err)
}
@@ -68,13 +91,13 @@ func (me *middlewareRunner) RunReadDetailMiddleware(middlewares []readDetailMw,
return nil
}
func (me *middlewareRunner) RunUpdateMiddleware(middlewares []readDetailMw, input *e.ReadDetailDto, data *e.Soapi) error {
func (me *middlewareRunner) RunUpdateMiddleware(middlewares []updateMw, input *e.Soapi) error {
for _, middleware := range middlewares {
logData := pu.GetLogData(input, data)
logData := pu.GetLogData(input, nil)
pl.SetLogInfo(me.Event, logData, "started", middleware.Name)
if err := middleware.Func(input, data, me.Tx); err != nil {
if err := middleware.Func(input); err != nil {
return pu.HandleMiddlewareError(me.Event, string(me.MwType), middleware.Name, logData, err)
}
@@ -83,13 +106,13 @@ func (me *middlewareRunner) RunUpdateMiddleware(middlewares []readDetailMw, inpu
return nil
}
func (me *middlewareRunner) RunDeleteMiddleware(middlewares []readDetailMw, input *e.ReadDetailDto, data *e.Soapi) error {
func (me *middlewareRunner) RunDeleteMiddleware(middlewares []deleteMw, input *e.DeleteDto) error {
for _, middleware := range middlewares {
logData := pu.GetLogData(input, data)
logData := pu.GetLogData(input, nil)
pl.SetLogInfo(me.Event, logData, "started", middleware.Name)
if err := middleware.Func(input, data, me.Tx); err != nil {
if err := middleware.Func(input); err != nil {
return pu.HandleMiddlewareError(me.Event, string(me.MwType), middleware.Name, logData, err)
}
@@ -101,3 +124,10 @@ func (me *middlewareRunner) RunDeleteMiddleware(middlewares []readDetailMw, inpu
func (me *middlewareRunner) setMwType(mwType pu.MWType) {
me.MwType = mwType
}
func (me *middlewareRunner) ExecuteIfSyncOn(fn func() error) error {
if !me.SyncOn {
return nil
}
return fn()
}