zhangkun9038@dingtalk.com 375b305ab4 aliyun-deepseek-r1
2025-02-20 11:29:57 +08:00

54 lines
1.1 KiB
Go

package repositories
import (
"gitea.zjmud.com/phyer/rbac/models"
"gorm.io/gorm"
)
// BaseRepository 提供基础CRUD操作
type BaseRepository struct {
db *gorm.DB
}
func NewBaseRepository(db *gorm.DB) *BaseRepository {
return &BaseRepository{db: db}
}
// 事务支持
func (r *BaseRepository) Begin() *gorm.DB {
return r.db.Begin()
}
func (r *BaseRepository) Commit(tx *gorm.DB) error {
return tx.Commit().Error
}
func (r *BaseRepository) Rollback(tx *gorm.DB) error {
return tx.Rollback().Error
}
// 基础CRUD操作
func (r *BaseRepository) Create(model interface{}) error {
return r.db.Create(model).Error
}
func (r *BaseRepository) Update(model interface{}) error {
return r.db.Save(model).Error
}
func (r *BaseRepository) Delete(model interface{}) error {
return r.db.Delete(model).Error
}
func (r *BaseRepository) FindByID(model interface{}, id uint) error {
return r.db.First(model, id).Error
}
func (r *BaseRepository) FindAll(models interface{}, preloads ...string) error {
tx := r.db
for _, preload := range preloads {
tx = tx.Preload(preload)
}
return tx.Find(models).Error
}