mirror of
https://github.com/Significant-Gravitas/AutoGPT-Code-Ability.git
synced 2026-11-10 08:01:27 -10:00
95 lines
2.5 KiB
Python
95 lines
2.5 KiB
Python
import math
|
|
|
|
from prisma import Prisma
|
|
from pydantic import BaseModel
|
|
|
|
import codex.api_model
|
|
import codex.common.model
|
|
|
|
|
|
async def fetch_application_details(
|
|
page=1, page_size=20
|
|
) -> codex.common.model.ResumePointsList:
|
|
client = Prisma()
|
|
|
|
await client.connect()
|
|
|
|
# Pagination parameters
|
|
offset = (page - 1) * page_size
|
|
|
|
# Pagination parameters
|
|
offset = (page - 1) * page_size
|
|
|
|
# Raw SQL query
|
|
raw_sql = """
|
|
SELECT
|
|
CAST(ROW_NUMBER() OVER (ORDER BY a."updatedAt" DESC) AS VARCHAR) AS id,
|
|
a.name AS name,
|
|
a."updatedAt" AS "updatedAt",
|
|
a."userId" AS "userId",
|
|
a.id AS "applicationId",
|
|
i.id AS "interviewId",
|
|
s.id AS "specificationId",
|
|
ca.id AS "completedAppId",
|
|
d.id AS "deploymentId"
|
|
FROM
|
|
"Application" a
|
|
LEFT JOIN
|
|
"Interview" i ON a.id = i."applicationId" AND i.deleted = false
|
|
LEFT JOIN
|
|
"Specification" s ON i.id = s."interviewId" AND s.deleted = false
|
|
LEFT JOIN
|
|
"CompletedApp" ca ON s.id = ca."specificationId" AND ca.deleted = false
|
|
LEFT JOIN
|
|
"Deployment" d ON ca.id = d."completedAppId" AND d.deleted = false
|
|
WHERE
|
|
a.deleted = false
|
|
ORDER BY
|
|
a."updatedAt" DESC
|
|
LIMIT $1 OFFSET $2
|
|
"""
|
|
|
|
count_raw_sql = """
|
|
SELECT
|
|
COUNT(*)
|
|
FROM
|
|
"Application" a
|
|
LEFT JOIN
|
|
"Interview" i ON a.id = i."applicationId" AND i.deleted = false
|
|
LEFT JOIN
|
|
"Specification" s ON a.id = s."applicationId" AND s.deleted = false
|
|
LEFT JOIN
|
|
"CompletedApp" ca ON s.id = ca."specificationId" AND ca.deleted = false
|
|
LEFT JOIN
|
|
"Deployment" d ON ca.id = d."completedAppId" AND d.deleted = false
|
|
WHERE
|
|
a.deleted = false
|
|
"""
|
|
|
|
# Execute the query
|
|
results = await client.query_raw(
|
|
raw_sql,
|
|
page_size,
|
|
offset,
|
|
model=codex.common.model.ResumePoint,
|
|
)
|
|
|
|
class CountResponse(BaseModel):
|
|
count: int
|
|
|
|
count_resp = await client.query_first(count_raw_sql, model=CountResponse)
|
|
count = 0
|
|
if count_resp:
|
|
count = count_resp.count
|
|
|
|
pages = codex.api_model.Pagination(
|
|
total_items=count,
|
|
total_pages=math.ceil(count / page_size),
|
|
current_page=page,
|
|
page_size=page_size,
|
|
)
|
|
|
|
await client.disconnect()
|
|
|
|
return codex.common.model.ResumePointsList(resume_points=results, pagination=pages)
|