Files
db-middleware/data/models.py

46 lines
1.6 KiB
Python

# models.py
from sqlalchemy import Column, Integer, String, Enum, ForeignKey, JSON
from sqlalchemy.orm import relationship
from data.db import Base
from core.enums import ConnectionTypes, UserRole
class User(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True, index=True)
username = Column(String, unique=True, index=True, nullable=False)
role = Column(Enum(UserRole), default=UserRole.user, nullable=False)
api_key = Column(String, unique=True, nullable=False)
# repos = relationship("Connection", back_populates="owner")
class Connection(Base):
__tablename__ = "connections"
id = Column(Integer, primary_key=True, index=True)
db_name = Column(String, nullable=False)
type = Column(Enum(ConnectionTypes), nullable=False)
host = Column(String)
port = Column(Integer)
username = Column(String)
password = Column(String)
owner_id = Column(Integer, ForeignKey("users.id"))
# owner = relationship("User", back_populates="connections")
class Query(Base):
__tablename__ = "queries"
id = Column(Integer, primary_key=True, index=True)
name = Column(String, nullable=False)
description = Column(String, nullable=True)
owner_id = Column(Integer, ForeignKey("users.id"))
table_name = Column(String, nullable=False)
columns = Column(JSON, nullable=False)
filters = Column(JSON, nullable=True)
sort_by = Column(JSON, nullable=True)
limit = Column(Integer, nullable=True)
offset = Column(Integer, nullable=True)
sql= Column(String, nullable=False)
params = Column(JSON, nullable=False)