Files
2026-07-26 18:25:37 +09:00

43 lines
1.4 KiB
JavaScript

export function makePaginationQuery(q, sinceId, untilId, sinceDate, untilDate) {
if (sinceId && untilId) {
q.andWhere(`${q.alias}.id > :sinceId`, {
sinceId: sinceId
});
q.andWhere(`${q.alias}.id < :untilId`, {
untilId: untilId
});
q.orderBy(`${q.alias}.id`, "DESC");
} else if (sinceId) {
q.andWhere(`${q.alias}.id > :sinceId`, {
sinceId: sinceId
});
q.orderBy(`${q.alias}.id`, "ASC");
} else if (untilId) {
q.andWhere(`${q.alias}.id < :untilId`, {
untilId: untilId
});
q.orderBy(`${q.alias}.id`, "DESC");
} else if (sinceDate && untilDate) {
q.andWhere(`${q.alias}.createdAt > :sinceDate`, {
sinceDate: new Date(sinceDate)
});
q.andWhere(`${q.alias}.createdAt < :untilDate`, {
untilDate: new Date(untilDate)
});
q.orderBy(`${q.alias}.createdAt`, "DESC");
} else if (sinceDate) {
q.andWhere(`${q.alias}.createdAt > :sinceDate`, {
sinceDate: new Date(sinceDate)
});
q.orderBy(`${q.alias}.createdAt`, "ASC");
} else if (untilDate) {
q.andWhere(`${q.alias}.createdAt < :untilDate`, {
untilDate: new Date(untilDate)
});
q.orderBy(`${q.alias}.createdAt`, "DESC");
} else {
q.orderBy(`${q.alias}.id`, "DESC");
}
return q;
}