feat(03-03): add update_models and delete_project to service

Add update_project_models(project_id, models) and delete_project(project_id)
functions to complete the project service CRUD operations.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Mikkel Georgsen 2026-01-16 18:54:39 +00:00
parent 8791398b02
commit e2e10d9b2e

View file

@ -69,3 +69,48 @@ async def get_project_by_name(name: str) -> Project | None:
async with get_session() as session:
result = await session.execute(select(Project).where(Project.name.ilike(name)))
return result.scalar_one_or_none()
async def update_project_models(project_id: str, models: list[str]) -> Project | None:
"""Update a project's models list.
Args:
project_id: The project's UUID.
models: List of AI model identifiers.
Returns:
The updated Project object if found, None otherwise.
"""
async with get_session() as session:
result = await session.execute(select(Project).where(Project.id == project_id))
project = result.scalar_one_or_none()
if project is None:
return None
project.models = models
await session.flush()
await session.refresh(project)
return project
async def delete_project(project_id: str) -> bool:
"""Delete a project by ID.
Cascade delete will handle discussions/rounds/messages via SQLAlchemy relationship config.
Args:
project_id: The project's UUID.
Returns:
True if deleted, False if not found.
"""
async with get_session() as session:
result = await session.execute(select(Project).where(Project.id == project_id))
project = result.scalar_one_or_none()
if project is None:
return False
await session.delete(project)
return True