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:
parent
8791398b02
commit
e2e10d9b2e
1 changed files with 45 additions and 0 deletions
|
|
@ -69,3 +69,48 @@ async def get_project_by_name(name: str) -> Project | None:
|
||||||
async with get_session() as session:
|
async with get_session() as session:
|
||||||
result = await session.execute(select(Project).where(Project.name.ilike(name)))
|
result = await session.execute(select(Project).where(Project.name.ilike(name)))
|
||||||
return result.scalar_one_or_none()
|
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
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue