import datetime from typing import Optional from schemas.base import OkMessageSchema, BaseSchema, PaginationInfoSchema from schemas.user import UserSchema # region Entities class ExpenseSchemaBase(BaseSchema): id: int name: str comment: str amount: float created_by_user: UserSchema spent_date: datetime.date class UpdateExpenseSchema(BaseSchema): id: Optional[int] = None name: str comment: Optional[str] = "" amount: float spent_date: datetime.date # endregion # region Requests class UpdateExpenseRequest(BaseSchema): expense: UpdateExpenseSchema # endregion # region Responses class GetAllExpensesResponse(BaseSchema): expenses: list[ExpenseSchemaBase] pagination_info: PaginationInfoSchema class UpdateExpenseResponse(OkMessageSchema): pass class DeleteExpenseResponse(OkMessageSchema): pass # endregion