98 lines
1.7 KiB
Python
98 lines
1.7 KiB
Python
import datetime
|
|
from typing import Optional
|
|
|
|
from schemas.base import OkMessageSchema, BaseSchema, PaginationInfoSchema
|
|
from schemas.user import UserSchema
|
|
|
|
|
|
# region Entities
|
|
|
|
class BaseTransactionTagSchema(BaseSchema):
|
|
name: str
|
|
is_income: bool
|
|
|
|
|
|
class TransactionTagSchema(BaseTransactionTagSchema):
|
|
id: int
|
|
|
|
|
|
class TransactionSchemaBase(BaseSchema):
|
|
id: int
|
|
name: str
|
|
comment: str
|
|
amount: float
|
|
created_by_user: UserSchema
|
|
spent_date: datetime.date
|
|
is_income: bool
|
|
tags: list[TransactionTagSchema]
|
|
|
|
|
|
class UpdateTransactionSchema(BaseSchema):
|
|
id: Optional[int] = None
|
|
name: str
|
|
comment: Optional[str] = ""
|
|
amount: float
|
|
spent_date: datetime.date
|
|
is_income: bool
|
|
tags: list[str] = []
|
|
|
|
|
|
# endregion
|
|
|
|
# region Requests
|
|
|
|
|
|
class GetAllTransactionsRequest(BaseSchema):
|
|
is_income: bool
|
|
|
|
|
|
class UpdateTransactionRequest(BaseSchema):
|
|
transaction: UpdateTransactionSchema
|
|
|
|
|
|
class CreateTransactionTagRequest(BaseSchema):
|
|
tag: BaseTransactionTagSchema
|
|
|
|
|
|
class UpdateTransactionTagRequest(BaseSchema):
|
|
tag: TransactionTagSchema
|
|
|
|
|
|
# endregion
|
|
|
|
# region Responses
|
|
|
|
class GetAllTransactionsResponse(BaseSchema):
|
|
transactions: list[TransactionSchemaBase]
|
|
pagination_info: PaginationInfoSchema
|
|
|
|
|
|
class UpdateTransactionResponse(OkMessageSchema):
|
|
pass
|
|
|
|
|
|
class DeleteTransactionResponse(OkMessageSchema):
|
|
pass
|
|
|
|
|
|
class GetTransactionTagsResponse(BaseSchema):
|
|
tags: list[TransactionTagSchema]
|
|
|
|
|
|
class GetAllTransactionTagsResponse(BaseSchema):
|
|
tags: list[TransactionTagSchema]
|
|
|
|
|
|
class CreateTransactionTagResponse(OkMessageSchema):
|
|
pass
|
|
|
|
|
|
class UpdateTransactionTagResponse(OkMessageSchema):
|
|
pass
|
|
|
|
|
|
class DeleteTransactionTagResponse(OkMessageSchema):
|
|
pass
|
|
|
|
# endregion
|