backend / app /schema /index.py
praneethys's picture
fix income statement endpoints (#16)
4761dd9 verified
Raw
History Blame Contribute Delete
1.65 kB
from enum import Enum
from datetime import datetime
from typing import Dict, List
from typing_extensions import TypedDict
from app.schema.base import BaseModel, PydanticBaseModel
class TransactionType(str, Enum):
INCOME = "income"
EXPENSE = "expense"
class UserCreate(PydanticBaseModel):
name: str
email: str
hashed_password: str
class UserUpdate(PydanticBaseModel):
name: str
email: str
hashed_password: str
class UserResponse(PydanticBaseModel):
id: int
name: str
email: str
is_deleted: bool
class User(BaseModel):
name: str
email: str
hashed_password: str
is_deleted: bool = False
transactions: "List[Transaction]" = []
class TransactionResponse(PydanticBaseModel):
transaction_date: datetime
category: str
name_description: str
amount: float
type: TransactionType
class TransactionCreate(TransactionResponse):
user_id: int
class Transaction(TransactionResponse):
user: User
class FileUploadCreate(PydanticBaseModel):
source: str
date: datetime
category: str
name_description: str
amount: float
type: str
class IncomeStatementCreateRequest(PydanticBaseModel):
user_id: int
date_from: datetime
date_to: datetime
class IncomeStatementDetail(TypedDict):
total: float
category_totals: List[Dict[str, str | float]]
class IncomeStatementLLMResponse(PydanticBaseModel):
income: IncomeStatementDetail
expenses: IncomeStatementDetail
class IncomeStatement(IncomeStatementCreateRequest, IncomeStatementLLMResponse):
pass
class IncomeStatementResponse(IncomeStatement):
id: int