| from pydantic import BaseModel | |
| from typing import List, Optional | |
| from enum import Enum | |
| class UserRoleFilter(str, Enum): | |
| admin = "admin" | |
| recruiter = "recruiter" | |
| candidate = "candidate" | |
| class ModerationStatusEnum(str, Enum): | |
| pending = "pending" | |
| approved = "approved" | |
| rejected = "rejected" | |
| # ββ User admin schemas ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| class AdminUserResponse(BaseModel): | |
| id: int | |
| email: str | |
| full_name: str | |
| role: str | |
| is_active: bool | |
| created_at: str | |
| class Config: | |
| from_attributes = True | |
| class PaginatedUsersResponse(BaseModel): | |
| total: int | |
| items: List[AdminUserResponse] | |
| class UserStatusUpdate(BaseModel): | |
| is_active: bool | |
| # ββ Job admin schemas βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| class AdminJobResponse(BaseModel): | |
| id: int | |
| title: str | |
| description: Optional[str] | |
| moderation_status: str | |
| recruiter_id: int | |
| recruiter_email: Optional[str] | |
| created_at: str | |
| class Config: | |
| from_attributes = True | |
| class PaginatedJobsResponse(BaseModel): | |
| total: int | |
| items: List[AdminJobResponse] | |
| class JobModerationUpdate(BaseModel): | |
| moderation_status: ModerationStatusEnum | |
| # ββ Stats schema ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| class AdminStatsResponse(BaseModel): | |
| total_candidates: int | |
| total_recruiters: int | |
| total_active_jobs: int | |
| total_matchings: int | |