mirror of
https://gitlab.com/wgp/dougal/software.git
synced 2025-12-06 09:47:08 +00:00
36 lines
1.1 KiB
JavaScript
36 lines
1.1 KiB
JavaScript
const { setSurvey } = require('../connection');
|
|
|
|
async function list (projectId, opts = {}) {
|
|
const client = await setSurvey(projectId);
|
|
|
|
const sortFields = [ "sequence", "shot_number", "ts0", "ts1", "label", "remarks" ];
|
|
const sortKey = opts.sortBy && sortFields.includes(opts.sortBy) && opts.sortBy || "ts0";
|
|
const sortDir = (opts.sortDesc == "true" || !opts.sortDesc) ? "DESC" : "ASC";
|
|
const offset = Math.abs((opts.page-1)*opts.itemsPerPage) || 0;
|
|
const limit = Math.abs(Number(opts.itemsPerPage)) || null;
|
|
|
|
const filter = opts.sequence
|
|
? opts.sequence.includes(";")
|
|
? [ "sequence = ANY ( $1 )", [ opts.sequence.split(";") ] ]
|
|
: [ "sequence = $1", [ opts.sequence ] ]
|
|
: opts.date0
|
|
? opts.date1
|
|
? [ "date(ts0) BETWEEN SYMMETRIC $1 AND $2", [ opts.date0, opts.date1 ] ]
|
|
: [ "date(ts0) = $1", [ opts.date0 ] ]
|
|
: [ "true = true", [] ];
|
|
|
|
const text = `
|
|
SELECT *
|
|
FROM events
|
|
WHERE
|
|
${filter[0]}
|
|
ORDER BY ${sortKey} ${sortDir};
|
|
`;
|
|
|
|
const res = await client.query(text, filter[1]);
|
|
client.release();
|
|
return res.rows;
|
|
}
|
|
|
|
module.exports = list;
|