from datetime import datetime from typing import Optional, List from ..base_doc import BaseDoc class PermissionDoc(BaseDoc): permission_name: str permission_key: str description: Optional[str] = None # Description of the permission, optional created_at: datetime = datetime.now() # Creation timestamp, auto-generated updated_at: datetime = datetime.now() # Last update timestamp, auto-updated is_default: bool = False class Settings: # Default collections created by Freeleaps for tenant databases use '_' prefix # to prevent naming conflicts with tenant-created collections name = "_permission" indexes = [ "permission_key" ] class RoleDoc(BaseDoc): role_key: str role_name: str role_description: Optional[str] = None permission_ids: list[str] role_level: int revision_id: Optional[str] = None # Revision ID for version control created_at: datetime = datetime.now() # Creation timestamp, auto-generated updated_at: datetime = datetime.now() # Last update timestamp, auto-updated is_default: bool = False class Settings: # Default collections created by Freeleaps for tenant databases use '_' prefix # to prevent naming conflicts with tenant-created collections name = "_role" indexes = [ "role_level" ] class UserRoleDoc(BaseDoc): """User role doc""" user_id: str role_ids: Optional[List[str]] class Settings: # Default collections created by Freeleaps for tenant databases use '_' prefix # to prevent naming conflicts with tenant-created collections name = "_user_role" indexes = [ "user_id" ]