54 lines
1.3 KiB
Go
54 lines
1.3 KiB
Go
package common
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/gogf/gf/v2/frame/g"
|
|
"github.com/gogf/gf/v2/os/gtime"
|
|
"github.com/gogf/gf/v2/util/gconv"
|
|
)
|
|
|
|
func prepareInsertData(data any) map[string]any {
|
|
m := gconv.Map(data, gconv.MapOption{Tags: []string{"orm"}})
|
|
delete(m, "id")
|
|
m["created_at"] = gtime.Now().Format("Y-m-d H:i:s")
|
|
m["updated_at"] = gtime.Now().Format("Y-m-d H:i:s")
|
|
delete(m, "deleted_at")
|
|
return m
|
|
}
|
|
|
|
func InsertAndReturnId(ctx context.Context, table string, data any) (id int64, err error) {
|
|
m := prepareInsertData(data)
|
|
r, err := g.DB().Model(table).Ctx(ctx).Data(m).Insert()
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
if r == nil {
|
|
return 0, nil
|
|
}
|
|
return r.LastInsertId()
|
|
}
|
|
|
|
func GetOneByPk[T any](ctx context.Context, table string, pk int64) (res *T, err error) {
|
|
r, err := g.DB().Model(table).Ctx(ctx).
|
|
Where("id", pk).One()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if r == nil {
|
|
return nil, nil
|
|
}
|
|
err = r.Struct(&res)
|
|
return
|
|
}
|
|
|
|
func UpdateByPk(ctx context.Context, table string, pk int64, data any) error {
|
|
_, err := g.DB().Model(table).Ctx(ctx).Data(data).Where("id", pk).Update()
|
|
return err
|
|
}
|
|
|
|
func DeleteByPk(ctx context.Context, table string, pk int64) error {
|
|
_, err := g.DB().Model(table).Ctx(ctx).Unscoped().Where("id", pk).Delete()
|
|
return err
|
|
}
|