feat(link_codes): linking method between telegram and website
This commit is contained in:
34
repositories/link_codes.py
Normal file
34
repositories/link_codes.py
Normal file
@@ -0,0 +1,34 @@
|
||||
from datetime import datetime
|
||||
|
||||
from sqlalchemy import select
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from db.models.link_codes import LinkCode
|
||||
from schemas.enums import LinkCodeStatus
|
||||
|
||||
|
||||
async def create_link_code(
|
||||
session: AsyncSession,
|
||||
*,
|
||||
code: str,
|
||||
user_id: int,
|
||||
status: LinkCodeStatus,
|
||||
expires_at: datetime,
|
||||
) -> LinkCode:
|
||||
link_code = LinkCode(
|
||||
code=code,
|
||||
user_id=user_id,
|
||||
status=status,
|
||||
expires_at=expires_at,
|
||||
)
|
||||
|
||||
session.add(link_code)
|
||||
await session.commit()
|
||||
return link_code
|
||||
|
||||
|
||||
async def get_link_code_by_code(session: AsyncSession, code: str) -> LinkCode | None:
|
||||
stmt = select(LinkCode).where(LinkCode.code == code)
|
||||
r = await session.execute(stmt)
|
||||
|
||||
return r.scalar_one_or_none()
|
||||
@@ -69,3 +69,9 @@ class UserRepository:
|
||||
user.balance += amount
|
||||
await self.session.commit()
|
||||
return user
|
||||
|
||||
async def update_telegram_id(self, user: User, telegram_id: int) -> User:
|
||||
user.telegram_id = telegram_id
|
||||
await self.session.commit()
|
||||
|
||||
return user
|
||||
|
||||
Reference in New Issue
Block a user