1package db
2
3import (
4 "context"
5
6 "gorm.io/gorm"
7 "gorm.io/gorm/clause"
8)
9
10type DB struct {
11 cli *gorm.DB
12}
13
14func NewDB(cli *gorm.DB) *DB {
15 return &DB{
16 cli: cli,
17 }
18}
19
20func (db *DB) Create(ctx context.Context, value any, clauses []clause.Expression) *gorm.DB {
21 return db.cli.WithContext(ctx).Clauses(clauses...).Create(value)
22}
23
24func (db *DB) Save(ctx context.Context, value any, clauses []clause.Expression) *gorm.DB {
25 return db.cli.WithContext(ctx).Clauses(clauses...).Save(value)
26}
27
28func (db *DB) Exec(ctx context.Context, sql string, clauses []clause.Expression, values ...any) *gorm.DB {
29 return db.cli.WithContext(ctx).Clauses(clauses...).Exec(sql, values...)
30}
31
32func (db *DB) Raw(ctx context.Context, sql string, clauses []clause.Expression, values ...any) *gorm.DB {
33 return db.cli.WithContext(ctx).Clauses(clauses...).Raw(sql, values...)
34}
35
36func (db *DB) AutoMigrate(models ...any) error {
37 return db.cli.AutoMigrate(models...)
38}
39
40func (db *DB) Delete(ctx context.Context, value any, clauses []clause.Expression) *gorm.DB {
41 return db.cli.WithContext(ctx).Clauses(clauses...).Delete(value)
42}
43
44func (db *DB) First(ctx context.Context, dest any, conds ...any) *gorm.DB {
45 return db.cli.WithContext(ctx).First(dest, conds...)
46}
47
48func (db *DB) Begin(ctx context.Context) *gorm.DB {
49 return db.cli.WithContext(ctx).Begin()
50}
51
52func (db *DB) Client() *gorm.DB {
53 return db.cli
54}