Task Lifecycle
Create a task, update it, complete it, then reopen it
01
Sample Code
from uuid import uuid4
from datetime import datetime, UTC
from psp.components.todos.domain import (
Task, TaskContainer, TaskStatus, Priority, ContainerType,
)
from psp.components.todos.adapters.persistence import (
InMemoryTaskRepository, InMemoryTaskContainerRepository,
)
# Setup
task_repo = InMemoryTaskRepository()
container_repo = InMemoryTaskContainerRepository()
owner_id = uuid4()
now = datetime.now(UTC)
# Create a container first
inbox = TaskContainer(
id=uuid4(),
owner_id=owner_id,
name="Inbox",
container_type=ContainerType.LIST,
)
container_repo.save(inbox)
# Create a task
task = Task(
id=uuid4(),
owner_id=owner_id,
container_id=inbox.id,
title="Buy groceries",
priority=Priority.MEDIUM,
created_at=now,
updated_at=now,
)
task_repo.save(task)
print(f"Created: {task.title} [{task.status.value}]")
# Complete the task
completed_task = task.complete(datetime.now(UTC))
task_repo.save(completed_task)
print(f"Completed: {completed_task.title} at {completed_task.completed_at}")
# Reopen the task
reopened_task = completed_task.reopen(datetime.now(UTC))
task_repo.save(reopened_task)
print(f"Reopened: {reopened_task.title} [{reopened_task.status.value}]")