create event
This commit is contained in:
@@ -1,7 +1,9 @@
|
||||
from datetime import datetime
|
||||
|
||||
from sqlalchemy import select
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from .models import User
|
||||
from .models import Event, User
|
||||
|
||||
|
||||
async def get_user_by_tg_id(session: AsyncSession, user_tg_id: int) -> User | None:
|
||||
@@ -19,6 +21,7 @@ async def create_user(
|
||||
user = User(tg_id=tg_id, fullname=fullname, role=role, phone=phone)
|
||||
session.add(user)
|
||||
await session.commit()
|
||||
await session.refresh(user)
|
||||
return user
|
||||
|
||||
|
||||
@@ -32,3 +35,63 @@ async def update_user(
|
||||
user.phone = phone
|
||||
await session.commit()
|
||||
return user
|
||||
|
||||
|
||||
async def get_events_list(session: AsyncSession) -> list[Event]:
|
||||
result = await session.execute(
|
||||
select(Event).where(Event.start_date >= datetime.now())
|
||||
)
|
||||
return result.scalars()
|
||||
|
||||
|
||||
async def get_event_by_id(session: AsyncSession, event_id: int) -> Event:
|
||||
result = await session.execute(select(Event).where(Event.id == event_id))
|
||||
return result.scalar_one_or_none()
|
||||
|
||||
|
||||
async def create_event(
|
||||
session: AsyncSession,
|
||||
title: str,
|
||||
description: str,
|
||||
start_date: datetime,
|
||||
end_date: datetime,
|
||||
) -> Event:
|
||||
event = Event(
|
||||
title=title,
|
||||
description=description,
|
||||
start_date=start_date,
|
||||
end_date=end_date,
|
||||
)
|
||||
session.add(event)
|
||||
await session.commit()
|
||||
await session.refresh(event)
|
||||
return event
|
||||
|
||||
|
||||
async def delete_event(
|
||||
session: AsyncSession,
|
||||
event_id: int,
|
||||
) -> None:
|
||||
session.delete(await get_event_by_id(session, event_id))
|
||||
await session.commit()
|
||||
|
||||
|
||||
async def update_event(
|
||||
session: AsyncSession,
|
||||
event_id: int,
|
||||
title: str = None,
|
||||
description: str = None,
|
||||
start_date: datetime = None,
|
||||
end_date: datetime = None,
|
||||
) -> Event:
|
||||
event = await get_event_by_id(session, event_id)
|
||||
if title:
|
||||
event.title = title
|
||||
if description:
|
||||
event.description = description
|
||||
if start_date:
|
||||
event.start_date = start_date
|
||||
if end_date:
|
||||
event.end_date = end_date
|
||||
await session.commit()
|
||||
return event
|
||||
Reference in New Issue
Block a user