Spaces:
No application file
No application file
| from sqlalchemy import Column, Integer, String, DateTime, Text, ForeignKey | |
| from sqlalchemy.orm import declarative_base, relationship | |
| from datetime import datetime | |
| Base = declarative_base() | |
| class Document(Base): | |
| __tablename__ = "documents" | |
| id = Column(Integer, primary_key=True) | |
| filename = Column(String, unique=True, nullable=False) | |
| file_type = Column(String) # pdf or txt | |
| uploaded_at = Column(DateTime, default=datetime.utcnow) | |
| chunks = relationship("Chunk", back_populates="document", cascade="all, delete-orphan") | |
| class Chunk(Base): | |
| __tablename__ = "chunks" | |
| id = Column(Integer, primary_key=True) | |
| document_id = Column(Integer, ForeignKey("documents.id")) | |
| content = Column(Text, nullable=False) | |
| chunk_index = Column(Integer) | |
| metadata_json = Column(Text) # page number, etc. | |
| vector_id = Column(String, unique=True) # Pinecone vector ID | |
| document = relationship("Document", back_populates="chunks") | |
| class Booking(Base): | |
| __tablename__ = "bookings" | |
| id = Column(Integer, primary_key=True) | |
| name = Column(String, nullable=False) | |
| email = Column(String, nullable=False) | |
| date = Column(String, nullable=False) # or Date if you prefer | |
| time = Column(String, nullable=False) | |
| created_at = Column(DateTime, default=datetime.utcnow) |