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
|
from psycopg2.extras import RealDictCursor
|
||||||
import asyncio
|
import asyncio
|
||||||
from fastapi.middleware.cors import CORSMiddleware
|
from fastapi.middleware.cors import CORSMiddleware
|
||||||
|
|
||||||
|
from database import Base, engine,SessionLocal
|
||||||
|
# import models
|
||||||
|
from models import NodeInterface
|
||||||
origins = [
|
origins = [
|
||||||
"http://localhost:5173",
|
"http://localhost:5173",
|
||||||
"http://127.0.0.1:5173",
|
"http://127.0.0.1:5173",
|
||||||
@@ -15,6 +19,8 @@ origins = [
|
|||||||
|
|
||||||
app = FastAPI()
|
app = FastAPI()
|
||||||
|
|
||||||
|
Base.metadata.create_all(bind=engine)
|
||||||
|
|
||||||
app.add_middleware(
|
app.add_middleware(
|
||||||
CORSMiddleware,
|
CORSMiddleware,
|
||||||
allow_origins=origins,
|
allow_origins=origins,
|
||||||
@@ -213,8 +219,13 @@ def register_node(data: RegisterNodeRequest, token_data: dict = Depends(verify_t
|
|||||||
|
|
||||||
# 5. Show registered nodes
|
# 5. Show registered nodes
|
||||||
cur.execute("""
|
cur.execute("""
|
||||||
SELECT node_id, node_name
|
SELECT
|
||||||
FROM spock.node;
|
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()
|
rows = cur.fetchall()
|
||||||
@@ -222,10 +233,34 @@ def register_node(data: RegisterNodeRequest, token_data: dict = Depends(verify_t
|
|||||||
nodes = [
|
nodes = [
|
||||||
{
|
{
|
||||||
"node_id": row[0],
|
"node_id": row[0],
|
||||||
"node_name": row[1]
|
"node_name": row[1],
|
||||||
|
"if_id": row[2]
|
||||||
}
|
}
|
||||||
for row in rows
|
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 {
|
return {
|
||||||
"status": "success",
|
"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