Files
AutoGPT-Code-Ability/codex/develop/database.py
T
2024-02-22 10:37:06 +01:00

54 lines
1.5 KiB
Python

from typing import List, Tuple
from prisma.models import CompletedApp
from codex.api_model import DeliverableResponse, DeliverablesListResponse, Pagination
async def get_deliverable(
user_id: str, app_id: str, spec_id: str, deliverable_id: str
) -> CompletedApp:
completed_app = await CompletedApp.prisma().find_unique_or_raise(
where={"id": deliverable_id},
include={"CompiledRoutes": True},
)
return completed_app
async def delete_deliverable(
user_id: str, app_id: str, spec_id: str, deliverable_id: str
) -> None:
await CompletedApp.prisma().update(
where={"id": deliverable_id},
data={"deleted": True},
)
async def list_deliverables(
user_id: str,
app_id: str,
spec_id: str,
page: int = 1,
page_size: int = 10,
) -> Tuple[List[CompletedApp], Pagination]:
skip = (page - 1) * page_size
total_items = await CompletedApp.prisma().count(where={"specificationId": spec_id})
if total_items == 0:
return [], Pagination(total_items=0, total_pages=0, current_page=0, page_size=0)
total_pages = (total_items + page_size - 1) // page_size
completed_apps_data = await CompletedApp.prisma().find_many(
skip=skip,
take=page_size,
include={"CompiledRoutes": True},
)
pagination = Pagination(
total_items=total_items,
total_pages=total_pages,
current_page=page,
page_size=page_size,
)
return completed_apps_data, pagination