pre-dev: update flow for lib vs case
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user