Skip to content

Commit 6e1c15b

Browse files
committed
Fix error with schemas_collection
Deleted id in SchemaDefinition Changed MONGO_URI to str
1 parent 7397ba6 commit 6e1c15b

File tree

5 files changed

+21
-29
lines changed

5 files changed

+21
-29
lines changed

jsoned/api/v1/endpoints/schemas.py

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,15 @@
1-
from fastapi import APIRouter
1+
from fastapi import APIRouter, Request
22

3-
from jsoned.database import schemas_collection
43
from jsoned.models.schema_definition import SchemaDefinition
54

65
router = APIRouter()
76

87

98
@router.get("/all", response_model=list[SchemaDefinition])
10-
async def get_all_schemas():
11-
"""
12-
Gets all the schemas present in the database and returns them in a list of `SchemaDefinition` models.
13-
"""
14-
response = []
15-
documents = schemas_collection.find({})
16-
async for doc in documents:
17-
response.append(SchemaDefinition(**doc))
18-
19-
return response
9+
async def get_all_schemas(request: Request):
10+
schemas_collection = request.app.state.schemas_collection
11+
docs = schemas_collection.find({})
12+
return [SchemaDefinition(**doc) async for doc in docs]
2013

2114

2215
# @router.post("/add", response_model=SchemaDefinition)

jsoned/database.py

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,27 @@
1-
from motor.motor_asyncio import AsyncIOMotorClient
1+
from fastapi import HTTPException
2+
from motor.motor_asyncio import AsyncIOMotorClient, AsyncIOMotorCollection
23

34
from jsoned.settings import settings
45

56
client: AsyncIOMotorClient | None = None
67
database = None
7-
schemas_collection = None
8+
_schemas_collection: AsyncIOMotorCollection | None = None
89

910

1011
async def connect_to_mongo():
11-
global client, database, schemas_collection
12-
12+
global client, database, _schemas_collection
1313
client = AsyncIOMotorClient(settings.MONGO_URI)
1414
database = client.jsoned_db
15-
schemas_collection = database.schemas
16-
17-
# create index once on startup
18-
await schemas_collection.create_index("title", unique=True)
15+
_schemas_collection = database.schemas
16+
await _schemas_collection.create_index("title", unique=True)
1917

2018

2119
async def close_mongo():
2220
if client is not None:
2321
client.close()
22+
23+
24+
def get_schemas_collection() -> AsyncIOMotorCollection:
25+
if _schemas_collection is None:
26+
raise HTTPException(503, "Database not available")
27+
return _schemas_collection

jsoned/main.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,18 @@
33
from fastapi import FastAPI
44
from starlette.middleware.cors import CORSMiddleware
55

6-
from jsoned.api.api_v1.api import api_router
7-
from jsoned.database import close_mongo, connect_to_mongo
6+
from jsoned.api.v1.api import api_router
7+
from jsoned.database import close_mongo, connect_to_mongo, get_schemas_collection
88
from jsoned.settings import settings
99

1010

1111
@asynccontextmanager
1212
async def app_init(app: FastAPI):
1313
await connect_to_mongo()
14+
app.state.schemas_collection = get_schemas_collection()
1415

1516
app.include_router(api_router, prefix=settings.API_V1_STR)
1617
yield
17-
1818
await close_mongo()
1919

2020

jsoned/models/schema_definition.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,6 @@
55

66

77
class SchemaDefinition(BaseModel):
8-
id: UUID = Field(
9-
...,
10-
description="Automatically generated unique identifier for the schema entry based on `content`.",
11-
)
12-
138
title: str | None = Field(
149
None,
1510
description="A human-readable title given to the schema entry.",

jsoned/settings.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ class Settings(BaseSettings):
99
"http://localhost",
1010
"http://localhost:3000",
1111
]
12-
MONGO_URI: AnyHttpUrl = "mongodb://localhost:27017"
12+
MONGO_URI: str = "mongodb://localhost:27017"
1313

1414

1515
settings = Settings()

0 commit comments

Comments
 (0)