from sqlalchemy import Column, Integer, String, ForeignKey, DateTime, Table from sqlalchemy.orm import relationship from database import Base from datetime import datetime class SecurityConfig(Base): __tablename__ = "security_config" id = Column(Integer, primary_key=True, index=True) password_hash = Column(String, nullable=False) recovery_key_hash = Column(String, nullable=False) document_tags = Table( "document_tags", Base.metadata, Column("document_id", Integer, ForeignKey("documents.id"), primary_key=True), Column("tag_id", Integer, ForeignKey("tags.id"), primary_key=True), ) # --- Modele pod Stronę Główną --- class Tag(Base): __tablename__ = "tags" id = Column(Integer, primary_key=True, index=True) name = Column(String, unique=True, nullable=False) class Folder(Base): __tablename__ = "folders" id = Column(Integer, primary_key=True, index=True) name = Column(String, nullable=False) parent_id = Column(Integer, ForeignKey("folders.id"), nullable=True) created_at = Column(DateTime, default=datetime.utcnow) documents = relationship("Document", back_populates="folder") class Document(Base): __tablename__ = "documents" id = Column(Integer, primary_key=True, index=True) title = Column(String, nullable=False) file_path = Column(String, nullable=False) folder_id = Column(Integer, ForeignKey("folders.id"), nullable=True) created_at = Column(DateTime, default=datetime.utcnow) updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) folder = relationship("Folder", back_populates="documents") tags = relationship("Tag", secondary=document_tags, backref="documents")