From 0124fe9ec2c566fec85f3942c918e83e920ac42c Mon Sep 17 00:00:00 2001 From: Robert Date: Sun, 25 Feb 2024 10:43:58 +0700 Subject: [PATCH] chain creation controller --- chain_service/controllers/__main__.py | 8 +++++--- chain_service/controllers/chain.py | 24 ++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 chain_service/controllers/chain.py diff --git a/chain_service/controllers/__main__.py b/chain_service/controllers/__main__.py index 5daac05..9d56b05 100644 --- a/chain_service/controllers/__main__.py +++ b/chain_service/controllers/__main__.py @@ -1,6 +1,8 @@ -from fastapi import FastAPI -from .test import router as test_router +from fastapi import FastAPI, APIRouter +from .chain import router as chain_router def setup_controllers(application: FastAPI): - application.include_router(test_router) + router = APIRouter(prefix="/api") + router.include_router(chain_router) + application.include_router(router) diff --git a/chain_service/controllers/chain.py b/chain_service/controllers/chain.py new file mode 100644 index 0000000..85edada --- /dev/null +++ b/chain_service/controllers/chain.py @@ -0,0 +1,24 @@ +from loguru import logger + +from chain_service.database.models.chain import Chain +from chain_service.repositories.chain import ChainRepository +from chain_service.dependencies.chain import get_chain_repository + +from typing import Annotated +from fastapi import APIRouter, Depends, HTTPException + +router = APIRouter(prefix="/chain") + + +@router.post("/") +async def chain_create_controller( + chain: Chain, + chain_repository: Annotated[ChainRepository, Depends(get_chain_repository)], +): + try: + created_chain = await chain_repository.create(chain) + return created_chain + + except Exception: + logger.exception(f"Error during chain creation {chain.model_dump_json()}") + return HTTPException(status_code=500, detail="Error during chain creation")