feat: attributes in cards and projects
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user