This commit is contained in:
2021-11-21 22:32:25 +03:00
commit 18df7c12f4
23 changed files with 667 additions and 0 deletions

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

@@ -0,0 +1,26 @@
from fastapi import FastAPI
from core.db import database
from app.views import router
def start_app() -> FastAPI:
app = FastAPI()
app.state.database = database
app.include_router(router)
@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")

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

@@ -0,0 +1,23 @@
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
DOWNLOADER_API_KEY: str
DOWNLOADER_URL: str
LIBRARY_API_KEY: str
LIBRARY_URL: str
FILES_SERVER_API_KEY: str
FILES_SERVER_URL: 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)