fastapi_app/app/schemas.py
2025-12-10 22:59:23 +00:00

75 lines
1.8 KiB
Python

from pydantic import BaseModel
from datetime import date
from typing import Optional, List
# -----------------------
# Customer Schemas
# -----------------------
class CustomerBase(BaseModel):
full_name: str
email: str
phone: Optional[str] = None
date_of_birth: Optional[date] = None
age: Optional[int] = None
gender: Optional[str] = None
street_address: Optional[str] = None
city: Optional[str] = None
state: Optional[str] = None
zip_code: Optional[str] = None
home_branch_id: Optional[int] = None
customer_since: Optional[date] = None
employment_status: Optional[str] = None
annual_income: Optional[float] = None
credit_score: Optional[int] = None
preferred_contact_method: Optional[str] = None
class Customer(CustomerBase):
customer_id: str
class Config:
orm_mode = True
# -----------------------
# Account Schemas
# -----------------------
class AccountBase(BaseModel):
customer_id: str
account_type: str
open_date: date
balance: float
branch_id: Optional[int] = None
class Account(AccountBase):
account_id: str
account_number: str
class Config:
orm_mode = True
# -----------------------
# Transaction Schemas
# -----------------------
class TransactionBase(BaseModel):
account_id: str
branch_id: Optional[int] = None
transaction_type: str
amount: float
date: date
balance_after: float
vendor: Optional[str] = None
transaction_location: Optional[str] = None
class Transaction(TransactionBase):
transaction_id: str
class Config:
orm_mode = True
# -----------------------
# Nested Schemas
# -----------------------
class AccountWithTransactions(Account):
transactions: Optional[List[Transaction]] = []
class CustomerWithAccounts(Customer):
accounts: Optional[List[AccountWithTransactions]] = []