support paged launcher history queries
ci/woodpecker/push/woodpecker Pipeline was successful

This commit is contained in:
2026-07-07 09:25:03 +09:00
parent 0951283c8b
commit 2b46274865
+24 -8
View File
@@ -428,18 +428,34 @@ export class LauncherService {
}
listBuildJobs(query: ListLauncherBuildJobsQuery = {}) {
const paged = Boolean(query.page || query.limit || query.target || query.since);
const page = toPositiveInt(query.page, 1);
const limit = Math.min(toPositiveInt(query.limit, 30), 100);
const since = query.since ? new Date(query.since) : null;
const where = {
...(query.target ? { target: query.target } : {}),
...(since && Number.isFinite(since.getTime()) ? { createdAt: { gte: since } } : {}),
};
return this.prisma.launcherBuildJob.findMany({
where: {
...(query.target ? { target: query.target } : {}),
...(since && Number.isFinite(since.getTime()) ? { createdAt: { gte: since } } : {}),
},
orderBy: { createdAt: 'desc' },
skip: (page - 1) * limit,
take: limit,
if (!paged) {
return this.prisma.launcherBuildJob.findMany({
orderBy: { createdAt: 'desc' },
take: 30,
});
}
return this.prisma.$transaction(async (tx) => {
const [jobs, total] = await Promise.all([
tx.launcherBuildJob.findMany({
where,
orderBy: { createdAt: 'desc' },
skip: (page - 1) * limit,
take: limit,
}),
tx.launcherBuildJob.count({ where }),
]);
return { jobs, total, page, limit };
});
}