117 lines
2.1 KiB
Python
117 lines
2.1 KiB
Python
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
|