mirror of
https://github.com/stijndcl/didier.git
synced 2026-04-07 23:55:46 +02:00
Create reminders, fix bugs in schedule parsing
This commit is contained in:
parent
00a146cb2b
commit
d03ece6f58
9 changed files with 199 additions and 17 deletions
42
database/crud/reminders.py
Normal file
42
database/crud/reminders.py
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
from typing import Optional
|
||||
|
||||
from sqlalchemy import delete, select
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from database.crud.users import get_or_add_user
|
||||
from database.enums import ReminderCategory
|
||||
from database.schemas import Reminder
|
||||
|
||||
__all__ = ["get_all_reminders_for_category", "toggle_reminder"]
|
||||
|
||||
|
||||
async def get_all_reminders_for_category(session: AsyncSession, category: ReminderCategory) -> list[Reminder]:
|
||||
"""Get a list of all Reminders for a given category"""
|
||||
statement = select(Reminder).where(Reminder.category == category)
|
||||
return (await session.execute(statement)).scalars().all()
|
||||
|
||||
|
||||
async def toggle_reminder(session: AsyncSession, user_id: int, category: ReminderCategory) -> bool:
|
||||
"""Switch a category on/off
|
||||
|
||||
Returns the new value for the category
|
||||
"""
|
||||
await get_or_add_user(session, user_id)
|
||||
|
||||
select_statement = select(Reminder).where(Reminder.user_id == user_id).where(Reminder.category == category)
|
||||
reminder: Optional[Reminder] = (await session.execute(select_statement)).scalar_one_or_none()
|
||||
|
||||
# No reminder set yet
|
||||
if reminder is None:
|
||||
reminder = Reminder(user_id=user_id, category=category)
|
||||
session.add(reminder)
|
||||
await session.commit()
|
||||
|
||||
return True
|
||||
|
||||
# Reminder found -> delete it
|
||||
delete_statement = delete(Reminder).where(Reminder.reminder_id == reminder.reminder_id)
|
||||
await session.execute(delete_statement)
|
||||
await session.commit()
|
||||
|
||||
return False
|
||||
Loading…
Add table
Add a link
Reference in a new issue