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) }