Files
Fulfillment-Backend/schemas/project.py

90 lines
1.4 KiB
Python

from typing import Optional
from schemas.attribute import AttributeSchema
from schemas.base import BaseSchema, OkMessageSchema
# region Entities
class BaseProjectSchema(BaseSchema):
name: str
class ProjectGeneralInfoSchema(BaseProjectSchema):
id: int
class ModuleSchema(BaseSchema):
id: int
key: str
label: str
icon_name: Optional[str] = None
is_deleted: bool
class ProjectSchema(ProjectGeneralInfoSchema):
attributes: list[AttributeSchema]
modules: list[ModuleSchema]
class FullProjectSchema(ProjectSchema):
boards_count: int
# endregion
# region Requests
class CreateProjectRequest(BaseSchema):
project: BaseProjectSchema
class UpdateProjectRequest(BaseSchema):
project: ProjectGeneralInfoSchema
class UpdateModulesRequest(BaseSchema):
project_id: int
module_ids: list[int]
class UpdateAttributesRequest(BaseSchema):
project_id: int
attribute_ids: list[int]
# endregion
# region Responses
class GetProjectsResponse(BaseSchema):
projects: list[FullProjectSchema]
class CreateProjectResponse(OkMessageSchema):
pass
class UpdateProjectResponse(OkMessageSchema):
pass
class DeleteProjectResponse(OkMessageSchema):
pass
class GetAllModulesResponse(BaseSchema):
modules: list[ModuleSchema]
class UpdateModulesResponse(OkMessageSchema):
pass
class UpdateAttributesResponse(OkMessageSchema):
pass
# endregion