package common import ( "context" "github.com/gogf/gf/v2/database/gdb" "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). Cache(gdb.CacheOption{Duration: CacheTTL(), Name: table + "_GetOneByPk_" + gconv.String(pk)}). 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 }