This commit is contained in:
2023-08-06 14:05:34 +02:00
parent 217adb85ed
commit 2f1fdecd5f
21 changed files with 273 additions and 1053 deletions

View File

@@ -5,9 +5,8 @@ from prometheus_fastapi_instrumentator import Instrumentator
import sentry_sdk
from app.on_start import on_start
from app.views import healthcheck_router, router
from app.views import router
from core.config import env_config
from core.db import database
sentry_sdk.init(
@@ -18,25 +17,12 @@ sentry_sdk.init(
def start_app() -> FastAPI:
app = FastAPI(default_response_class=ORJSONResponse)
app.state.database = database
app.include_router(router)
app.include_router(healthcheck_router)
@app.on_event("startup")
async def startup() -> None:
database_ = app.state.database
if not database_.is_connected:
await database_.connect()
await on_start()
@app.on_event("shutdown")
async def shutdown() -> None:
database_ = app.state.database
if database_.is_connected:
await database_.disconnect()
Instrumentator(
should_ignore_untemplated=True,
excluded_handlers=["/docs", "/metrics", "/healthcheck"],

View File

@@ -1,6 +1,7 @@
from typing import Optional
from pydantic import BaseModel, BaseSettings
from pydantic import BaseModel
from pydantic_settings import BaseSettings
BotToken = str
@@ -15,12 +16,6 @@ class TelethonConfig(BaseModel):
class EnvConfig(BaseSettings):
API_KEY: str
POSTGRES_USER: str
POSTGRES_PASSWORD: str
POSTGRES_HOST: str
POSTGRES_PORT: int
POSTGRES_DB: str
TELEGRAM_CHAT_ID: int
BOT_TOKENS: Optional[list[BotToken]]
@@ -30,9 +25,5 @@ class EnvConfig(BaseSettings):
SENTRY_DSN: str
class Config:
env_file = ".env"
env_file_encoding = "utf-8"
env_config = EnvConfig()

View File

@@ -1,15 +0,0 @@
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)