package persist import ( "sig-pub/pkg/zlog" "gorm.io/gorm" ) // RDB gorm关系型数据 type RDB struct { db *gorm.DB } func NewRDB(db *gorm.DB) *RDB { return &RDB{ db: db, } } func (m *RDB) Init() (err error) { return } func (m *RDB) Insert(data any) (err error) { return m.db.Create(data).Error } // sql查询数据 func (m *RDB) Select(ret any, sql string, args ...any) (err error) { return m.db.Raw(sql, args...).Scan(ret).Error } // sql更新数据 func (m *RDB) 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 *RDB) UpdateBy(data any) (rowsAffected int64, err error) { tx := m.db.Model(data).Updates(data) rowsAffected, err = tx.RowsAffected, tx.Error return } // AutoMigrateTables 自动对齐表结构,自动根据字段修改数据库表结构,只会加改不会删字段 func (m *RDB) 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 }