diff --git a/app/db/models/job.py b/app/db/models/job.py new file mode 100644 index 0000000..5ed7da1 --- /dev/null +++ b/app/db/models/job.py @@ -0,0 +1,43 @@ +import uuid +from datetime import datetime +from typing import Any, Dict, Optional +from sqlalchemy import String, Integer, DateTime, JSON, func +from sqlalchemy.orm import Mapped, mapped_column +from app.db.base import Base + + +class Job(Base): + __tablename__ = "jobs" + + id: Mapped[str] = mapped_column( + String(36), + primary_key=True, + default=lambda: str(uuid.uuid4()), + index=True, + ) + filename: Mapped[str] = mapped_column(String(255), nullable=False) + status: Mapped[str] = mapped_column( + String(50), + default="pending", + index=True, + ) + row_count: Mapped[Optional[int]] = mapped_column(Integer, nullable=True) + created_at: Mapped[datetime] = mapped_column( + DateTime(timezone=True), + server_default=func.now(), + nullable=False, + ) + updated_at: Mapped[datetime] = mapped_column( + DateTime(timezone=True), + server_default=func.now(), + onupdate=func.now(), + nullable=False, + ) + summary: Mapped[Optional[Dict[str, Any]]] = mapped_column( + JSON, + nullable=True, + ) + results: Mapped[Optional[Dict[str, Any]]] = mapped_column( + JSON, + nullable=True, + )