45 lines
1.2 KiB
Python
45 lines
1.2 KiB
Python
from pydantic import BaseModel
|
|
from datetime import date
|
|
from typing import Optional
|
|
|
|
# -----------------------
|
|
# 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 # now a string
|
|
class Config:
|
|
orm_mode = True
|
|
|
|
# -----------------------
|
|
# Account Schemas
|
|
# -----------------------
|
|
class AccountBase(BaseModel):
|
|
customer_id: str # now a string
|
|
account_type: str
|
|
open_date: date
|
|
balance: float
|
|
branch_id: Optional[int] = None
|
|
|
|
class Account(AccountBase):
|
|
account_id: str # now a string
|
|
account_number: str
|
|
class Config:
|
|
orm_mode = True
|