45 lines
1.8 KiB
Python
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))
|