@tricoteuses/senat
Version:
Handle French Sénat's open data
58 lines (57 loc) • 1.68 kB
JavaScript
import { sesFieldsToParseInt, sesFieldsToTrim, subFieldsToParseInt, subFieldsToTrim, txtAmeliFieldsToTrim } from '../types/ameli';
import { dbByName } from "../databases";
import { parseIntFields, trimFieldsRight } from '../fields';
export const getSessFromAnns = async (ids) => {
if (ids.length === 0) {
return [];
}
return (await dbByName.ameli.any(`
SELECT *
FROM ses
WHERE ann IN ($<ids:list>)
`, {
ids,
})).map((ses) => parseIntFields(sesFieldsToParseInt, trimFieldsRight(sesFieldsToTrim, ses)));
};
export const getSubsFromTxtids = async (ids) => {
if (ids.length === 0) {
return [];
}
return (await dbByName.ameli.any(`
SELECT *
FROM sub
WHERE txtid IN($<ids:list>)
`, {
ids,
})).map((sub) => parseIntFields(subFieldsToParseInt, trimFieldsRight(subFieldsToTrim, sub)));
};
export const getTxtsAmeliBySesannNumJoins = async (ids) => {
if (ids.length === 0) {
return [];
}
const txtsAmelis = [];
for (const id of ids) {
const idSplit = id.split(" ");
const sesann = parseInt(idSplit[0]);
const num = idSplit[1];
const txtAmeli = trimFieldsRight(txtAmeliFieldsToTrim, await dbByName.ameli.oneOrNone(`
SELECT *
FROM txt_ameli
WHERE
sesinsid in (
SELECT id
FROM ses
WHERE ann = $<sesann>
) AND
num = $<num>
LIMIT 1
`, {
num,
sesann,
}));
if (txtAmeli !== null) {
txtsAmelis.push(txtAmeli);
}
}
return txtsAmelis;
};