46 lines
1.6 KiB
Python
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)
|