Files
dougal-software/lib/www/server/lib/db/event/list.js
2020-08-16 10:46:54 +02:00

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;