from sqlalchemy import Column, Integer, String, DateTime, Text, JSON, Float, ForeignKey from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import relationship from datetime import datetime Base = declarative_base() class Document(Base): __tablename__ = "documents" id = Column(Integer, primary_key=True) doc_id = Column(String(64), unique=True, nullable=False) title = Column(String(256), nullable=False) source_type = Column(String(32), nullable=False) source_path = Column(String(512), nullable=True) meta = Column(JSON, default={}) # renamed from metadata created_at = Column(DateTime, default=datetime.utcnow) chunks = relationship("Chunk", back_populates="document") class Chunk(Base): __tablename__ = "chunks" id = Column(Integer, primary_key=True) chunk_id = Column(String(64), unique=True, nullable=False) doc_id = Column(Integer, ForeignKey("documents.id")) content = Column(Text, nullable=False) embedding = Column(JSON, nullable=True) chunk_index = Column(Integer, default=0) meta = Column(JSON, default={}) # renamed from metadata created_at = Column(DateTime, default=datetime.utcnow) document = relationship("Document", back_populates="chunks")