Files
2024-03-04 14:14:03 +01:00

73 lines
1.9 KiB
Python

from prisma.models import Deployment
from prisma.types import DeploymentWhereInput
from codex.api_model import DeploymentMetadata, DeploymentsListResponse, Pagination
async def get_deployment(deployment_id: str) -> Deployment:
deployment = await Deployment.prisma().find_unique_or_raise(
where={"id": deployment_id, "deleted": False},
)
return deployment
async def delete_deployment(deployment_id: str) -> None:
await Deployment.prisma().update(
where={
"id": deployment_id,
},
data={"deleted": True},
)
async def list_deployments(
user_id: str, deliverable_id: str, page: int, page_size: int
) -> DeploymentsListResponse:
skip = (page - 1) * page_size
total_items = await Deployment.prisma().count(
where=DeploymentWhereInput(
completedAppId=deliverable_id,
userId=user_id,
deleted=False,
)
)
if total_items == 0:
return DeploymentsListResponse(
deployments=[],
pagination=Pagination(
total_items=0, total_pages=0, current_page=0, page_size=0
),
)
deployments = await Deployment.prisma().find_many(
skip=skip,
take=page_size,
where=DeploymentWhereInput(
completedAppId=deliverable_id,
userId=user_id,
deleted=False,
),
)
ret_deployments = [
DeploymentMetadata(
id=deployment.id,
created_at=deployment.createdAt,
file_name=deployment.fileName,
file_size=deployment.fileSize,
)
for deployment in deployments
]
total_pages = (total_items + page_size - 1) // page_size
pagination = Pagination(
total_items=total_items,
total_pages=total_pages,
current_page=page,
page_size=page_size,
)
return DeploymentsListResponse(deployments=ret_deployments, pagination=pagination)