From 5ae12ea3ca2ac7b3191d7e2287a7ca2ad53d95a2 Mon Sep 17 00:00:00 2001 From: Robert Date: Wed, 13 Mar 2024 02:26:34 +0700 Subject: [PATCH] namespace api --- chain_service/controllers/__main__.py | 2 ++ chain_service/controllers/namespace.py | 23 +++++++++++++++++++ .../dependencies/namespace_repository.py | 15 ++++++++++++ 3 files changed, 40 insertions(+) create mode 100644 chain_service/controllers/namespace.py create mode 100644 chain_service/dependencies/namespace_repository.py diff --git a/chain_service/controllers/__main__.py b/chain_service/controllers/__main__.py index 1c3fa79..5fcf56b 100644 --- a/chain_service/controllers/__main__.py +++ b/chain_service/controllers/__main__.py @@ -1,6 +1,7 @@ from .chain import router as chain_router from .run_chain import router as run_chain_router from .s3 import router as s3_router +from .namespace import router as namespace_router from fastapi import FastAPI, APIRouter @@ -11,5 +12,6 @@ def setup_controllers(application: FastAPI): router.include_router(chain_router) router.include_router(run_chain_router) router.include_router(s3_router) + router.include_router(namespace_router) application.include_router(router) diff --git a/chain_service/controllers/namespace.py b/chain_service/controllers/namespace.py new file mode 100644 index 0000000..65455de --- /dev/null +++ b/chain_service/controllers/namespace.py @@ -0,0 +1,23 @@ +from loguru import logger +from fastapi import APIRouter, HTTPException + +from chain_service.database.models.namespace import Namespace + +from chain_service.dependencies.namespace_repository import ( + NamespaceRepositoryDependency, +) + +router = APIRouter(prefix="/namespace") + + +@router.post("/") +async def namespace_controller( + namespace: Namespace, namespace_repository: NamespaceRepositoryDependency +): + try: + upserted_namespace = await namespace_repository.upsert(namespace) + return upserted_namespace + + except Exception: + logger.exception(f"Error during namespace upsert {namespace.model_dump_json()}") + return HTTPException(status_code=500, detail="Error during namespace upsert") diff --git a/chain_service/dependencies/namespace_repository.py b/chain_service/dependencies/namespace_repository.py new file mode 100644 index 0000000..7ba78bf --- /dev/null +++ b/chain_service/dependencies/namespace_repository.py @@ -0,0 +1,15 @@ +from .database import DatabaseDependency +from chain_service.repositories.namespace import NamespaceRepository + + +from fastapi import Depends +from typing import Annotated + + +def get_namespace_repository(database: DatabaseDependency) -> NamespaceRepository: + return NamespaceRepository(database=database) + + +NamespaceRepositoryDependency = Annotated[ + NamespaceRepository, Depends(get_namespace_repository) +]