USAMA BHATTI
Feat: Added Visual Search, API Key Auth, and Docker Optimization
ba2fc46
# backend/src/models/ingestion.py
from sqlalchemy import Column, Integer, String, Text, DateTime, Enum, JSON # <--- JSON import karein
from sqlalchemy.sql import func
import enum
from backend.src.db.base import Base
class JobStatus(str, enum.Enum):
PENDING = "pending"
PROCESSING = "processing"
COMPLETED = "completed"
FAILED = "failed"
class IngestionType(str, enum.Enum):
URL = "url"
ZIP = "zip"
FILE = "file" # (Future use ke liye)
class IngestionJob(Base):
__tablename__ = "ingestion_jobs"
id = Column(Integer, primary_key=True, index=True)
session_id = Column(String, index=True)
# --- NEW COLUMNS ---
ingestion_type = Column(String, default=IngestionType.URL) # Taake pata chale ye URL hai ya Zip
source_name = Column(String, nullable=False) # Ye URL ya Zip file ka naam hoga
status = Column(String, default=JobStatus.PENDING)
# Progress Tracking
items_processed = Column(Integer, default=0)
total_items = Column(Integer, default=0)
# Detailed Logging
details = Column(JSON, default=[]) # <--- Har file ka result yahan aayega
error_message = Column(Text, nullable=True)
created_at = Column(DateTime(timezone=True), server_default=func.now())
updated_at = Column(DateTime(timezone=True), onupdate=func.now())
# 'url', 'crawl_type' waghaira columns hata diye taake table generic rahe