mirror of
https://github.com/flibusta-apps/telegram_files_server.git
synced 2025-12-06 20:45:37 +01:00
Init
This commit is contained in:
29
fastapi_file_server/core/app.py
Normal file
29
fastapi_file_server/core/app.py
Normal 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
|
||||
34
fastapi_file_server/core/config.py
Normal file
34
fastapi_file_server/core/config.py
Normal 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()
|
||||
15
fastapi_file_server/core/db.py
Normal file
15
fastapi_file_server/core/db.py
Normal 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)
|
||||
Reference in New Issue
Block a user