from typing import Any from sqlalchemy import Column, ForeignKey, Integer, String from sqlalchemy.dialects.postgresql import BIT, TIMESTAMP from sqlalchemy.orm import declarative_base from app.models.base import Base from app.utils.utility import to_dict class UserProfile(Base): __tablename__ = "UserProfiles" userProfileId = Column(Integer, primary_key=True) firstName = Column(String) middleName = Column(String) lastName = Column(String) phoneNumber = Column(String) email = Column(String) citizenshipStatusId = Column(Integer, ForeignKey("CitizenshipStatus.citizenshipStatusId")) DOB = Column(TIMESTAMP) SSN = Column(String) ownershipId = Column(Integer, ForeignKey("Ownerships.ownershipId")) currentAddress = Column(String) suitNo = Column(String) stateId = Column(Integer) cityId = Column(Integer) stateName = Column(String) stateId = Column(Integer, ForeignKey("States.stateId")) cityName = Column(String) zipCode = Column(String) rent = Column(Integer) yearsLiving = Column(Integer) monthsLiving = Column(Integer) presentAddressLessThanTwoYears = Column(BIT) previousAddress = Column(String) previousCityName = Column(String) previousStateName = Column(String) previousStateId = Column(Integer, ForeignKey("States.stateId")) previousZipCode = Column(String) maritalStatusId = Column(Integer, ForeignKey("MaritalStatus.maritalStatusId")) applicationId = Column(Integer, ForeignKey("Applications.applicationId"), unique=True) userId = Column(Integer, ForeignKey("Users.userId")) isApproval = Column(BIT, nullable=True) isCompleted = Column(BIT, nullable=True) def dict(self) -> dict[str, Any]: return to_dict(self)