pre-dev: update flow for lib vs case

This commit is contained in:
2025-08-11 11:46:32 +07:00
parent ee9b4a9035
commit ae524c8c47
3 changed files with 31 additions and 24 deletions
@@ -14,7 +14,7 @@ func ModifInput(input *e.Createdto, data *e.Single, tx *gorm.DB) error {
// a sampel of utilizing transaction
func CheckData(input *e.Createdto, data *e.Single, tx *gorm.DB) error {
tx.Where("name = ?", input.Name)
tx.Where("Name = ?", input.Name)
input.Name = "Prefix_" + input.Name
return nil
}
@@ -7,6 +7,7 @@ package crud
import (
dg "github.com/karincake/apem/db-gorm-pg"
d "github.com/karincake/dodol"
"gorm.io/gorm"
e "simrs-vx/internal/domain/main-entities/single"
)
@@ -14,10 +15,25 @@ import (
const source = "crud"
func Create(input e.Createdto) (*d.Data, error) {
result, err := CreateData(input)
if err != nil {
return nil, err
}
err := dg.I.Transaction(func(tx *gorm.DB) error {
for i := range createPreMw {
if err := createPreMw[i](&input, &data, dg.I); err != nil {
return nil
}
}
if err := dg.I.Create(&data).Error; err != nil {
return nil
}
for i := range createPostMw {
if err := createPostMw[i](&input, &data, dg.I); err != nil {
return nil
}
}
return nil
})
return &d.Data{
Meta: d.II{
@@ -7,28 +7,19 @@ import (
"gorm.io/gorm"
)
func CreateData(input e.Createdto) (*e.Single, error) {
func CreateData(input e.Createdto, tx ...*gorm.DB) (*e.Single, error) {
data := e.Single{}
err := dg.I.Transaction(func(tx *gorm.DB) error {
for i := range createPreMw {
if err := createPreMw[i](&input, &data, dg.I); err != nil {
return nil
}
}
var db *gorm.DB
if tx != nil {
db = tx
} else {
db = dg.I
}
if err := dg.I.Create(&data).Error; err != nil {
return nil
}
for i := range createPostMw {
if err := createPostMw[i](&input, &data, dg.I); err != nil {
return nil
}
}
return nil
})
if err := dg.I.Create(&data).Error; err != nil {
return nil, err
}
return &data, err
}