This commit is contained in:
@@ -428,18 +428,34 @@ export class LauncherService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
listBuildJobs(query: ListLauncherBuildJobsQuery = {}) {
|
listBuildJobs(query: ListLauncherBuildJobsQuery = {}) {
|
||||||
|
const paged = Boolean(query.page || query.limit || query.target || query.since);
|
||||||
const page = toPositiveInt(query.page, 1);
|
const page = toPositiveInt(query.page, 1);
|
||||||
const limit = Math.min(toPositiveInt(query.limit, 30), 100);
|
const limit = Math.min(toPositiveInt(query.limit, 30), 100);
|
||||||
const since = query.since ? new Date(query.since) : null;
|
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({
|
if (!paged) {
|
||||||
where: {
|
return this.prisma.launcherBuildJob.findMany({
|
||||||
...(query.target ? { target: query.target } : {}),
|
orderBy: { createdAt: 'desc' },
|
||||||
...(since && Number.isFinite(since.getTime()) ? { createdAt: { gte: since } } : {}),
|
take: 30,
|
||||||
},
|
});
|
||||||
orderBy: { createdAt: 'desc' },
|
}
|
||||||
skip: (page - 1) * limit,
|
|
||||||
take: limit,
|
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 };
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user