|
| 1 | +from logging import getLogger |
| 2 | + |
| 3 | +from fastapi import APIRouter |
| 4 | + |
| 5 | +from backend.internals.azure_cosmos_db import Client |
| 6 | +from backend.schemas import azure_cosmos_db as azure_cosmos_db_schemas |
| 7 | +from backend.settings.azure_cosmos_db import Settings |
| 8 | + |
| 9 | +logger = getLogger(__name__) |
| 10 | + |
| 11 | +client = Client( |
| 12 | + settings=Settings(), |
| 13 | +) |
| 14 | + |
| 15 | +router = APIRouter( |
| 16 | + prefix="/azure_cosmos_db", |
| 17 | + tags=["azure_cosmos_db"], |
| 18 | + responses={404: {"description": "Not found"}}, |
| 19 | +) |
| 20 | + |
| 21 | + |
| 22 | +@router.post( |
| 23 | + "/database", |
| 24 | + response_model=azure_cosmos_db_schemas.CreateDatabaseResponse, |
| 25 | + status_code=200, |
| 26 | +) |
| 27 | +async def create_database(body: azure_cosmos_db_schemas.CreateDatabaseRequest): |
| 28 | + database_id = client.create_database( |
| 29 | + database_id=body.database_id, |
| 30 | + ) |
| 31 | + return azure_cosmos_db_schemas.CreateDatabaseResponse( |
| 32 | + database_id=database_id, |
| 33 | + ) |
| 34 | + |
| 35 | + |
| 36 | +@router.post( |
| 37 | + "/container", |
| 38 | + response_model=azure_cosmos_db_schemas.CreateContainerResponse, |
| 39 | + status_code=200, |
| 40 | +) |
| 41 | +async def create_container(body: azure_cosmos_db_schemas.CreateContainerRequest): |
| 42 | + container_id = client.create_container( |
| 43 | + container_id=body.container_id, |
| 44 | + database_id=body.database_id, |
| 45 | + ) |
| 46 | + return azure_cosmos_db_schemas.CreateContainerResponse( |
| 47 | + container_id=container_id, |
| 48 | + ) |
| 49 | + |
| 50 | + |
| 51 | +@router.post( |
| 52 | + "/item", |
| 53 | + response_model=azure_cosmos_db_schemas.CreateItemResponse, |
| 54 | + status_code=200, |
| 55 | +) |
| 56 | +async def create_item(body: azure_cosmos_db_schemas.CreateItemRequest): |
| 57 | + container = client.get_container( |
| 58 | + container_id=body.container_id, |
| 59 | + database_id=body.database_id, |
| 60 | + ) |
| 61 | + created_item = client.create_item( |
| 62 | + container=container, |
| 63 | + item=body.item, |
| 64 | + ) |
| 65 | + return azure_cosmos_db_schemas.CreateItemResponse( |
| 66 | + container_id=body.container_id, |
| 67 | + database_id=body.database_id, |
| 68 | + item=created_item, |
| 69 | + ) |
0 commit comments