42 lines
1023 B
Go
42 lines
1023 B
Go
package entity
|
|
|
|
import "go.mongodb.org/mongo-driver/bson/primitive"
|
|
|
|
// UserRole 使用者角色實體 (MongoDB)
|
|
type UserRole struct {
|
|
ID primitive.ObjectID `bson:"_id,omitempty" json:"id"`
|
|
Brand string `bson:"brand" json:"brand"`
|
|
UID string `bson:"uid" json:"uid"`
|
|
RoleID string `bson:"role_id" json:"role_id"`
|
|
Status Status `bson:"status" json:"status"`
|
|
|
|
TimeStamp `bson:",inline"`
|
|
}
|
|
|
|
// CollectionName 集合名稱
|
|
func (UserRole) CollectionName() string {
|
|
return "user_role"
|
|
}
|
|
|
|
// IsActive 是否啟用
|
|
func (ur *UserRole) IsActive() bool {
|
|
return ur.Status.IsActive()
|
|
}
|
|
|
|
// Validate 驗證資料
|
|
func (ur *UserRole) Validate() error {
|
|
if ur.UID == "" {
|
|
return ErrInvalidData("user uid is required")
|
|
}
|
|
if ur.RoleID == "" {
|
|
return ErrInvalidData("role_id is required")
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// RoleUserCount 角色使用者數量統計
|
|
type RoleUserCount struct {
|
|
RoleID string `bson:"_id" json:"role_id"`
|
|
Count int `bson:"count" json:"count"`
|
|
}
|