from sqlalchemy import Column, Integer, String, ForeignKey, DateTime from sqlalchemy.dialects import postgresql from sqlalchemy.sql import func from typing import Any from . import Base from app.utils.utility import to_dict class User(Base): __tablename__ = "Users" userId = Column(Integer(), primary_key=True) firstName = Column(String(255)) lastName = Column(String(255)) email = Column(String(255)) password = Column(String(255)) phoneNumber = Column(String(255)) NMLS = Column(String(255)) lenderId = Column(Integer, ForeignKey("Users.userId")) isActive = Column(postgresql.BIT(), default="1") googleOauthId = Column(String) isOnboardingCompleted = Column(postgresql.BIT(), default="0") organisationNMLS = Column(String(255)) isOrganisation = Column(postgresql.BIT(), default="0") verificationCode = Column(Integer()) isVerified = Column(postgresql.BIT(), default="0") lastLoginTime = Column(DateTime(timezone=True), default=func.now()) role = Column(String(50)) stateName = Column(String) stateId = Column(Integer, ForeignKey("States.stateId")) cityName = Column(String) zipCode = Column(String) address = Column(String) mortgageBrokerName = Column(String) dateOfBirth = Column(String) company = Column(String) branch = Column(String) employeeTypeId = Column(Integer, ForeignKey("EmployeeTypes.employeeTypeId")) profilePicture = Column(String) createdAt = Column(DateTime(timezone=True), default=func.now()) updatedAt = Column(DateTime(timezone=True), default=func.now(), onupdate=func.now()) def dict(self) -> dict[str, Any]: return to_dict(self)