Files
Solo_bot/database/access/tg_mirror.py
T
2026-04-14 07:19:14 +00:00

45 lines
1.8 KiB
Python

from __future__ import annotations
from sqlalchemy import select, update
from sqlalchemy.ext.asyncio import AsyncSession
from database.models import (
BlockedUser,
CouponUsage,
Gift,
GiftUsage,
Key,
ManualBan,
Notification,
Payment,
Referral,
TemporaryData,
User,
)
def mirror_telegram_id(user: User | None) -> int | None:
if user is None:
return None
return user.tg_id
async def refresh_tg_mirrors_for_user(session: AsyncSession, user_id: int) -> None:
r = await session.execute(select(User.tg_id).where(User.id == user_id))
tg = r.scalar_one_or_none()
await session.execute(update(Key).where(Key.user_id == user_id).values(tg_id=tg))
await session.execute(update(Payment).where(Payment.user_id == user_id).values(tg_id=tg))
await session.execute(update(Notification).where(Notification.user_id == user_id).values(tg_id=tg))
await session.execute(update(GiftUsage).where(GiftUsage.user_id == user_id).values(tg_id=tg))
await session.execute(update(CouponUsage).where(CouponUsage.user_id == user_id).values(tg_id=tg))
await session.execute(update(TemporaryData).where(TemporaryData.user_id == user_id).values(tg_id=tg))
await session.execute(update(BlockedUser).where(BlockedUser.user_id == user_id).values(tg_id=tg))
await session.execute(update(ManualBan).where(ManualBan.user_id == user_id).values(tg_id=tg))
await session.execute(update(Referral).where(Referral.referred_user_id == user_id).values(referred_tg_id=tg))
await session.execute(update(Referral).where(Referral.referrer_user_id == user_id).values(referrer_tg_id=tg))
await session.execute(update(Gift).where(Gift.sender_user_id == user_id).values(sender_tg_id=tg))
await session.execute(update(Gift).where(Gift.recipient_user_id == user_id).values(recipient_tg_id=tg))