file_table_reader/database/models.py

42 lines
1.5 KiB
Python
Raw Normal View History

2025-11-17 03:53:15 +00:00
from sqlalchemy import Column, Integer, String, Text, ForeignKey, DateTime, TIMESTAMP
from sqlalchemy.orm import relationship
2025-10-29 10:07:48 +00:00
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)
2025-11-17 03:53:15 +00:00
2025-12-22 08:18:43 +00:00
class Organization(Base):
__tablename__ = "organizations"
2025-11-17 03:53:15 +00:00
id = Column(Integer, primary_key=True, index=True)
name = Column(String(100), unique=True, nullable=False)
address = Column(String(200), nullable=True)
2025-12-22 08:18:43 +00:00
users = relationship("User", back_populates="organization")
2025-11-17 03:53:15 +00:00
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
2025-12-22 08:18:43 +00:00
organization_id = Column(Integer, ForeignKey("organizations.id"), nullable=True)
2025-11-17 03:53:15 +00:00
active_token = Column(String(255), nullable=True)
token_expired_at = Column(DateTime, nullable=True)
last_login = Column(DateTime, nullable=True)
2025-12-22 08:18:43 +00:00
organization = relationship("Organization", back_populates="users")