Files
Fulfillment-Backend/schemas/department.py

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