92 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from typing import Optional
 | 
						|
 | 
						|
from schemas.attribute import AttributeSchema
 | 
						|
from schemas.base import BaseSchema, OkMessageSchema
 | 
						|
from schemas.card_tag import CardTagSchema
 | 
						|
 | 
						|
 | 
						|
# 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]
 | 
						|
    tags: list[CardTagSchema]
 | 
						|
 | 
						|
 | 
						|
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
 |