Files
workspace/code/allapp/allapp-go-v3/internal/handle/data_save.go
T
2026-04-17 17:25:15 +08:00

59 lines
1.1 KiB
Go

package handle
import (
"allapp-go/internal/errors"
"allapp-go/internal/httpx"
"allapp-go/internal/types"
"allapp-go/pkg/db"
"github.com/gofiber/fiber/v3"
)
func SaveData(c fiber.Ctx) error {
var req []types.SaveDataReq
if err := httpx.BindAndValidate(c, &req); err != nil {
return errors.WithStack(err)
}
if len(req) == 0 {
return httpx.OK(c, nil)
}
ctx := c.Context()
dbClient := db.New()
err := dbClient.WithTx(ctx, func(tx *db.Client) error {
for _, dataReq := range req {
tableName := dataReq.TableName
keyField := dataReq.KeyField
for _, insert := range dataReq.Inserts {
if err := tx.Insert(ctx, tableName, keyField, insert); err != nil {
return err
}
}
for _, update := range dataReq.Updates {
if err := tx.Update(ctx, tableName, keyField, update); err != nil {
return err
}
}
for _, del := range dataReq.Deletes {
if err := tx.Delete(ctx, tableName, keyField, del); err != nil {
return err
}
}
}
return nil
})
if err != nil {
return errors.WithStack(err)
}
return httpx.OK(c, nil)
}