refactor stats menu / fix subscription renewal

This commit is contained in:
Capybara-z
2025-11-04 23:55:48 +03:00
parent 532f066ffb
commit 617cdbad10
3 changed files with 95 additions and 13 deletions
+28 -2
View File
@@ -33,10 +33,28 @@ async def count_active_keys(session: AsyncSession) -> int:
return await session.scalar(select(func.count()).select_from(Key).where(Key.expiry_time > current_time_ms))
async def count_trial_keys(session: AsyncSession) -> int:
async def count_active_paid_keys(session: AsyncSession) -> int:
current_time_ms = int(datetime.utcnow().timestamp() * 1000)
trial_tariffs_subquery = select(Tariff.id).where(Tariff.group_code == "trial")
return await session.scalar(
select(func.count())
.select_from(Key)
.where(Key.expiry_time > current_time_ms)
.where(~Key.tariff_id.in_(trial_tariffs_subquery))
)
return await session.scalar(select(func.count()).select_from(Key).where(Key.tariff_id.in_(trial_tariffs_subquery)))
async def count_active_trial_keys(session: AsyncSession) -> int:
current_time_ms = int(datetime.utcnow().timestamp() * 1000)
trial_tariffs_subquery = select(Tariff.id).where(Tariff.group_code == "trial")
return await session.scalar(
select(func.count())
.select_from(Key)
.where(Key.expiry_time > current_time_ms)
.where(Key.tariff_id.in_(trial_tariffs_subquery))
)
async def get_tariff_distribution(
@@ -80,6 +98,14 @@ async def get_tariff_durations(session: AsyncSession, tariff_ids: list[int]) ->
return dict(result.all())
async def get_tariff_subgroups(session: AsyncSession, tariff_ids: list[int]) -> dict[int, str | None]:
if not tariff_ids:
return {}
result = await session.execute(select(Tariff.id, Tariff.subgroup_title).where(Tariff.id.in_(tariff_ids)))
return dict(result.all())
async def count_total_referrals(session: AsyncSession) -> int:
return await session.scalar(select(func.count()).select_from(Referral))