heritage-api/mysql/role-mysql.go

69 lines
1.4 KiB
Go

package mysql
import "myschools.me/heritage/heritage-api/model"
func RolePermissionsList(roleID *string) ([]string, error) {
db, err := newDB()
if err != nil {
return nil, err
}
var codes []string
if err := db.Model(&model.Permission{}).Where("role_id = ?", *roleID).Pluck("code", &codes).Error; err != nil {
return nil, err
}
return codes, nil
}
func RoleHasPermission(roleID, permissionCode *string) (bool, error) {
db, err := newDB()
if err != nil {
return false, err
}
var count int64
if err := db.Model(&model.Permission{}).
Where("role_id = ? AND (code = ? OR code = ?)", *roleID, *permissionCode, "*").
Count(&count).Error; err != nil {
return false, err
}
return count > 0, nil
}
func RoleCount() (*int64, error) {
db, err := newDB()
if err != nil {
return nil, err
}
var count int64
if err := db.Model(&model.Role{}).Count(&count).Error; err != nil {
return nil, err
}
return &count, nil
}
func RoleCreate(obj *model.Role) (*model.Role, error) {
db, err := newDB()
if err != nil {
return nil, err
}
if err := db.Create(obj).Error; err != nil {
return nil, err
}
return obj, nil
}
func RoleByCode(code string) (*model.Role, bool, error) {
db, err := newDB()
if err != nil {
return nil, false, err
}
var r model.Role
if err := db.Where("code = ?", code).First(&r).Error; err != nil {
return nil, false, err
}
return &r, true, nil
}