This commit is contained in:
2021-11-14 10:38:47 +03:00
commit 30835e31fa
43 changed files with 2366 additions and 0 deletions

View File

@@ -0,0 +1,31 @@
from operator import add
from fastapi import FastAPI
from fastapi_pagination import add_pagination
from core.db import database
from app.views import routers
def start_app() -> FastAPI:
app = FastAPI()
app.state.database = database
for router in routers:
app.include_router(router)
add_pagination(app)
@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

View File

@@ -0,0 +1,16 @@
from pydantic import BaseSettings
class EnvConfig(BaseSettings):
POSTGRES_USER: str
POSTGRES_PASSWORD: str
POSTGRES_HOST: str
POSTGRES_PORT: int
POSTGRES_DB: str
class Config:
env_file = '.env'
env_file_encoding = 'utf-8'
env_config = EnvConfig()

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)