Skip to content

Commit

Permalink
Update dependencies injection
Browse files Browse the repository at this point in the history
  • Loading branch information
slimovich committed Jun 29, 2020
1 parent 4376010 commit 65fc91e
Show file tree
Hide file tree
Showing 6 changed files with 59 additions and 74 deletions.
2 changes: 1 addition & 1 deletion Pipfile
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ bandit = "==1.6.2"
[packages]
gino = "==1.0.0"
gino-starlette = "==0.1.1"
fastapi = "==0.54.1"
fastapi = "==0.58.1"
uvicorn = "==0.11.5"
gunicorn = "==20.0.4"
alembic = "==1.4.1"
Expand Down
92 changes: 46 additions & 46 deletions Pipfile.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

18 changes: 7 additions & 11 deletions src/api/endpoints/user.py
Original file line number Diff line number Diff line change
@@ -1,31 +1,29 @@
from typing import List, Optional

import inject
from fastapi import APIRouter, HTTPException
from fastapi import APIRouter, HTTPException, Depends
from starlette import status

from src.api.utils import get_user_services
from src.domain.userManagment.schema.user import UserCreateSchema, UserDBSchema, UserUpdateSchema
from src.domain.userManagment.service.userService import UserService

router = APIRouter()


@router.post("/", response_model=UserDBSchema)
async def create_user(user: UserCreateSchema) -> UserDBSchema:
user_service = inject.instance(UserService)
async def create_user(user: UserCreateSchema, user_service: UserService = Depends(get_user_services)) -> UserDBSchema:
return await user_service.create_user(user)


@router.get("/all", response_model=List[UserDBSchema])
async def list_users() -> List[UserDBSchema]:
user_service = inject.instance(UserService)
async def list_users(user_service: UserService = Depends(get_user_services)) -> List[UserDBSchema]:
users: List[UserDBSchema] = await user_service.list_users()
return users


@router.get("/{user_id}", response_model=UserDBSchema)
async def get_user_by_id(user_id: int) -> Optional[UserDBSchema]:
user_service = inject.instance(UserService)
async def get_user_by_id(user_id: int, user_service: UserService = Depends(get_user_services)) -> Optional[UserDBSchema]:
user = await user_service.get_user_by_id(user_id)
if user:
return user
Expand All @@ -35,14 +33,12 @@ async def get_user_by_id(user_id: int) -> Optional[UserDBSchema]:


@router.put("/{user_id}", response_model=UserDBSchema)
async def update_user(user_id: int, new_user: UserUpdateSchema) -> UserDBSchema:
user_service = inject.instance(UserService)
async def update_user(user_id: int, new_user: UserUpdateSchema, user_service: UserService = Depends(get_user_services)) -> UserDBSchema:
user_updated: UserDBSchema = await user_service.update_user(user_id, new_user)
return user_updated


@router.delete("/{user_id}", response_model=UserDBSchema)
async def remove_user(user_id: int) -> UserDBSchema:
user_service = inject.instance(UserService)
async def remove_user(user_id: int, user_service: UserService = Depends(get_user_services)) -> UserDBSchema:
user_removed: UserDBSchema = await user_service.remove_user(user_id)
return user_removed
5 changes: 5 additions & 0 deletions src/api/utils.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
from src.domain.userManagment.service.userService import UserService
from src.infrastructure.database.models.user import UserQueries

def get_user_services():
return UserService(UserQueries())
14 changes: 0 additions & 14 deletions src/core/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,17 +57,3 @@
"uvicorn.access": {"handlers": ["access"], "level": "INFO", "propagate": False},
},
}

##########################################################################
# Dependicies injection settings
##########################################################################


def configure_inject() -> None:
from src.domain.userManagment.service.userService import UserService
from src.infrastructure.database.models.user import UserQueries

def config(binder: inject.Binder) -> None:
binder.bind(UserService, UserService(UserQueries()))

inject.configure(config)
2 changes: 0 additions & 2 deletions src/core/server.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
SERVER_ADRESS,
SERVER_LOG_LEVEL,
SERVER_PORT,
configure_inject,
)
from src.core.db import db

Expand All @@ -21,7 +20,6 @@ def create_app() -> FastAPI:
LOGGER.info("Initiliase fast-API app")
app = FastAPI()
db.init_app(app=app)
configure_inject()
app.include_router(api_router)
except Exception as e:
LOGGER.error(f"Error in fast-API app initialisation => {e}")
Expand Down

0 comments on commit 65fc91e

Please sign in to comment.