diff --git a/src/backend/langflow/database/models/flow.py b/src/backend/langflow/database/models/flow.py index 0b71463a0..6305de3cc 100644 --- a/src/backend/langflow/database/models/flow.py +++ b/src/backend/langflow/database/models/flow.py @@ -12,11 +12,13 @@ from langflow.database.models.flow_style import FlowStyle, FlowStyleRead class FlowBase(SQLModelSerializable): name: str = Field(index=True) - flow: Dict = Field(default_factory=dict, sa_column=Column(JSON)) + flow: Optional[Dict] = Field(default_factory=dict, sa_column=Column(JSON)) @validator("flow") def validate_json(v): # dict_keys(['description', 'name', 'id', 'data']) + if not v: + return v if not isinstance(v, dict): raise ValueError("Flow must be a valid JSON") if "description" not in v.keys(): diff --git a/tests/test_database.py b/tests/test_database.py index 8b680129f..516c04ade 100644 --- a/tests/test_database.py +++ b/tests/test_database.py @@ -38,6 +38,12 @@ def test_create_flow(client: TestClient, json_flow: str): assert response.status_code == 200 assert response.json()["name"] == flow.name assert response.json()["flow"] == flow.flow + # flow is optional so we can create a flow without a flow + flow = FlowCreate(name="Test Flow") + response = client.post("api/v1/flows/", json=flow.dict(exclude_unset=True)) + assert response.status_code == 200 + assert response.json()["name"] == flow.name + assert response.json()["flow"] == flow.flow def test_read_flows(client: TestClient, json_flow: str):