ruff formatting

This commit is contained in:
Vladless
2025-09-30 19:19:05 +03:00
parent 608b520b72
commit 5e5c3f77c7
25 changed files with 218 additions and 160 deletions
+1 -5
View File
@@ -7,11 +7,7 @@ from database.models import Key, Payment, User
async def get_hot_leads(session: AsyncSession):
now_ms = func.extract("epoch", func.now()) * 1000
sub_active = (
select(Key.tg_id)
.where(Key.expiry_time > now_ms)
.distinct()
)
sub_active = select(Key.tg_id).where(Key.expiry_time > now_ms).distinct()
stmt = (
select(Payment.tg_id)
+5 -21
View File
@@ -42,7 +42,6 @@ async def store_key(
await session.commit()
logger.info(f"✅ Ключ сохранён: tg_id={tg_id}, client_id={client_id}, server_id={server_id}")
except SQLAlchemyError as e:
logger.error(f"❌ Ошибка при сохранении ключа: {e}")
await session.rollback()
@@ -118,11 +117,7 @@ async def delete_key(session: AsyncSession, identifier: int | str):
async def update_key_expiry(session: AsyncSession, client_id: str, new_expiry_time: int):
await session.execute(
update(Key)
.where(Key.client_id == client_id)
.values(expiry_time=new_expiry_time)
)
await session.execute(update(Key).where(Key.client_id == client_id).values(expiry_time=new_expiry_time))
await session.commit()
logger.info(f"Срок действия ключа {client_id} обновлён до {new_expiry_time}")
@@ -174,29 +169,18 @@ async def update_key_tariff(session: AsyncSession, client_id: str, tariff_id: in
async def get_subscription_link(session: AsyncSession, email: str) -> str | None:
result = await session.execute(
select(func.coalesce(Key.key, Key.remnawave_link)).where(Key.email == email)
)
result = await session.execute(select(func.coalesce(Key.key, Key.remnawave_link)).where(Key.email == email))
return result.scalar_one_or_none()
async def update_key_client_id(session: AsyncSession, email: str, new_client_id: str):
await session.execute(
update(Key)
.where(Key.email == email)
.values(client_id=new_client_id)
)
await session.execute(update(Key).where(Key.email == email).values(client_id=new_client_id))
await session.commit()
logger.info(f"client_id обновлён для {email} -> {new_client_id}")
async def update_key_link(session: AsyncSession, email: str, link: str) -> bool:
q = (
update(Key)
.where(Key.email == email)
.values(key=link)
.returning(Key.client_id)
)
q = update(Key).where(Key.email == email).values(key=link).returning(Key.client_id)
res = await session.execute(q)
await session.commit()
return res.scalar_one_or_none() is not None
return res.scalar_one_or_none() is not None
+16 -6
View File
@@ -3,10 +3,22 @@ import uuid
from datetime import datetime
from sqlalchemy import JSON, BigInteger, Boolean, Column, DateTime, Float, ForeignKey, Integer, Numeric, String, Text, UniqueConstraint
from sqlalchemy import (
JSON,
BigInteger,
Boolean,
Column,
DateTime,
Float,
ForeignKey,
Integer,
Numeric,
String,
Text,
UniqueConstraint,
)
from sqlalchemy.dialects.postgresql import JSONB
from sqlalchemy.orm import Mapped, declarative_base, mapped_column
from sqlalchemy.orm import relationship
from sqlalchemy.orm import Mapped, declarative_base, mapped_column, relationship
Base = declarative_base()
@@ -111,9 +123,7 @@ class ServerSubgroup(DictLikeMixin, Base):
server = relationship("Server", back_populates="subgroups")
__table_args__ = (
UniqueConstraint("server_id", "subgroup_title", name="uq_server_subgroup"),
)
__table_args__ = (UniqueConstraint("server_id", "subgroup_title", name="uq_server_subgroup"),)
class Payment(DictLikeMixin, Base):
+9 -10
View File
@@ -2,8 +2,7 @@ from sqlalchemy import delete, func, insert, select, update
from sqlalchemy.exc import SQLAlchemyError
from sqlalchemy.ext.asyncio import AsyncSession
from database.models import Key, Server, Tariff, ServerSubgroup
from database.models import Key, Server, ServerSubgroup, Tariff
from logger import logger
@@ -227,13 +226,13 @@ async def update_server_cluster(session: AsyncSession, server_name: str, new_clu
if server_id is not None and new_tariff_group is not None:
await session.execute(
update(ServerSubgroup)
.where(ServerSubgroup.server_id == server_id)
.values(group_code=new_tariff_group)
update(ServerSubgroup).where(ServerSubgroup.server_id == server_id).values(group_code=new_tariff_group)
)
await session.commit()
logger.info(f"✅ Сервер {server_name} перемещен в кластер {new_cluster} с обновлением тарифной группы и привязок подгрупп")
logger.info(
f"✅ Сервер {server_name} перемещен в кластер {new_cluster} с обновлением тарифной группы и привязок подгрупп"
)
return True
except SQLAlchemyError as e:
logger.error(f"❌ Ошибка при обновлении кластера сервера {server_name}: {e}")
@@ -256,7 +255,9 @@ async def resolve_device_limit_from_group(session: AsyncSession, server_id: str)
return int(dl) if dl is not None else None
async def filter_cluster_by_subgroup(session: AsyncSession, cluster: list, target_subgroup: str, cluster_id: str) -> list:
async def filter_cluster_by_subgroup(
session: AsyncSession, cluster: list, target_subgroup: str, cluster_id: str
) -> list:
names = [s.get("server_name") for s in cluster if s.get("server_name")]
if not names:
return []
@@ -275,9 +276,7 @@ async def filter_cluster_by_subgroup(session: AsyncSession, cluster: list, targe
return [s for s in cluster if s.get("server_name") in allowed]
total_for_subgroup = await session.scalar(
select(func.count())
.select_from(ServerSubgroup)
.where(ServerSubgroup.subgroup_title == target_subgroup)
select(func.count()).select_from(ServerSubgroup).where(ServerSubgroup.subgroup_title == target_subgroup)
)
if not total_for_subgroup:
logger.info(f"Для подгруппы {target_subgroup} нет ни одного сервера. Используем весь кластер {cluster_id}.")