Files
pgMultiMaster/models.py
T
george 448771cd88 feat:
--Cluster management table api added to create cluster
2026-09-16 12:42:24 +05:30

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"