from sqlalchemy import Column, ForeignKey from sqlalchemy import Integer from sqlalchemy import VARCHAR from sqlalchemy.orm import relationship from api.database import Base from api.database import engine class User(Base): __tablename__ = "user" id = Column(Integer, primary_key=True, index=True) name = Column(VARCHAR(length=32), nullable=False, unique=True) password_hash = Column(VARCHAR, nullable=False) class Service(Base): __tablename__ = "service" id = Column(Integer, primary_key=True, index=True) name = Column(VARCHAR, nullable=False, unique=True) # children loadbalancer = relationship( "Loadbalancer", cascade="all,delete", uselist=False, backref="service" ) class Loadbalancer(Base): __tablename__ = "loadbalancer" id = Column(Integer, primary_key=True, index=True) # parent service_id = Column(Integer, ForeignKey("service.id")) # children servers = relationship( "LoadbalancerServers", cascade="all,delete", backref="loadbalancer", lazy="dynamic", ) class LoadbalancerServers(Base): __tablename__ = "loadbalancerservers" id = Column(Integer, primary_key=True, index=True) address = Column(VARCHAR, nullable=False) # parent loadbalancer_id = Column(Integer, ForeignKey("loadbalancer.id")) Base.metadata.create_all(engine)