PRC_BOT / backend /services /task_service.py
pranit144's picture
Upload 55 files
7ddf739 verified
from __future__ import annotations
from datetime import datetime
from pathlib import Path
from typing import Optional
from .storage import JsonStorage
STORE = JsonStorage(Path(__file__).resolve().parents[1] / "data" / "tasks.json", [])
def list_tasks() -> list[dict]:
tasks = STORE.read()
return sorted(tasks, key=lambda item: (item.get("completed", False), item.get("created_at", "")))
def add_task(text: str) -> dict:
tasks = STORE.read()
next_id = max((task["id"] for task in tasks), default=0) + 1
task = {
"id": next_id,
"text": text.strip(),
"completed": False,
"created_at": datetime.now().isoformat(),
}
tasks.append(task)
STORE.write(tasks)
return task
def complete_task(task_id: int) -> Optional[dict]:
tasks = STORE.read()
updated = None
for task in tasks:
if task["id"] == task_id:
task["completed"] = True
task["completed_at"] = datetime.now().isoformat()
updated = task
break
if updated:
STORE.write(tasks)
return updated
def delete_task(task_id: int) -> Optional[dict]:
tasks = STORE.read()
kept: list[dict] = []
removed = None
for task in tasks:
if task["id"] == task_id:
removed = task
continue
kept.append(task)
if removed:
STORE.write(kept)
return removed