// Package dao ... // // Author : go_developer@163.com<白茶清欢> // // Date : 8:04 下午 2021/8/8 package dao import "gorm.io/gorm" // Option 扩展选项 // // Author : go_developer@163.com<白茶清欢> // // Date : 8:05 下午 2021/8/8 type Option struct { DBTable string `json:"db_table"` // 数据表 Limit int `json:"limit"` // 限制数量 Offset int `json:"offset"` // 偏移量 } type base struct { } // CreateNewData 创建新的数据 // // Author : go_developer@163.com<白茶清欢> // // Date : 8:06 下午 2021/8/8 func (b *base) CreateNewData(dbInstance *gorm.DB, data interface{}, o *Option) error { if nil != o { if o.Limit > 0 { dbInstance.Limit(o.Limit) } if o.Offset > 0 { dbInstance.Offset(o.Offset) } } return dbInstance.Create(data).Error } // UpdateData 更新数据 // // Author : go_developer@163.com<白茶清欢> // // Date : 8:12 下午 2021/8/8 func (b *base) UpdateData(dbInstance *gorm.DB, data interface{}, condition interface{}, o *Option) error { if nil != o { if o.Limit > 0 { dbInstance.Limit(o.Limit) } if o.Offset > 0 { dbInstance.Offset(o.Offset) } } return dbInstance.Where(condition).Updates(data).Error } // Select 查询数据列表 // // Author : go_developer@163.com<白茶清欢> // // Date : 8:14 下午 2021/8/8 func (b *base) Select(dbInstance *gorm.DB, condition interface{}, result interface{}, o *Option) error { if nil != o { if o.Limit > 0 { dbInstance.Limit(o.Limit) } if o.Offset > 0 { dbInstance.Offset(o.Offset) } } return dbInstance.Find(result, condition).Error } // Detail 查询详情 // // Author : go_developer@163.com<白茶清欢> // // Date : 8:25 下午 2021/8/8 func (b *base) Detail(dbInstance *gorm.DB, condition interface{}, result interface{}, o *Option) error { if nil != o { if len(o.DBTable) > 0 { dbInstance.Table(o.DBTable) } if o.Limit > 0 { dbInstance.Limit(o.Limit) } if o.Offset > 0 { dbInstance.Offset(o.Offset) } } return dbInstance.First(result, condition).Error } // Delete 删除数据 // // Author : go_developer@163.com<白茶清欢> // // Date : 12:24 下午 2021/12/1 func (b *base) Delete(dbInstance *gorm.DB, table string, primaryID int64, model interface{}) error { return dbInstance.Table(table).Where("id = ?", primaryID).Delete(model).Error } // Count 查询数量 // // Author : go_developer@163.com<白茶清欢> // // Date : 8:25 下午 2021/8/8 func (b *base) Count(dbInstance *gorm.DB, condition interface{}, o *Option) (int64, error) { if nil != o { if len(o.DBTable) > 0 { dbInstance.Table(o.DBTable) } if o.Limit > 0 { dbInstance.Limit(o.Limit) } if o.Offset > 0 { dbInstance.Offset(o.Offset) } } var cnt int64 return cnt, dbInstance.Where(condition).Count(&cnt).Error } // Begin 开启事务 // // Author : go_developer@163.com<白茶清欢> // // Date : 3:09 下午 2021/8/9 func (b *base) Begin() *gorm.DB { return DBInstance.Begin() } // Commit 提交事务 // // Author : go_developer@163.com<白茶清欢> // // Date : 3:10 下午 2021/8/9 func (b *base) Commit(db *gorm.DB) error { return db.Commit().Error } // Rollback 回滚 // // Author : go_developer@163.com<白茶清欢> // // Date : 3:12 下午 2021/8/9 func (b *base) Rollback(db *gorm.DB) error { return db.Rollback().Error }