feat:
--FastAPI Table added --CHECK register_node
This commit is contained in:
1 parent
85f2b1884b
commit
7a0e8c7cd6
3 files changed
+104
-3
No files matched your search
+25
@@ -0,0 +1,25 @@
|
||||
from sqlalchemy import create_engine
|
||||
from sqlalchemy.orm import sessionmaker, declarative_base
|
||||
|
||||
DATABASE_URL = "postgresql://postgres:postgres@172.16.10.178:5444/postgres"
|
||||
|
||||
engine = create_engine(
|
||||
DATABASE_URL,
|
||||
pool_pre_ping=True
|
||||
)
|
||||
|
||||
SessionLocal = sessionmaker(
|
||||
autocommit=False,
|
||||
autoflush=False,
|
||||
bind=engine
|
||||
)
|
||||
|
||||
Base = declarative_base()
|
||||
|
||||
|
||||
def get_db():
|
||||
db = SessionLocal()
|
||||
try:
|
||||
yield db
|
||||
finally:
|
||||
db.close()
|
||||
@@ -7,6 +7,10 @@ import psycopg2
|
||||
from psycopg2.extras import RealDictCursor
|
||||
import asyncio
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
|
||||
from database import Base, engine,SessionLocal
|
||||
# import models
|
||||
from models import NodeInterface
|
||||
origins = [
|
||||
"http://localhost:5173",
|
||||
"http://127.0.0.1:5173",
|
||||
@@ -15,6 +19,8 @@ origins = [
|
||||
|
||||
app = FastAPI()
|
||||
|
||||
Base.metadata.create_all(bind=engine)
|
||||
|
||||
app.add_middleware(
|
||||
CORSMiddleware,
|
||||
allow_origins=origins,
|
||||
@@ -213,8 +219,13 @@ def register_node(data: RegisterNodeRequest, token_data: dict = Depends(verify_t
|
||||
|
||||
# 5. Show registered nodes
|
||||
cur.execute("""
|
||||
SELECT node_id, node_name
|
||||
FROM spock.node;
|
||||
SELECT
|
||||
n.node_id,
|
||||
n.node_name,
|
||||
ni.if_id
|
||||
FROM spock.node n
|
||||
LEFT JOIN spock.node_interface ni
|
||||
ON ni.if_nodeid = n.node_id;
|
||||
""")
|
||||
|
||||
rows = cur.fetchall()
|
||||
@@ -222,10 +233,34 @@ def register_node(data: RegisterNodeRequest, token_data: dict = Depends(verify_t
|
||||
nodes = [
|
||||
{
|
||||
"node_id": row[0],
|
||||
"node_name": row[1]
|
||||
"node_name": row[1],
|
||||
"if_id": row[2]
|
||||
}
|
||||
for row in rows
|
||||
]
|
||||
registered_node = next(
|
||||
node for node in nodes
|
||||
if node["node_id"] == node_id
|
||||
)
|
||||
|
||||
db = SessionLocal()
|
||||
|
||||
try:
|
||||
node_interface = NodeInterface(
|
||||
if_id=registered_node["if_id"],
|
||||
if_name=registered_node["node_name"],
|
||||
if_nodeid=registered_node["node_id"],
|
||||
host=data.host,
|
||||
port=data.port,
|
||||
dbname=data.dbname,
|
||||
user=data.user
|
||||
)
|
||||
|
||||
db.add(node_interface)
|
||||
db.commit()
|
||||
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
return {
|
||||
"status": "success",
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
from sqlalchemy import Column, BigInteger, Integer, String
|
||||
from database import Base
|
||||
|
||||
|
||||
class NodeInterface(Base):
|
||||
__tablename__ = "fastAPI_node_interface"
|
||||
|
||||
if_id = Column(
|
||||
BigInteger,
|
||||
primary_key=True
|
||||
)
|
||||
|
||||
if_name = Column(
|
||||
String,
|
||||
nullable=False
|
||||
)
|
||||
|
||||
if_nodeid = Column(
|
||||
Integer,
|
||||
nullable=False
|
||||
)
|
||||
|
||||
host = Column(
|
||||
String,
|
||||
nullable=False
|
||||
)
|
||||
|
||||
port = Column(
|
||||
Integer,
|
||||
nullable=False
|
||||
)
|
||||
|
||||
dbname = Column(
|
||||
String,
|
||||
nullable=False
|
||||
)
|
||||
|
||||
user = Column(
|
||||
String,
|
||||
nullable=False
|
||||
)
|
||||
Reference in new issue
Block a user