This commit is contained in:
2021-11-10 13:13:33 +03:00
commit 4c7af00ac3
22 changed files with 1663 additions and 0 deletions

View File

@@ -0,0 +1,29 @@
from fastapi import FastAPI
from core.db import database
from app.on_start import on_start
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()
await on_start()
@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,34 @@
from typing import Optional
from pydantic import BaseModel, BaseSettings
BotToken = str
TelethonSessionName= str
class TelethonConfig(BaseModel):
APP_ID: int
API_HASH: str
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]]
TELETHON_APP_CONFIG: Optional[TelethonConfig]
TELETHON_SESSIONS: Optional[list[TelethonSessionName]]
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)