130 lines
2.3 KiB
Python
130 lines
2.3 KiB
Python
from sqlalchemy import Column, BigInteger, Integer, String
|
|
from database import Base, engine
|
|
import uuid
|
|
from sqlalchemy.dialects.postgresql import UUID
|
|
from sqlalchemy.orm import relationship
|
|
from sqlalchemy import ForeignKey
|
|
from sqlalchemy import text
|
|
class NodeInterface(Base):
|
|
__tablename__ = "fastAPI_node_interface"
|
|
|
|
uuid = Column(
|
|
UUID(as_uuid=True),
|
|
primary_key=True,
|
|
default=uuid.uuid4,
|
|
nullable=False
|
|
)
|
|
|
|
if_id = Column(
|
|
BigInteger,
|
|
unique=True,
|
|
nullable=False
|
|
)
|
|
|
|
if_name = Column(
|
|
String,
|
|
unique=True,
|
|
nullable=False
|
|
)
|
|
|
|
if_nodeid = Column(
|
|
Integer,
|
|
nullable=False
|
|
)
|
|
|
|
host = Column(
|
|
String,
|
|
unique=True,
|
|
nullable=False
|
|
)
|
|
|
|
port = Column(
|
|
Integer,
|
|
nullable=False
|
|
)
|
|
|
|
dbname = Column(
|
|
String,
|
|
nullable=False
|
|
)
|
|
|
|
user = Column(
|
|
String,
|
|
nullable=False
|
|
)
|
|
|
|
cluster_id = Column(
|
|
UUID(as_uuid=True),
|
|
ForeignKey("fastAPI_cluster.uuid"),
|
|
nullable=True
|
|
)
|
|
|
|
cluster = relationship(
|
|
"Cluster",
|
|
back_populates="nodes"
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Cluster(Base):
|
|
__tablename__ = "fastAPI_cluster"
|
|
|
|
uuid = Column(
|
|
UUID(as_uuid=True),
|
|
primary_key=True,
|
|
default=uuid.uuid4,
|
|
nullable=False
|
|
)
|
|
|
|
cluster_name = Column(
|
|
String,
|
|
unique=True,
|
|
nullable=False
|
|
)
|
|
|
|
nodes = relationship(
|
|
"NodeInterface",
|
|
back_populates="cluster"
|
|
)
|
|
|
|
|
|
|
|
|
|
#EXPERIMENTAL
|
|
|
|
def add_cluster_id_column():
|
|
|
|
with engine.begin() as conn:
|
|
|
|
conn.execute(text("""
|
|
ALTER TABLE "fastAPI_node_interface"
|
|
ADD COLUMN IF NOT EXISTS cluster_id UUID;
|
|
"""))
|
|
|
|
conn.execute(text("""
|
|
ALTER TABLE "fastAPI_node_interface"
|
|
ADD CONSTRAINT fk_node_interface_cluster
|
|
FOREIGN KEY (cluster_id)
|
|
REFERENCES "fastAPI_cluster"(uuid);
|
|
"""))
|
|
|
|
# add_cluster_id_column()
|
|
|
|
|
|
# ALTER TABLE "fastAPI_node_interface"
|
|
# DROP CONSTRAINT fk_node_interface_cluster;
|
|
|
|
# ALTER TABLE "fastAPI_node_interface"
|
|
# ADD CONSTRAINT fk_node_interface_cluster
|
|
# FOREIGN KEY (cluster_id)
|
|
# REFERENCES "fastAPI_cluster"(uuid)
|
|
# ON DELETE SET NULL;
|
|
|
|
#\d "fastAPI_node_interface" |