87 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
import datetime
 | 
						|
from typing import Optional
 | 
						|
 | 
						|
from schemas.base import OkMessageSchema, BaseSchema, PaginationInfoSchema
 | 
						|
from schemas.user import UserSchema
 | 
						|
 | 
						|
 | 
						|
# region Entities
 | 
						|
 | 
						|
class BaseExpenseTagSchema(BaseSchema):
 | 
						|
    name: str
 | 
						|
 | 
						|
 | 
						|
class ExpenseTagSchema(BaseExpenseTagSchema):
 | 
						|
    id: int
 | 
						|
 | 
						|
 | 
						|
class ExpenseSchemaBase(BaseSchema):
 | 
						|
    id: int
 | 
						|
    name: str
 | 
						|
    comment: str
 | 
						|
    amount: float
 | 
						|
    created_by_user: UserSchema
 | 
						|
    spent_date: datetime.date
 | 
						|
    tags: list[ExpenseTagSchema]
 | 
						|
 | 
						|
 | 
						|
class UpdateExpenseSchema(BaseSchema):
 | 
						|
    id: Optional[int] = None
 | 
						|
    name: str
 | 
						|
    comment: Optional[str] = ""
 | 
						|
    amount: float
 | 
						|
    spent_date: datetime.date
 | 
						|
    tags: list[str] = []
 | 
						|
 | 
						|
 | 
						|
# endregion
 | 
						|
 | 
						|
# region Requests
 | 
						|
 | 
						|
 | 
						|
class UpdateExpenseRequest(BaseSchema):
 | 
						|
    expense: UpdateExpenseSchema
 | 
						|
 | 
						|
 | 
						|
class CreateExpenseTagRequest(BaseSchema):
 | 
						|
    tag: BaseExpenseTagSchema
 | 
						|
 | 
						|
 | 
						|
class UpdateExpenseTagRequest(BaseSchema):
 | 
						|
    tag: ExpenseTagSchema
 | 
						|
 | 
						|
 | 
						|
# endregion
 | 
						|
 | 
						|
# region Responses
 | 
						|
 | 
						|
class GetAllExpensesResponse(BaseSchema):
 | 
						|
    expenses: list[ExpenseSchemaBase]
 | 
						|
    pagination_info: PaginationInfoSchema
 | 
						|
 | 
						|
 | 
						|
class UpdateExpenseResponse(OkMessageSchema):
 | 
						|
    pass
 | 
						|
 | 
						|
 | 
						|
class DeleteExpenseResponse(OkMessageSchema):
 | 
						|
    pass
 | 
						|
 | 
						|
 | 
						|
class GetAllExpenseTagsResponse(BaseSchema):
 | 
						|
    tags: list[ExpenseTagSchema]
 | 
						|
 | 
						|
 | 
						|
class CreateExpenseTagResponse(OkMessageSchema):
 | 
						|
    pass
 | 
						|
 | 
						|
 | 
						|
class UpdateExpenseTagResponse(OkMessageSchema):
 | 
						|
    pass
 | 
						|
 | 
						|
 | 
						|
class DeleteExpenseTagResponse(OkMessageSchema):
 | 
						|
    pass
 | 
						|
 | 
						|
# endregion
 |