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

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
}