package models import ( "code.gitea.io/gitea/modules/timeutil" "fmt" ) type RoleType string const ( TechProgramAdmin RoleType = "TechProgramAdmin" ) type Role struct { Type RoleType Name string Description string } type UserRole struct { ID int64 `xorm:"pk autoincr"` RoleType RoleType UserId int64 `xorm:"INDEX"` CreatedUnix timeutil.TimeStamp `xorm:"INDEX created"` } func NewUserRole(r UserRole) (int64, error) { return x.Insert(&r) } func GetUserRoleByUserAndRole(userId int64, roleType RoleType) (*UserRole, error) { r := &UserRole{} has, err := x.Where("role_type = ? and user_id = ?", roleType, userId).Get(r) if err != nil { return nil, err } else if !has { return nil, ErrRecordNotExist{} } return r, nil } func GetRoleByCode(code string) (*Role, error) { r := &Role{} has, err := x.Where("code = ?", code).Get(r) if err != nil { return nil, err } else if !has { return nil, ErrRecordNotExist{} } return r, nil } type ErrRoleNotExists struct { } func IsErrRoleNotExists(err error) bool { _, ok := err.(ErrRoleNotExists) return ok } func (err ErrRoleNotExists) Error() string { return fmt.Sprintf("role is not exists") } type AddRoleReq struct { UserName string `json:"user_name" binding:"Required"` RoleType RoleType `json:"role_type" binding:"Required"` }