PawTrace / backend /app /models /dataset.py
Elliott Duke
HomingPet: lost-dog reunification (FastAPI + React) with Render deploy
de1e3fc
Raw
History Blame Contribute Delete
1.25 kB
from __future__ import annotations
from datetime import datetime, timezone
from sqlalchemy import DateTime, Enum as SAEnum, Integer, String, Text, func
from sqlalchemy.orm import Mapped, mapped_column
from .base import Base, DatasetType
class Dataset(Base):
"""A batch-loaded collection of dogs/users (test fixtures or real imports).
Existing tables carry a nullable ``dataset_id`` back to here so a whole batch can be listed,
inspected, and purged as a unit. Cases/matches are linked transitively through the dogs/users
and are removed by the transactional purge endpoint (see api/datasets.py).
"""
__tablename__ = "datasets"
id: Mapped[int] = mapped_column(primary_key=True)
name: Mapped[str] = mapped_column(String(160))
type: Mapped[DatasetType] = mapped_column(SAEnum(DatasetType, native_enum=False))
description: Mapped[str | None] = mapped_column(Text, nullable=True)
source_path: Mapped[str | None] = mapped_column(String(512), nullable=True)
dog_count: Mapped[int] = mapped_column(Integer, default=0)
creation_time: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
default=lambda: datetime.now(timezone.utc),
server_default=func.now(),
)