alist/internal/db/role.go

54 lines
1.4 KiB
Go

package db
import (
"github.com/alist-org/alist/v3/internal/model"
"github.com/pkg/errors"
)
func CreateRole(r *model.Role) error {
return errors.WithStack(db.Create(r).Error)
}
func UpdateRole(r *model.Role) error {
return errors.WithStack(db.Save(r).Error)
}
func GetRoles(pageIndex, pageSize int) (roles []model.Role, count int64, err error) {
roleDB := db.Model(&model.Role{})
if err := roleDB.Count(&count).Error; err != nil {
return nil, 0, errors.Wrapf(err, "failed get roles count")
}
if err := roleDB.Order(columnName("id")).Offset((pageIndex - 1) * pageSize).Limit(pageSize).Find(&roles).Error; err != nil {
return nil, 0, errors.Wrapf(err, "failed get find roles")
}
return roles, count, nil
}
func DeleteRoleById(id uint) error {
return errors.WithStack(db.Delete(&model.Role{}, id).Error)
}
func GetRoleById(id uint) (*model.Role, error) {
var r model.Role
if err := db.First(&r, id).Error; err != nil {
return nil, errors.Wrapf(err, "failed get role")
}
return &r, nil
}
func GetRoleByIds(ids []uint) ([]model.Role, error) {
var r []model.Role
if err := db.Where("id in (?)", ids).Find(&r).Error; err != nil {
return nil, errors.Wrapf(err, "failed get roles by ids: %v", ids)
}
return r, nil
}
func GetRoleByName(name string) (*model.Role, error) {
var r model.Role
if err := db.Where("name = ?", name).First(&r).Error; err != nil {
return nil, errors.Wrapf(err, "failed get role by name %v", name)
}
return &r, nil
}