from sqlalchemy import Column, Integer, String, Text, ForeignKey, DateTime, TIMESTAMP from sqlalchemy.orm import relationship from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.sql import func Base = declarative_base() class UploadLog(Base): __tablename__ = "upload_logs" id = Column(Integer, primary_key=True, index=True) filename = Column(String, nullable=False) table_name = Column(String, nullable=False) file_type = Column(String, nullable=False) rows_count = Column(Integer) uploaded_at = Column(TIMESTAMP, server_default=func.now()) status = Column(String) message = Column(Text) class Institution(Base): __tablename__ = "institutions" id = Column(Integer, primary_key=True, index=True) name = Column(String(100), unique=True, nullable=False) address = Column(String(200), nullable=True) users = relationship("User", back_populates="institution") class User(Base): __tablename__ = "users" id = Column(Integer, primary_key=True, index=True) username = Column(String(50), unique=True, nullable=False) password_hash = Column(String(255), nullable=False) role = Column(String(50), nullable=False, default="user") # <── Added role institution_id = Column(Integer, ForeignKey("institutions.id"), nullable=True) active_token = Column(String(255), nullable=True) token_expired_at = Column(DateTime, nullable=True) last_login = Column(DateTime, nullable=True) institution = relationship("Institution", back_populates="users")