bot works as echo (adding templates s functional)

tpl_list dont
This commit is contained in:
2025-08-19 05:13:16 +09:00
parent a8d860ed87
commit 18a92ca526
7 changed files with 274 additions and 47 deletions

View File

@@ -35,9 +35,9 @@ async def list_templates(owner_id: Optional[int] = None, limit: Optional[int] =
List[Template]: Список шаблонов
"""
async with async_session_maker() as session:
query = Template.__table__.select()
query = select(Template)
if owner_id is not None:
query = query.where(Template.__table__.c.owner_id == owner_id)
query = query.where(Template.owner_id == owner_id)
if offset is not None:
query = query.offset(offset)
if limit is not None:
@@ -45,6 +45,8 @@ async def list_templates(owner_id: Optional[int] = None, limit: Optional[int] =
result = await session.execute(query)
return list(result.scalars())
from app.services.users import get_or_create_user
async def create_template(template_data: Dict[str, Any]) -> Template:
"""Создать новый шаблон.
@@ -54,6 +56,12 @@ async def create_template(template_data: Dict[str, Any]) -> Template:
Returns:
Template: Созданный шаблон
"""
# Проверяем owner_id и создаем пользователя если нужно
tg_user_id = template_data.pop("tg_user_id", None)
if tg_user_id:
user = await get_or_create_user(tg_user_id)
template_data["owner_id"] = user.id
async with async_session_maker() as session:
template = Template(**template_data)
session.add(template)

30
app/services/users.py Normal file
View File

@@ -0,0 +1,30 @@
"""Сервис для работы с пользователями."""
from typing import Optional
from sqlalchemy import select
from app.db.session import async_session_maker
from app.models.user import User
async def get_or_create_user(tg_user_id: int, username: Optional[str] = None) -> User:
"""Получить или создать пользователя.
Args:
tg_user_id: ID пользователя в Telegram
username: Имя пользователя в Telegram
Returns:
User: Объект пользователя
"""
async with async_session_maker() as session:
# Пробуем найти пользователя
query = select(User).where(User.tg_user_id == tg_user_id)
result = await session.execute(query)
user = result.scalar_one_or_none()
if not user:
# Создаем нового пользователя
user = User(tg_user_id=tg_user_id, username=username)
session.add(user)
await session.commit()
await session.refresh(user)
return user