# src/models.py from typing import List, Optional from datetime import date as DateType from decimal import Decimal from sqlmodel import SQLModel, Field, Relationship # --- INSTRUCTIONS --- # SQLModel classes should mirror the Pydantic models in src/schema.py # but with database-specific configurations (primary keys, foreign keys). class Invoice(SQLModel, table=True): __tablename__ = "invoices" # TODO: Define Primary Key 'id' (int, optional, default=None) # TODO: Add Data Fields # - receipt_number (str, indexed) # - date (DateType) # - total_amount (Decimal, max_digits=10, decimal_places=2) # - vendor (str) # - address (str) # - semantic_hash (str, unique, indexed) -> Critical for deduplication # TODO: Add Metadata Fields # - validation_status (str) # - validation_errors (str) -> Store as JSON string since we don't need to query inside it yet # - created_at (DateType) -> Default to today # TODO: Define relationship to LineItem (One-to-Many) # items: List["LineItem"] = Relationship(...) pass class LineItem(SQLModel, table=True): __tablename__ = "line_items" # TODO: Define Primary Key # TODO: Define Foreign Key 'invoice_id' linking to 'invoices.id' # TODO: Add Data Fields # - description (str) # - quantity (int) # - unit_price (Decimal) # - total (Decimal) # TODO: Define relationship back to Invoice # invoice: Optional[Invoice] = Relationship(...) pass