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
 |