mirror of
https://github.com/stijndcl/didier.git
synced 2026-04-07 15:48:29 +02:00
Add birthday task, change migrations to use date instead of datetime
This commit is contained in:
parent
adcf94c66e
commit
8bc0f1fa7a
18 changed files with 249 additions and 49 deletions
|
|
@ -1,3 +1,4 @@
|
|||
import datetime
|
||||
from datetime import date
|
||||
from typing import Optional
|
||||
|
||||
|
|
@ -32,3 +33,7 @@ async def get_birthday_for_user(session: AsyncSession, user_id: int) -> Optional
|
|||
"""Find a user's birthday"""
|
||||
statement = select(Birthday).where(Birthday.user_id == user_id)
|
||||
return (await session.execute(statement)).scalar_one_or_none()
|
||||
|
||||
|
||||
async def get_birthdays_on_day(session: AsyncSession, day: datetime.datetime) -> list[Birthday]:
|
||||
"""Get all birthdays that happen on a given day"""
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ async def claim_nightly(session: AsyncSession, user_id: int):
|
|||
|
||||
now = datetime.now()
|
||||
|
||||
if nightly_data.last_nightly is not None and nightly_data.last_nightly.date() == now.date():
|
||||
if nightly_data.last_nightly is not None and nightly_data.last_nightly == now.date():
|
||||
raise exceptions.DoubleNightly
|
||||
|
||||
bank = await get_bank(session, user_id)
|
||||
|
|
|
|||
32
database/crud/tasks.py
Normal file
32
database/crud/tasks.py
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
import datetime
|
||||
from typing import Optional
|
||||
|
||||
from sqlalchemy import select
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from database.enums import TaskType
|
||||
from database.models import Task
|
||||
from database.utils.datetime import LOCAL_TIMEZONE
|
||||
|
||||
__all__ = ["get_task_by_enum", "set_last_task_execution_time"]
|
||||
|
||||
|
||||
async def get_task_by_enum(session: AsyncSession, task: TaskType) -> Optional[Task]:
|
||||
"""Get a task by its enum value, if it exists
|
||||
|
||||
Returns None if the task does not exist
|
||||
"""
|
||||
statement = select(Task).where(Task.task == task)
|
||||
return (await session.execute(statement)).scalar_one_or_none()
|
||||
|
||||
|
||||
async def set_last_task_execution_time(session: AsyncSession, task: TaskType):
|
||||
"""Set the last time a specific task was executed"""
|
||||
_task = await get_task_by_enum(session, task)
|
||||
|
||||
if _task is None:
|
||||
_task = Task(task=task)
|
||||
|
||||
_task.previous_run = datetime.datetime.now(tz=LOCAL_TIMEZONE)
|
||||
session.add(_task)
|
||||
await session.commit()
|
||||
Loading…
Add table
Add a link
Reference in a new issue