package entity

import (
	"backend/pkg/permission/domain/permission"

	"go.mongodb.org/mongo-driver/v2/bson"
)

// Role 角色實體 (MongoDB)
type Role struct {
	ID                   bson.ObjectID          `bson:"_id,omitempty" json:"id"`
	ClientID             int                    `bson:"client_id" json:"client_id"`
	UID                  string                 `bson:"uid" json:"uid"`
	Name                 string                 `bson:"name" json:"name"`
	Status               permission.RecordState `bson:"status" json:"status"`
	Permissions          permission.Permissions `bson:"-" json:"permissions,omitempty"` // 關聯權限 (不存資料庫)
	permission.TimeStamp `bson:",inline"`
}

// CollectionName 集合名稱
func (r *Role) CollectionName() string {
	return "role"
}

//// IsActive 是否啟用
//func (r *Role) IsActive() bool {
//	return r.Status.IsActive()
//}
//
//// IsAdmin 是否為管理員角色
//func (r *Role) IsAdmin(adminUID string) bool {
//	return r.UID == adminUID
//}
//
//// Validate 驗證角色資料
//func (r *Role) Validate() error {
//	if r.UID == "" {
//		return ErrInvalidData("role uid is required")
//	}
//	if r.Name == "" {
//		return ErrInvalidData("role name is required")
//	}
//	if r.ClientID <= 0 {
//		return ErrInvalidData("role client_id must be positive")
//	}
//	return nil
//}
//
//// ErrInvalidData 無效資料錯誤
//func ErrInvalidData(msg string) error {
//	return &ValidationError{Message: msg}
//}
//
//// ValidationError 驗證錯誤
//type ValidationError struct {
//	Message string
//}
//
//func (e *ValidationError) Error() string {
//	return e.Message
//}
