Files
pgMultiMaster/models.py
T
george d0e1d31093 feat:
--ADDED create cluster api
2026-09-10 11:43:09 +05:30

118 lines
2.0 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()