90 lines
1.4 KiB
Python
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
|