de06fd1286
- Rename upload_to_s3.py to process_document.py to better reflect its purpose - Update all import statements across the codebase to use new module name - Remove S3-specific code and references - Keep the core document processing logic intact - Update docstrings and comments to reflect new functionality This change is part of removing AWS S3 dependencies and simplifying the document processing pipeline.
50 lines
1.8 KiB
Python
50 lines
1.8 KiB
Python
# app/models.py
|
|
#!/usr/bin/env python3
|
|
|
|
from sqlalchemy import Column, String, Integer, DateTime, func, ForeignKey
|
|
from sqlalchemy.ext.declarative import declarative_base
|
|
from app.database import Base
|
|
|
|
class DocumentMetadata(Base):
|
|
__tablename__ = "documents"
|
|
|
|
id = Column(Integer, primary_key=True, index=True)
|
|
filename = Column(String, unique=True, index=True)
|
|
sender = Column(String)
|
|
recipient = Column(String)
|
|
tags = Column(String)
|
|
summary = Column(String)
|
|
|
|
class FileRecord(Base):
|
|
__tablename__ = "files"
|
|
|
|
id = Column(Integer, primary_key=True, index=True)
|
|
|
|
# Hash of the file content (e.g. SHA-256)
|
|
filehash = Column(String, unique=True, index=True, nullable=False)
|
|
|
|
# The name of the file as it was originally uploaded (if known)
|
|
original_filename = Column(String)
|
|
|
|
# The name/path we store on disk (e.g. /workdir/tmp/<uuid>.pdf)
|
|
local_filename = Column(String, nullable=False)
|
|
|
|
# Size of the file in bytes
|
|
file_size = Column(Integer, nullable=False)
|
|
|
|
# MIME type or extension (optional)
|
|
mime_type = Column(String)
|
|
|
|
# Timestamp when we inserted this record
|
|
created_at = Column(DateTime(timezone=True), server_default=func.now())
|
|
|
|
class ProcessingLog(Base):
|
|
__tablename__ = "processing_logs"
|
|
id = Column(Integer, primary_key=True, index=True)
|
|
file_id = Column(Integer, ForeignKey("files.id"), nullable=True) # Optional file association
|
|
task_id = Column(String, index=True) # Celery task ID
|
|
step_name = Column(String) # e.g., "OCR", "convert_to_pdf", "upload_s3"
|
|
status = Column(String) # "pending", "in_progress", "success", "failure"
|
|
message = Column(String, nullable=True) # Error text or success note
|
|
timestamp = Column(DateTime(timezone=True), server_default=func.now())
|