35 lines
886 B
Python
35 lines
886 B
Python
from sqlalchemy import select
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
|
|
from .models import User
|
|
|
|
|
|
async def get_user_by_tg_id(session: AsyncSession, user_tg_id: int) -> User | None:
|
|
result = await session.execute(select(User).where(User.tg_id == user_tg_id))
|
|
return result.scalar_one_or_none()
|
|
|
|
|
|
async def create_user(
|
|
session: AsyncSession,
|
|
tg_id: int,
|
|
fullname: str,
|
|
phone: str = "",
|
|
role: str = "user",
|
|
) -> User:
|
|
user = User(tg_id=tg_id, fullname=fullname, role=role, phone=phone)
|
|
session.add(user)
|
|
await session.commit()
|
|
return user
|
|
|
|
|
|
async def update_user(
|
|
session: AsyncSession, tg_id: int, fullname: str = "", phone: str = ""
|
|
) -> None:
|
|
user = await get_user_by_tg_id(session, tg_id)
|
|
if fullname:
|
|
user.fullname = fullname
|
|
if phone:
|
|
user.phone = phone
|
|
await session.commit()
|
|
return user
|