"""Database models for the wallet app.""" from datetime import datetime from sqlalchemy import Column, Integer, String, Float, DateTime, ForeignKey, Enum from sqlalchemy.orm import relationship from app.database import Base import enum class EntryType(str, enum.Enum): """Type of wallet entry.""" INCOME = "income" EXPENSE = "expense" class User(Base): """User model for authentication.""" __tablename__ = "users" id = Column(Integer, primary_key=True, index=True) username = Column(String, unique=True, index=True) email = Column(String, unique=True, index=True) hashed_password = Column(String) created_at = Column(DateTime, default=datetime.utcnow) # Relationships wallet_entries = relationship("WalletEntry", back_populates="user", cascade="all, delete-orphan") class WalletEntry(Base): """Wallet entry model for tracking income and expenses.""" __tablename__ = "wallet_entries" id = Column(Integer, primary_key=True, index=True) user_id = Column(Integer, ForeignKey("users.id"), index=True) amount = Column(Float) entry_type = Column(Enum(EntryType), index=True) description = Column(String) created_at = Column(DateTime, default=datetime.utcnow, index=True) updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) # Relationships user = relationship("User", back_populates="wallet_entries")