This commit is contained in:
2021-12-03 23:21:37 +03:00
commit 27f35df97a
17 changed files with 501 additions and 0 deletions

27
src/core/app.py Normal file
View File

@@ -0,0 +1,27 @@
from fastapi import FastAPI
from core.db import database
from app.views import users_router, languages_router
def start_app() -> FastAPI:
app = FastAPI()
app.include_router(users_router)
app.include_router(languages_router)
app.state.database = database
@app.on_event('startup')
async def startup() -> None:
database_ = app.state.database
if not database_.is_connected:
await database_.connect()
@app.on_event('shutdown')
async def shutdown() -> None:
database_ = app.state.database
if database_.is_connected:
await database_.disconnect()
return app

4
src/core/auth.py Normal file
View File

@@ -0,0 +1,4 @@
from fastapi.security import APIKeyHeader
default_security = APIKeyHeader(name="Authorization")

14
src/core/config.py Normal file
View File

@@ -0,0 +1,14 @@
from pydantic import BaseSettings
class EnvConfig(BaseSettings):
API_KEY: str
POSTGRES_USER: str
POSTGRES_PASSWORD: str
POSTGRES_HOST: str
POSTGRES_PORT: int
POSTGRES_DB: str
env_config = EnvConfig()

15
src/core/db.py Normal file
View File

@@ -0,0 +1,15 @@
from urllib.parse import quote
from databases import Database
from sqlalchemy import MetaData
from core.config import env_config
DATABASE_URL = (
f"postgresql://{env_config.POSTGRES_USER}:{quote(env_config.POSTGRES_PASSWORD)}@"
f"{env_config.POSTGRES_HOST}:{env_config.POSTGRES_PORT}/{env_config.POSTGRES_DB}"
)
metadata = MetaData()
database = Database(DATABASE_URL)