lynxkite / main.py
darabos's picture
Display graph from backend. Almost there.
3d534f4
raw
history blame
1.24 kB
from typing import Union
import fastapi
import pydantic
import networkx as nx
class Position(pydantic.BaseModel):
x: float
y: float
class WorkspaceNodeData(pydantic.BaseModel):
title: str
params: dict
class WorkspaceNode(pydantic.BaseModel):
id: str
type: str
data: WorkspaceNodeData
position: Position
class WorkspaceEdge(pydantic.BaseModel):
id: str
source: str
target: str
class Workspace(pydantic.BaseModel):
nodes: list[WorkspaceNode]
edges: list[WorkspaceEdge]
app = fastapi.FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
def read_item(item_id: int, q: Union[str, None] = None):
return {"item_id": item_id, "q": q}
@app.post("/api/save")
def save(ws: Workspace):
print(ws)
G = nx.scale_free_graph(4)
return {'graph':{
'attributes': {
'name': 'My Graph'
},
'options': {
'allowSelfLoops': True,
'multi': False,
'type': 'mixed'
},
'nodes': [
{'key': 'Thomas'},
{'key': 'Eric'}
],
'edges': [
{
'key': 'T->E',
'source': 'Thomas',
'target': 'Eric',
}
]
}}
return {"graph": list(nx.to_edgelist(G))}