@tricoteuses/senat
Version:
Handle French Sénat's open data
803 lines (802 loc) • 33.1 kB
JavaScript
import { getSessFromAnns, getSubsFromTxtids, getTxtsAmeliBySesannNumJoins, } from './model/ameli';
import { getDebats, getDebatsFromLecassidts, getLecAssDebsFromDatseas, } from './model/debats';
import { getAsss, getAudsFromLecassidts, getAuteurs, getDatesSeancesFromLecassidts, getDeccocs, getDenraps, getDocattsFromRapcods, getEcrsFromRapcods, getEcrsFromTexcods, getEtalois, getLecassrapsFromLecassidts, getLecasssFromLecidts, getLecturesFromLoicods, getLois, getOrgs, getOrgsFromRapcods, getOritxts, getQuas, getRaporgsFromOrgcods, getRaps, getScrsFromCodes, getTextesFromLecassidts, getTypatts, getTyplecs, getTyplois, getTyptxts, getTypurls, } from './model/dosleg';
export const allFollows = [
"aud.org",
"auteur.qua",
"dateSeance.debat",
"dateSeance.scrs",
"docatt.rec",
"docatt.typatt",
"ecr.aut",
"lecass.ass",
"lecass.auds",
"lecass.datesSeances",
"lecass.debats",
"lecass.lecassraps",
"lecass.org",
"lecass.textes",
"lecassrap.rap",
"lecture.lecasss",
"lecture.typlec",
"loi.deccoc",
"loi.etaloi",
"loi.lectures",
"loi.typloi",
"rap.denrap",
"rap.docatts",
"rap.ecrs",
"rap.orgs",
"texte.ecrs",
"texte.org",
"texte.oritxt",
"texte.txtAmeli",
"texte.typtxt",
"texte.typurl",
"txtAmeli.subs",
];
export class Aggregator {
follow;
objectByIdByTableName = {};
requestedIdsByTableName = {};
visitedIdsByTableName = {};
constructor(follow) {
this.follow = follow;
}
addAss(ass) {
let objectById = this.objectByIdByTableName.ass;
if (objectById === undefined) {
objectById = this.objectByIdByTableName.ass = {};
}
objectById[ass.codass] = ass;
}
addAud(aud) {
let objectById = this.objectByIdByTableName.aud;
if (objectById === undefined) {
objectById = this.objectByIdByTableName.aud = {};
}
objectById[aud.audcle] = aud;
if (aud.orgcod !== null && this.follow.has("aud.org")) {
this.request("org", aud.orgcod);
}
}
addAuteur(auteur) {
let objectById = this.objectByIdByTableName.auteur;
if (objectById === undefined) {
objectById = this.objectByIdByTableName.auteur = {};
}
objectById[auteur.autcod] = auteur;
if (this.follow.has("auteur.qua")) {
this.request("qua", auteur.quacod);
}
// TODO
}
addDateSeance(dateSeance) {
let objectById = this.objectByIdByTableName.date_seance;
if (objectById === undefined) {
objectById = this.objectByIdByTableName.date_seance = {};
}
objectById[dateSeance.code] = dateSeance;
if (dateSeance.date_s !== null && this.follow.has("dateSeance.debat")) {
this.request("debats", dateSeance.date_s.toISOString());
}
if (this.follow.has("dateSeance.scrs")) {
this.request("scr_by_code", dateSeance.code.toString());
}
}
addDebat(debat) {
let objectById = this.objectByIdByTableName.debats;
if (objectById === undefined) {
objectById = this.objectByIdByTableName.debats = {};
}
objectById[debat.datsea.toISOString()] = debat;
}
addDeccoc(deccoc) {
let objectById = this.objectByIdByTableName.deccoc;
if (objectById === undefined) {
objectById = this.objectByIdByTableName.deccoc = {};
}
objectById[deccoc.deccoccod] = deccoc;
}
addDenrap(denrap) {
let objectById = this.objectByIdByTableName.denrap;
if (objectById === undefined) {
objectById = this.objectByIdByTableName.denrap = {};
}
objectById[denrap.coddenrap] = denrap;
}
addDocatt(docatt) {
let objectById = this.objectByIdByTableName.docatt;
if (objectById === undefined) {
objectById = this.objectByIdByTableName.docatt = {};
}
objectById[docatt.docattcle] = docatt;
if (this.follow.has("docatt.rap")) {
this.request("rap", docatt.rapcod.toString());
}
if (this.follow.has("docatt.typatt")) {
this.request("typatt", docatt.rapcod.toString());
}
}
addEcr(ecr) {
let objectById = this.objectByIdByTableName.ecr;
if (objectById === undefined) {
objectById = this.objectByIdByTableName.ecr = {};
}
objectById[ecr.ecrnum] = ecr;
if (ecr.autcod !== null && this.follow.has("ecr.aut")) {
this.request("auteur", ecr.autcod);
}
}
addEtaloi(etaloi) {
let objectById = this.objectByIdByTableName.etaloi;
if (objectById === undefined) {
objectById = this.objectByIdByTableName.etaloi = {};
}
objectById[etaloi.etaloicod] = etaloi;
}
addLecass(lecass) {
let objectById = this.objectByIdByTableName.lecass;
if (objectById === undefined) {
objectById = this.objectByIdByTableName.lecass = {};
}
objectById[lecass.lecassidt] = lecass;
if (this.follow.has("lecass.ass")) {
this.request("ass", lecass.codass);
}
if (lecass.orgcod !== null && this.follow.has("lecass.org")) {
this.request("org", lecass.orgcod);
}
if (this.follow.has("lecass.auds")) {
this.request("aud_by_lecassidt", lecass.lecassidt);
}
if (this.follow.has("lecass.datesSeances")) {
this.request("date_seance_by_lecassidt", lecass.lecassidt);
}
if (this.follow.has("lecass.debats")) {
this.request("debat_by_lecassidt", lecass.lecassidt);
}
if (this.follow.has("lecass.lecassraps")) {
this.request("lecassrap_by_lecassidt", lecass.lecassidt);
}
if (this.follow.has("lecass.textes")) {
this.request("texte_by_lecassidt", lecass.lecassidt);
}
}
addLecassrap(lecassrap) {
let objectById = this.objectByIdByTableName.lecassrap;
if (objectById === undefined) {
objectById = this.objectByIdByTableName.lecassrap = {};
}
objectById[`${lecassrap.lecassidt} ${lecassrap.rapcod}`] = lecassrap;
if (this.follow.has("lecassrap.rap")) {
this.request("rap", lecassrap.rapcod.toString());
}
}
addLecture(lecture) {
let objectById = this.objectByIdByTableName.lecture;
if (objectById === undefined) {
objectById = this.objectByIdByTableName.lecture = {};
}
objectById[lecture.lecidt] = lecture;
if (this.follow.has("lecture.typlec")) {
this.request("typlec", lecture.typleccod);
}
if (this.follow.has("lecture.lecasss")) {
this.request("lecasss_by_lecidt", lecture.lecidt);
}
}
addLoi(loi) {
let objectById = this.objectByIdByTableName.loi;
if (objectById === undefined) {
objectById = this.objectByIdByTableName.loi = {};
}
objectById[loi.loicod] = loi;
if (this.follow.has("loi.typloi")) {
this.request("typloi", loi.typloicod);
}
if (this.follow.has("loi.etaloi") && loi.etaloicod !== null) {
this.request("etaloi", loi.etaloicod);
}
if (this.follow.has("loi.deccoc") && loi.deccoccod !== null) {
this.request("deccoc", loi.deccoccod);
}
if (this.follow.has("loi.lectures")) {
this.request("lectures_by_loicod", loi.loicod);
}
}
addOrg(org) {
let objectById = this.objectByIdByTableName.org;
if (objectById === undefined) {
objectById = this.objectByIdByTableName.org = {};
}
objectById[org.orgcod] = org;
// TODO
}
addOritxt(oritxt) {
let objectById = this.objectByIdByTableName.oritxt;
if (objectById === undefined) {
objectById = this.objectByIdByTableName.oritxt = {};
}
objectById[oritxt.oritxtcod] = oritxt;
// TODO
}
addQua(qua) {
let objectById = this.objectByIdByTableName.qua;
if (objectById === undefined) {
objectById = this.objectByIdByTableName.qua = {};
}
objectById[qua.quacod] = qua;
}
addQuestion(question) {
let objectById = this.objectByIdByTableName.tam_questions;
if (objectById === undefined) {
objectById = this.objectByIdByTableName.tam_questions = {};
}
objectById[question.id] = question;
}
addRap(rap) {
let objectById = this.objectByIdByTableName.rap;
if (objectById === undefined) {
objectById = this.objectByIdByTableName.rap = {};
}
objectById[rap.rapcod.toString()] = rap;
if (this.follow.has("rap.denrap")) {
this.request("denrap", rap.coddenrap);
}
if (this.follow.has("rap.docatts")) {
this.request("docatt_by_rapcod", rap.rapcod.toString());
}
if (this.follow.has("rap.ecrs")) {
this.request("ecr_by_rapcod", rap.rapcod.toString());
}
if (this.follow.has("rap.orgs")) {
this.request("org_by_rapcod", rap.rapcod.toString());
}
// TODO
}
addScr(scr) {
let objectById = this.objectByIdByTableName.scr;
if (objectById === undefined) {
objectById = this.objectByIdByTableName.scr = {};
}
objectById[`${scr.sesann} ${scr.scrnum}`] = scr;
// TODO
}
addSen(sen) {
let objectById = this.objectByIdByTableName.sen;
if (objectById === undefined) {
objectById = this.objectByIdByTableName.sen = {};
}
objectById[sen.senmat] = sen;
}
addSes(ses) {
let objectById = this.objectByIdByTableName.ses;
if (objectById === undefined) {
objectById = this.objectByIdByTableName.ses = {};
}
objectById[ses.id] = ses;
}
addSub(sub) {
let objectById = this.objectByIdByTableName.sub;
if (objectById === undefined) {
objectById = this.objectByIdByTableName.sub = {};
}
objectById[sub.id] = sub;
// TODO
}
addTexte(texte) {
let objectById = this.objectByIdByTableName.texte;
if (objectById === undefined) {
objectById = this.objectByIdByTableName.texte = {};
}
objectById[texte.texcod] = texte;
if (this.follow.has("texte.ecrs")) {
this.request("ecr_by_texcod", texte.texcod.toString());
}
if (texte.orgcod !== null && this.follow.has("texte.org")) {
this.request("org", texte.orgcod);
}
if (texte.oritxtcod !== null && this.follow.has("texte.oritxt")) {
this.request("oritxt", texte.oritxtcod);
}
if (texte.sesann !== null &&
texte.texnum !== null &&
this.follow.has("texte.txtAmeli")) {
this.request("ses_by_ann", texte.sesann.toString());
this.request("txt_ameli_by_sesann_num", `${texte.sesann} ${texte.texnum}`);
}
if (texte.typtxtcod !== null && this.follow.has("texte.typtxt")) {
this.request("typtxt", texte.typtxtcod);
}
if (texte.typurl !== null && this.follow.has("texte.typurl")) {
this.request("typurl", texte.typurl);
}
}
addTxtAmeli(txtAmeli) {
let objectById = this.objectByIdByTableName.txt_ameli;
if (objectById === undefined) {
objectById = this.objectByIdByTableName.txt_ameli = {};
}
objectById[txtAmeli.id] = txtAmeli;
if (this.follow.has("txtAmeli.subs")) {
this.request("sub_by_txtid", txtAmeli.id.toString());
}
// TODO
}
addTypatt(typatt) {
let objectById = this.objectByIdByTableName.typatt;
if (objectById === undefined) {
objectById = this.objectByIdByTableName.typatt = {};
}
objectById[typatt.typattcod] = typatt;
}
addTyplec(typlec) {
let objectById = this.objectByIdByTableName.typlec;
if (objectById === undefined) {
objectById = this.objectByIdByTableName.typlec = {};
}
objectById[typlec.typleccod] = typlec;
}
addTyploi(typloi) {
let objectById = this.objectByIdByTableName.typloi;
if (objectById === undefined) {
objectById = this.objectByIdByTableName.typloi = {};
}
objectById[typloi.typloicod] = typloi;
// TODO
}
addTyptxt(typtxt) {
let objectById = this.objectByIdByTableName.typtxt;
if (objectById === undefined) {
objectById = this.objectByIdByTableName.typtxt = {};
}
objectById[typtxt.typtxtcod] = typtxt;
}
addTypurl(typurl) {
let objectById = this.objectByIdByTableName.typurl;
if (objectById === undefined) {
objectById = this.objectByIdByTableName.typurl = {};
}
objectById[typurl.typurl] = typurl;
}
async getAll() {
while (Object.keys(this.requestedIdsByTableName).length > 0) {
for (const [tableName, requestedIdsSet] of Object.entries(this.requestedIdsByTableName)) {
const requestedIds = [...requestedIdsSet];
delete this.requestedIdsByTableName[tableName];
switch (tableName) {
case "ass": {
;
(await getAsss(requestedIds)).map(this.addAss.bind(this));
break;
}
case "aud_by_lecassidt": {
;
(await getAudsFromLecassidts(requestedIds)).map(this.addAud.bind(this));
break;
}
case "auteur": {
;
(await getAuteurs(requestedIds)).map(this.addAuteur.bind(this));
break;
}
case "date_seance_by_lecassidt": {
;
(await getDatesSeancesFromLecassidts(requestedIds)).map(this.addDateSeance.bind(this));
break;
}
case "debat_by_lecassidt": {
;
(await getDebatsFromLecassidts(requestedIds)).map(this.addDebat.bind(this));
break;
}
case "debats": {
;
(await getDebats(requestedIds)).map(this.addDebat.bind(this));
break;
}
case "deccoc": {
;
(await getDeccocs(requestedIds)).map(this.addDeccoc.bind(this));
break;
}
case "denrap": {
;
(await getDenraps(requestedIds)).map(this.addDenrap.bind(this));
break;
}
case "docatt_by_rapcod": {
;
(await getDocattsFromRapcods(requestedIds)).map(this.addDocatt.bind(this));
break;
}
case "ecr_by_rapcod": {
;
(await getEcrsFromRapcods(requestedIds)).map(this.addEcr.bind(this));
break;
}
case "ecr_by_texcod": {
;
(await getEcrsFromTexcods(requestedIds)).map(this.addEcr.bind(this));
break;
}
case "etaloi": {
;
(await getEtalois(requestedIds)).map(this.addEtaloi.bind(this));
break;
}
case "lecasss_by_lecidt": {
;
(await getLecasssFromLecidts(requestedIds)).map(this.addLecass.bind(this));
break;
}
case "lecassrap_by_lecassidt": {
;
(await getLecassrapsFromLecassidts(requestedIds)).map(this.addLecassrap.bind(this));
break;
}
case "lectures_by_loicod": {
;
(await getLecturesFromLoicods(requestedIds)).map(this.addLecture.bind(this));
break;
}
case "loi": {
;
(await getLois(requestedIds)).map(this.addLoi.bind(this));
break;
}
case "org": {
;
(await getOrgs(requestedIds)).map(this.addOrg.bind(this));
break;
}
case "org_by_rapcod": {
;
(await getOrgsFromRapcods(requestedIds)).map(this.addOrg.bind(this));
break;
}
case "oritxt": {
;
(await getOritxts(requestedIds)).map(this.addOritxt.bind(this));
break;
}
case "qua": {
;
(await getQuas(requestedIds)).map(this.addQua.bind(this));
break;
}
case "rap": {
;
(await getRaps(requestedIds)).map(this.addRap.bind(this));
break;
}
case "scr_by_code": {
;
(await getScrsFromCodes(requestedIds)).map(this.addScr.bind(this));
break;
}
case "ses_by_ann": {
;
(await getSessFromAnns(requestedIds)).map(this.addSes.bind(this));
break;
}
case "sub_by_txtid": {
;
(await getSubsFromTxtids(requestedIds)).map(this.addSub.bind(this));
break;
}
case "texte_by_lecassidt": {
;
(await getTextesFromLecassidts(requestedIds)).map(this.addTexte.bind(this));
break;
}
case "txt_ameli_by_sesann_num": {
;
(await getTxtsAmeliBySesannNumJoins(requestedIds)).map(this.addTxtAmeli.bind(this));
break;
}
case "typatt": {
;
(await getTypatts(requestedIds)).map(this.addTypatt.bind(this));
break;
}
case "typlec": {
;
(await getTyplecs(requestedIds)).map(this.addTyplec.bind(this));
break;
}
case "typloi": {
;
(await getTyplois(requestedIds)).map(this.addTyploi.bind(this));
break;
}
case "typtxt": {
;
(await getTyptxts(requestedIds)).map(this.addTyptxt.bind(this));
break;
}
case "typurl": {
;
(await getTypurls(requestedIds)).map(this.addTypurl.bind(this));
break;
}
default:
throw new Error(`Unhandled table: ${tableName}`);
}
let visitedIds = this.visitedIdsByTableName[tableName];
this.visitedIdsByTableName[tableName] =
visitedIds === undefined
? new Set(requestedIds)
: new Set([...visitedIds, ...requestedIds]);
}
}
// Add "1 to many" and other computed references.
if (this.follow.has("dateSeance.scrs")) {
const scrById = this.objectByIdByTableName.scr;
const dateSeanceByCode = this.objectByIdByTableName.date_seance;
if (scrById !== undefined && dateSeanceByCode !== undefined) {
for (const scr of Object.values(scrById)) {
const scrCode = scr.code;
if (scrCode === null) {
continue;
}
const dateSeance = dateSeanceByCode[scrCode];
if (dateSeance !== undefined) {
let scrids = dateSeance.scrids;
if (scrids === undefined) {
scrids = dateSeance.scrids = [];
}
scrids.push(`${scr.sesann} ${scr.scrnum}`);
}
}
}
}
if (this.follow.has("lecass.auds")) {
const audByAudcle = this.objectByIdByTableName.aud;
const lecassByLecassidt = this.objectByIdByTableName.lecass;
if (audByAudcle !== undefined && lecassByLecassidt !== undefined) {
for (const aud of Object.values(audByAudcle)) {
const lecass = lecassByLecassidt[aud.lecassidt];
if (lecass !== undefined) {
let audcles = lecass.audcles;
if (audcles === undefined) {
audcles = lecass.audcles = [];
}
audcles.push(aud.audcle);
}
}
}
}
if (this.follow.has("lecass.datesSeances")) {
const dateSeanceByCode = this.objectByIdByTableName.date_seance;
const lecassByLecassidt = this.objectByIdByTableName.lecass;
if (dateSeanceByCode !== undefined && lecassByLecassidt !== undefined) {
for (const dateSeance of Object.values(dateSeanceByCode)) {
const lecassidt = dateSeance.lecidt;
if (lecassidt === null) {
continue;
}
const lecass = lecassByLecassidt[lecassidt];
if (lecass !== undefined) {
let datesSeancesCodes = lecass.datesSeancesCodes;
if (datesSeancesCodes === undefined) {
datesSeancesCodes = lecass.datesSeancesCodes = [];
}
datesSeancesCodes.push(dateSeance.code);
}
}
}
}
if (this.follow.has("lecass.debats")) {
const debatById = this.objectByIdByTableName.debats;
const lecassByLecassidt = this.objectByIdByTableName.lecass;
if (debatById !== undefined && lecassByLecassidt !== undefined) {
const lecassdebs = await getLecAssDebsFromDatseas(Object.keys(debatById));
for (const lecassdeb of lecassdebs) {
const lecass = lecassByLecassidt[lecassdeb.lecassidt];
if (lecass !== undefined) {
let debatdatseas = lecass.debatdatseas;
if (debatdatseas === undefined) {
debatdatseas = lecass.debatdatseas = [];
}
debatdatseas.push(lecassdeb.datsea);
}
}
}
}
if (this.follow.has("lecass.lecassraps")) {
const lecassrapById = this.objectByIdByTableName.lecassrap;
const lecassByLecassidt = this.objectByIdByTableName.lecass;
if (lecassrapById !== undefined && lecassByLecassidt !== undefined) {
for (const lecassrap of Object.values(lecassrapById)) {
const lecass = lecassByLecassidt[lecassrap.lecassidt];
if (lecass !== undefined) {
let lecassrapids = lecass.lecassrapids;
if (lecassrapids === undefined) {
lecassrapids = lecass.lecassrapids = [];
}
lecassrapids.push(`${lecassrap.lecassidt} ${lecassrap.rapcod}`);
}
}
}
}
if (this.follow.has("lecass.textes")) {
const texteByTexcod = this.objectByIdByTableName.texte;
const lecassByLecassidt = this.objectByIdByTableName.lecass;
if (texteByTexcod !== undefined && lecassByLecassidt !== undefined) {
for (const texte of Object.values(texteByTexcod)) {
const lecass = lecassByLecassidt[texte.lecassidt];
if (lecass !== undefined) {
let texcods = lecass.texcods;
if (texcods === undefined) {
texcods = lecass.texcods = [];
}
texcods.push(texte.texcod);
}
}
}
}
if (this.follow.has("lecture.lecasss")) {
const lecassByLecassidt = this.objectByIdByTableName.lecass;
const lectureByLecidt = this.objectByIdByTableName.lecture;
if (lecassByLecassidt !== undefined && lectureByLecidt !== undefined) {
for (const lecass of Object.values(lecassByLecassidt)) {
const lecture = lectureByLecidt[lecass.lecidt];
if (lecture !== undefined) {
let lecassidts = lecture.lecassidts;
if (lecassidts === undefined) {
lecassidts = lecture.lecassidts = [];
}
lecassidts.push(lecass.lecassidt);
}
}
}
}
if (this.follow.has("loi.lectures")) {
const lectureByLecidt = this.objectByIdByTableName.lecture;
const loiByLoicod = this.objectByIdByTableName.loi;
if (lectureByLecidt !== undefined && loiByLoicod !== undefined) {
for (const lecture of Object.values(lectureByLecidt)) {
const loi = loiByLoicod[lecture.loicod];
if (loi !== undefined) {
let lecidts = loi.lecidts;
if (lecidts === undefined) {
lecidts = loi.lecidts = [];
}
lecidts.push(lecture.lecidt);
}
}
}
}
if (this.follow.has("rap.docatts")) {
const docattByDocattcle = this.objectByIdByTableName.docatt;
const rapById = this.objectByIdByTableName.rap;
if (docattByDocattcle !== undefined && rapById !== undefined) {
for (const docatt of Object.values(docattByDocattcle)) {
const rapcod = docatt.rapcod;
if (rapcod === null) {
continue;
}
const rap = rapById[rapcod];
if (rap !== undefined) {
let docattcles = rap.docattcles;
if (docattcles === undefined) {
docattcles = rap.docattcles = [];
}
docattcles.push(docatt.docattcle);
}
}
}
}
if (this.follow.has("rap.ecrs")) {
const ecrByEcrnum = this.objectByIdByTableName.ecr;
const rapById = this.objectByIdByTableName.rap;
if (ecrByEcrnum !== undefined && rapById !== undefined) {
for (const ecr of Object.values(ecrByEcrnum)) {
const rapcod = ecr.rapcod;
if (rapcod === null) {
continue;
}
const rap = rapById[rapcod];
if (rap !== undefined) {
let ecrnums = rap.ecrnums;
if (ecrnums === undefined) {
ecrnums = rap.ecrnums = [];
}
ecrnums.push(ecr.ecrnum);
}
}
}
}
if (this.follow.has("rap.orgs")) {
const orgByOrgcod = this.objectByIdByTableName.org;
const rapById = this.objectByIdByTableName.rap;
if (orgByOrgcod !== undefined && rapById !== undefined) {
const raporgs = await getRaporgsFromOrgcods(Object.keys(orgByOrgcod));
for (const raporg of raporgs) {
const rap = rapById[raporg.rapcod.toString()];
if (rap !== undefined) {
let orgcods = rap.orgcods;
if (orgcods === undefined) {
orgcods = rap.orgcods = [];
}
orgcods.push(raporg.orgcod);
}
}
}
}
if (this.follow.has("texte.ecrs")) {
const ecrByEcrnum = this.objectByIdByTableName.ecr;
const texteById = this.objectByIdByTableName.texte;
if (ecrByEcrnum !== undefined && texteById !== undefined) {
for (const ecr of Object.values(ecrByEcrnum)) {
const texcod = ecr.texcod;
if (texcod === null) {
continue;
}
const texte = texteById[texcod];
if (texte !== undefined) {
let ecrnums = texte.ecrnums;
if (ecrnums === undefined) {
ecrnums = texte.ecrnums = [];
}
ecrnums.push(ecr.ecrnum);
}
}
}
}
if (this.follow.has("texte.txtAmeli")) {
const sesById = this.objectByIdByTableName.ses;
const texteById = this.objectByIdByTableName.texte;
const txtAmeliById = this.objectByIdByTableName.txt_ameli;
if (sesById !== undefined &&
texteById !== undefined &&
txtAmeliById !== undefined) {
for (const txtAmeli of Object.values(txtAmeliById)) {
const sesinsid = txtAmeli.sesinsid;
const num = parseInt(txtAmeli.num);
if (sesinsid !== null) {
const sesins = sesById[sesinsid];
if (sesins !== undefined) {
for (const texte of Object.values(texteById)) {
if (texte.sesann === sesins.ann && texte.texnum === num) {
texte.txtAmeliId = txtAmeli.id;
}
}
}
}
}
}
}
if (this.follow.has("txtAmeli.subs")) {
const subById = this.objectByIdByTableName.sub;
const txtAmeliById = this.objectByIdByTableName.txt_ameli;
if (subById !== undefined && txtAmeliById !== undefined) {
for (const sub of Object.values(subById)) {
const txtAmeli = txtAmeliById[sub.txtid];
if (txtAmeli !== undefined) {
let subids = txtAmeli.subids;
if (subids === undefined) {
subids = txtAmeli.subids = [];
}
subids.push(sub.id);
}
}
}
}
}
request(tableName, id) {
const visitedIds = this.visitedIdsByTableName[tableName];
if (visitedIds === undefined || !visitedIds.has(id)) {
let requestedIds = this.requestedIdsByTableName[tableName];
if (requestedIds === undefined) {
requestedIds = this.requestedIdsByTableName[tableName] = new Set();
}
requestedIds.add(id);
}
}
toJson() {
return this.objectByIdByTableName;
}
}