UNPKG

@tricoteuses/senat

Version:

Handle French Sénat's open data

58 lines (57 loc) 1.68 kB
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; };