Files

44 lines
1.4 KiB
Python
Raw Permalink Normal View History

"""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")