You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.3 KiB
59 lines
1.3 KiB
package persist |
|
|
|
import ( |
|
"sig-pub/pkg/zlog" |
|
|
|
"gorm.io/gorm" |
|
) |
|
|
|
// DB gorm关系型数据 |
|
type DB struct { |
|
db *gorm.DB |
|
} |
|
|
|
func NewDB(db *gorm.DB) *DB { |
|
return &DB{ |
|
db: db, |
|
} |
|
} |
|
|
|
func (m *DB) Init() (err error) { |
|
return |
|
} |
|
|
|
func (m *DB) Insert(data any) (err error) { |
|
return m.db.Create(data).Error |
|
} |
|
|
|
// sql查询数据 |
|
func (m *DB) Select(ret any, sql string, args ...any) (err error) { |
|
return m.db.Raw(sql, args...).Scan(ret).Error |
|
} |
|
|
|
// sql更新数据 |
|
func (m *DB) Update(sql string, args ...any) (rowsAffected int64, err error) { |
|
tx := m.db.Exec(sql, args...) |
|
rowsAffected, err = tx.RowsAffected, tx.Error |
|
return |
|
} |
|
|
|
// sql更新数据 |
|
func (m *DB) UpdateBy(data any) (rowsAffected int64, err error) { |
|
tx := m.db.Model(data).Updates(data) |
|
rowsAffected, err = tx.RowsAffected, tx.Error |
|
return |
|
} |
|
|
|
// AutoMigrateTables 自动对齐表结构,自动根据字段修改数据库表结构,只会加改不会删字段 |
|
func (m *DB) AutoMigrateTables(gormStructs ...any) (err error) { |
|
if len(gormStructs) == 0 { |
|
return |
|
} |
|
err = m.db.AutoMigrate(gormStructs...) |
|
if err != nil { |
|
zlog.Errorf("type auto migrate postgres table error: %v", err) |
|
return |
|
} |
|
// db.Set("gorm:table_options", "ENGINE=Distributed(cluster, default, hits)").AutoMigrate(&entity.TradeRecord{}) |
|
return |
|
}
|
|
|