54 lines
1.1 KiB
Go
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
|
|
}
|