- Implemented SubscriptionRepository with methods to get, create, and update subscriptions. - Added BalanceTXRepository for creating and retrieving balance transactions. - Introduced a test script for simulating Pally webhook for local testing.
57 lines
1.6 KiB
Python
57 lines
1.6 KiB
Python
from collections.abc import AsyncGenerator
|
|
from contextlib import asynccontextmanager
|
|
|
|
from aiogram import Bot
|
|
from aiogram.client.default import DefaultBotProperties
|
|
from fastapi import FastAPI
|
|
|
|
from api.routes import routers
|
|
from config import settings
|
|
from repositories.bills import BillsRepository
|
|
from repositories.subscriptions import SubscriptionRepository
|
|
from repositories.users import UserRepository
|
|
from schemas.di import APIDependenciesDTO
|
|
from services.billing_service import BillingService
|
|
from services.user_service import UserService
|
|
|
|
|
|
@asynccontextmanager
|
|
async def lifespan(app: FastAPI) -> AsyncGenerator:
|
|
# Bot Init
|
|
bot_default = DefaultBotProperties(parse_mode="HTML")
|
|
bot = Bot(token=settings.bot_token, default=bot_default)
|
|
app.state.bot = bot
|
|
|
|
user_repository = UserRepository()
|
|
bills_repository = BillsRepository()
|
|
subscription_repository = SubscriptionRepository()
|
|
|
|
user_service = UserService(user_repository, subscription_repository=subscription_repository)
|
|
bills_service = BillingService(
|
|
user_repository=user_repository, bills_repository=bills_repository
|
|
)
|
|
|
|
deps_dto = APIDependenciesDTO(
|
|
user_repository=user_repository,
|
|
user_service=user_service,
|
|
bills_repository=bills_repository,
|
|
billing_service=bills_service,
|
|
)
|
|
app.state.deps = deps_dto
|
|
|
|
for r in routers:
|
|
app.include_router(r)
|
|
|
|
yield # App's lifespan
|
|
|
|
await bot.session.close() # D IE!!!!!!!!
|
|
|
|
|
|
app = FastAPI(
|
|
title="Malenia API",
|
|
description="Payment webhook handler and user balance management",
|
|
version="1.0.0",
|
|
lifespan=lifespan,
|
|
docs_url="",
|
|
)
|