feat: attributes in cards and projects

This commit is contained in:
2025-02-27 18:34:38 +04:00
parent c6c006d45b
commit a2c9fd8e3b
16 changed files with 391 additions and 27 deletions

View File

@@ -4,7 +4,7 @@ from typing import Optional
from pydantic import field_validator
from schemas.base import BaseSchema
from schemas.base import BaseSchema, OkMessageSchema
# region Entities
@@ -16,17 +16,25 @@ class AttributeTypeSchema(BaseSchema):
is_deleted: bool
class AttributeSchema(BaseSchema):
id: int
class BaseAttributeSchema(BaseSchema):
label: str
name: str
is_applicable_to_group: bool
is_nullable: bool
default_value: Optional[bool | int | float | str | date | datetime]
type_id: int
description: str
class AttributeSchema(BaseAttributeSchema):
id: int
type: AttributeTypeSchema
is_deleted: bool
@field_validator("default_value", mode="before")
def validate_default_value(cls, value: Optional[bytes]):
if not isinstance(value, bytes):
return value
return pickle.loads(value) if value else None
@@ -41,3 +49,37 @@ class CardAttributeSchema(BaseSchema):
# endregion
# region Requests
class CreateAttributeRequest(BaseSchema):
attribute: BaseAttributeSchema
class UpdateAttributeRequest(BaseSchema):
attribute: AttributeSchema
# endregion
# region Responses
class GetAttributesResponse(BaseSchema):
attributes: list[AttributeSchema]
class GetAttributeTypesResponse(BaseSchema):
types: list[AttributeTypeSchema]
class CreateAttributeResponse(OkMessageSchema):
pass
class UpdateAttributeResponse(OkMessageSchema):
pass
class DeleteAttributeResponse(OkMessageSchema):
pass
# endregion