bot works as echo (adding templates s functional)
tpl_list dont
This commit is contained in:
@@ -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
30
app/services/users.py
Normal 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
|
||||
Reference in New Issue
Block a user