from typing import Optional from schemas.base import BaseSchema, OkMessageSchema from schemas.user import UserSchema # region Entities class UserDepartmentSectionSchema(BaseSchema): user: UserSchema is_chief: bool class DepartmentSectionBaseSchema(BaseSchema): name: str department_id: Optional[int] parent_department_section_id: Optional[int] class DepartmentSectionBriefSchema(DepartmentSectionBaseSchema): id: int class DepartmentSectionSchema(DepartmentSectionBriefSchema): users: list[UserDepartmentSectionSchema] = [] sections: list["DepartmentSectionSchema"] = [] class DepartmentBaseSchema(BaseSchema): name: str class DepartmentSchema(DepartmentBaseSchema): id: int sections: list[DepartmentSectionSchema] = [] # endregion # region Requests class CreateDepartmentRequest(BaseSchema): department: DepartmentBaseSchema class UpdateDepartmentRequest(BaseSchema): department: DepartmentSchema class CreateDepartmentSectionRequest(BaseSchema): section: DepartmentSectionBaseSchema class UpdateDepartmentSectionRequest(BaseSchema): section: DepartmentSectionSchema class AddUserRequest(BaseSchema): user_id: int section_id: int is_chief: bool class DeleteUserRequest(BaseSchema): user_id: int section_id: int # endregion # region Responses class GetDepartmentsResponse(BaseSchema): departments: list[DepartmentSchema] class CreateDepartmentResponse(OkMessageSchema): pass class UpdateDepartmentResponse(OkMessageSchema): pass class DeleteDepartmentResponse(OkMessageSchema): pass class GetDepartmentSectionsResponse(BaseSchema): department_sections: list[DepartmentSectionBriefSchema] class CreateDepartmentSectionResponse(OkMessageSchema): pass class UpdateDepartmentSectionResponse(OkMessageSchema): pass class DeleteDepartmentSectionResponse(OkMessageSchema): pass class GetAvailableUsersForDepartmentSectionResponse(BaseSchema): users: list[UserSchema] class AddUserResponse(OkMessageSchema): pass class DeleteUserResponse(OkMessageSchema): pass # endregion