@tricoteuses/senat 3.1.21 → 3.1.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (388) hide show
  1. package/LICENSE.md +32 -32
  2. package/README.md +326 -326
  3. package/lib/add-js-extensions-v2.js +23 -0
  4. package/lib/add-js-extensions.js +17 -0
  5. package/lib/aggregates.d.ts +52 -0
  6. package/lib/aggregates.js +930 -0
  7. package/lib/aggregates.mjs +713 -0
  8. package/lib/aggregates.ts +833 -0
  9. package/lib/config.d.ts +10 -0
  10. package/lib/config.js +16 -0
  11. package/lib/config.mjs +16 -0
  12. package/lib/config.ts +26 -0
  13. package/lib/databases.d.ts +2 -0
  14. package/lib/databases.js +26 -0
  15. package/lib/databases.mjs +57 -0
  16. package/lib/databases.ts +71 -0
  17. package/lib/datasets.d.ts +34 -0
  18. package/lib/datasets.js +233 -0
  19. package/lib/datasets.mjs +78 -0
  20. package/lib/datasets.ts +118 -0
  21. package/lib/fields.d.ts +10 -0
  22. package/lib/fields.js +68 -0
  23. package/lib/fields.mjs +22 -0
  24. package/lib/fields.ts +29 -0
  25. package/lib/git.d.ts +26 -0
  26. package/lib/git.js +167 -0
  27. package/lib/index.d.ts +13 -0
  28. package/lib/index.js +1 -0
  29. package/lib/index.mjs +7 -0
  30. package/lib/index.ts +64 -0
  31. package/lib/inserters.d.ts +98 -0
  32. package/lib/inserters.js +500 -0
  33. package/lib/inserters.mjs +360 -0
  34. package/lib/inserters.ts +521 -0
  35. package/lib/legislatures.json +38 -0
  36. package/lib/loaders.d.ts +58 -0
  37. package/lib/loaders.js +286 -0
  38. package/lib/loaders.mjs +158 -0
  39. package/lib/loaders.ts +271 -0
  40. package/lib/model/agenda.d.ts +6 -0
  41. package/lib/model/agenda.js +148 -0
  42. package/lib/model/ameli.d.ts +51 -0
  43. package/lib/model/ameli.js +149 -0
  44. package/lib/model/ameli.mjs +84 -0
  45. package/lib/model/ameli.ts +100 -0
  46. package/lib/model/commission.d.ts +18 -0
  47. package/lib/model/commission.js +269 -0
  48. package/lib/model/debats.d.ts +67 -0
  49. package/lib/model/debats.js +95 -0
  50. package/lib/model/debats.mjs +43 -0
  51. package/lib/model/debats.ts +68 -0
  52. package/lib/model/documents.d.ts +12 -0
  53. package/lib/model/documents.js +151 -0
  54. package/lib/model/dosleg.d.ts +7 -0
  55. package/lib/model/dosleg.js +326 -0
  56. package/lib/model/dosleg.mjs +196 -0
  57. package/lib/model/dosleg.ts +240 -0
  58. package/lib/model/index.d.ts +7 -0
  59. package/lib/model/index.js +7 -0
  60. package/lib/model/index.mjs +5 -0
  61. package/lib/model/index.ts +15 -0
  62. package/lib/model/questions.d.ts +45 -0
  63. package/lib/model/questions.js +89 -0
  64. package/lib/model/questions.mjs +71 -0
  65. package/lib/model/questions.ts +93 -0
  66. package/lib/model/scrutins.d.ts +13 -0
  67. package/lib/model/scrutins.js +114 -0
  68. package/lib/model/seance.d.ts +3 -0
  69. package/lib/model/seance.js +267 -0
  70. package/lib/model/sens.d.ts +146 -0
  71. package/lib/model/sens.js +454 -0
  72. package/lib/model/sens.mjs +415 -0
  73. package/lib/model/sens.ts +516 -0
  74. package/lib/model/texte.d.ts +7 -0
  75. package/lib/model/texte.js +256 -0
  76. package/lib/model/texte.mjs +208 -0
  77. package/lib/model/texte.ts +229 -0
  78. package/lib/model/util.d.ts +9 -0
  79. package/lib/model/util.js +38 -0
  80. package/lib/model/util.mjs +19 -0
  81. package/lib/model/util.ts +32 -0
  82. package/lib/parsers/texte.d.ts +7 -0
  83. package/lib/parsers/texte.js +228 -0
  84. package/lib/raw_types/ameli.d.ts +914 -0
  85. package/lib/raw_types/ameli.js +5 -0
  86. package/lib/raw_types/ameli.mjs +163 -0
  87. package/lib/raw_types/debats.d.ts +207 -0
  88. package/lib/raw_types/debats.js +5 -0
  89. package/lib/raw_types/debats.mjs +58 -0
  90. package/lib/raw_types/dosleg.d.ts +1619 -0
  91. package/lib/raw_types/dosleg.js +5 -0
  92. package/lib/raw_types/dosleg.mjs +438 -0
  93. package/lib/raw_types/questions.d.ts +419 -0
  94. package/lib/raw_types/questions.js +5 -0
  95. package/lib/raw_types/questions.mjs +11 -0
  96. package/lib/raw_types/senat.d.ts +11368 -0
  97. package/lib/raw_types/senat.js +5 -0
  98. package/lib/raw_types/sens.d.ts +8248 -0
  99. package/lib/raw_types/sens.js +5 -0
  100. package/lib/raw_types/sens.mjs +508 -0
  101. package/lib/raw_types_kysely/ameli.d.ts +915 -0
  102. package/lib/raw_types_kysely/ameli.js +7 -0
  103. package/lib/raw_types_kysely/ameli.mjs +5 -0
  104. package/lib/raw_types_kysely/ameli.ts +951 -0
  105. package/lib/raw_types_kysely/debats.d.ts +207 -0
  106. package/lib/raw_types_kysely/debats.js +7 -0
  107. package/lib/raw_types_kysely/debats.mjs +5 -0
  108. package/lib/raw_types_kysely/debats.ts +222 -0
  109. package/lib/raw_types_kysely/dosleg.d.ts +3532 -0
  110. package/lib/raw_types_kysely/dosleg.js +7 -0
  111. package/lib/raw_types_kysely/dosleg.mjs +5 -0
  112. package/lib/raw_types_kysely/dosleg.ts +3621 -0
  113. package/lib/raw_types_kysely/questions.d.ts +414 -0
  114. package/lib/raw_types_kysely/questions.js +7 -0
  115. package/lib/raw_types_kysely/questions.mjs +5 -0
  116. package/lib/raw_types_kysely/questions.ts +426 -0
  117. package/lib/raw_types_kysely/sens.d.ts +4394 -0
  118. package/lib/raw_types_kysely/sens.js +7 -0
  119. package/lib/raw_types_kysely/sens.mjs +5 -0
  120. package/lib/raw_types_kysely/sens.ts +4499 -0
  121. package/lib/raw_types_schemats/ameli.d.ts +539 -0
  122. package/lib/raw_types_schemats/ameli.js +2 -0
  123. package/lib/raw_types_schemats/ameli.mjs +2 -0
  124. package/lib/raw_types_schemats/ameli.ts +601 -0
  125. package/lib/raw_types_schemats/debats.d.ts +127 -0
  126. package/lib/raw_types_schemats/debats.js +2 -0
  127. package/lib/raw_types_schemats/debats.mjs +2 -0
  128. package/lib/raw_types_schemats/debats.ts +145 -0
  129. package/lib/raw_types_schemats/dosleg.d.ts +977 -0
  130. package/lib/raw_types_schemats/dosleg.js +2 -0
  131. package/lib/raw_types_schemats/dosleg.mjs +2 -0
  132. package/lib/raw_types_schemats/dosleg.ts +2193 -0
  133. package/lib/raw_types_schemats/questions.d.ts +235 -0
  134. package/lib/raw_types_schemats/questions.js +2 -0
  135. package/lib/raw_types_schemats/questions.mjs +2 -0
  136. package/lib/raw_types_schemats/questions.ts +249 -0
  137. package/lib/raw_types_schemats/sens.d.ts +6915 -0
  138. package/lib/raw_types_schemats/sens.js +2 -0
  139. package/lib/raw_types_schemats/sens.mjs +2 -0
  140. package/lib/raw_types_schemats/sens.ts +2907 -0
  141. package/lib/scripts/convert_data.js +354 -0
  142. package/lib/scripts/convert_data.mjs +181 -0
  143. package/lib/scripts/convert_data.ts +243 -0
  144. package/lib/scripts/data-download.d.ts +1 -0
  145. package/lib/scripts/data-download.js +12 -0
  146. package/lib/scripts/datautil.d.ts +8 -0
  147. package/lib/scripts/datautil.js +34 -0
  148. package/lib/scripts/datautil.mjs +16 -0
  149. package/lib/scripts/datautil.ts +19 -0
  150. package/lib/scripts/images/transparent_150x192.jpg +0 -0
  151. package/lib/scripts/images/transparent_155x225.jpg +0 -0
  152. package/lib/scripts/parse_textes.d.ts +1 -0
  153. package/lib/scripts/parse_textes.js +44 -0
  154. package/lib/scripts/parse_textes.mjs +46 -0
  155. package/lib/scripts/parse_textes.ts +65 -0
  156. package/lib/scripts/retrieve_agenda.d.ts +1 -0
  157. package/lib/scripts/retrieve_agenda.js +132 -0
  158. package/lib/scripts/retrieve_cr_commission.d.ts +1 -0
  159. package/lib/scripts/retrieve_cr_commission.js +364 -0
  160. package/lib/scripts/retrieve_cr_seance.d.ts +6 -0
  161. package/lib/scripts/retrieve_cr_seance.js +347 -0
  162. package/lib/scripts/retrieve_documents.d.ts +3 -0
  163. package/lib/scripts/retrieve_documents.js +219 -0
  164. package/lib/scripts/retrieve_documents.mjs +249 -0
  165. package/lib/scripts/retrieve_documents.ts +298 -0
  166. package/lib/scripts/retrieve_open_data.d.ts +1 -0
  167. package/lib/scripts/retrieve_open_data.js +315 -0
  168. package/lib/scripts/retrieve_open_data.mjs +217 -0
  169. package/lib/scripts/retrieve_open_data.ts +268 -0
  170. package/lib/scripts/retrieve_senateurs_photos.d.ts +1 -0
  171. package/lib/scripts/retrieve_senateurs_photos.js +147 -0
  172. package/lib/scripts/retrieve_senateurs_photos.mjs +147 -0
  173. package/lib/scripts/retrieve_senateurs_photos.ts +177 -0
  174. package/lib/scripts/retrieve_videos.d.ts +1 -0
  175. package/lib/scripts/retrieve_videos.js +461 -0
  176. package/lib/scripts/shared/cli_helpers.d.ts +95 -0
  177. package/lib/scripts/shared/cli_helpers.js +91 -0
  178. package/lib/scripts/shared/cli_helpers.ts +36 -0
  179. package/lib/scripts/shared/util.d.ts +4 -0
  180. package/lib/scripts/shared/util.js +35 -0
  181. package/lib/scripts/shared/util.ts +33 -0
  182. package/lib/scripts/test_iter_load.d.ts +1 -0
  183. package/lib/scripts/test_iter_load.js +12 -0
  184. package/lib/src/ameli.d.ts +66 -0
  185. package/lib/src/ameli.js +1 -0
  186. package/lib/src/config.d.ts +43 -0
  187. package/lib/src/config.js +37 -0
  188. package/lib/src/conversion_textes.d.ts +11 -0
  189. package/lib/src/conversion_textes.js +320 -0
  190. package/lib/src/databases.d.ts +3 -0
  191. package/lib/src/databases.js +26 -0
  192. package/lib/src/databases_postgres.d.ts +4 -0
  193. package/lib/src/databases_postgres.js +23 -0
  194. package/lib/src/datasets.d.ts +38 -0
  195. package/lib/src/datasets.js +247 -0
  196. package/lib/src/db_types/ameli.d.ts +1762 -0
  197. package/lib/src/db_types/ameli.js +1074 -0
  198. package/lib/src/db_types/debats.d.ts +380 -0
  199. package/lib/src/db_types/debats.js +266 -0
  200. package/lib/src/db_types/dosleg.d.ts +2954 -0
  201. package/lib/src/db_types/dosleg.js +2005 -0
  202. package/lib/src/db_types/questions.d.ts +699 -0
  203. package/lib/src/db_types/questions.js +493 -0
  204. package/lib/src/db_types/sens.d.ts +7843 -0
  205. package/lib/src/db_types/sens.js +4691 -0
  206. package/lib/src/debats.d.ts +38 -0
  207. package/lib/src/debats.js +1 -0
  208. package/lib/src/dosleg.d.ts +142 -0
  209. package/lib/src/dosleg.js +193 -0
  210. package/lib/src/git.d.ts +27 -0
  211. package/lib/src/git.js +251 -0
  212. package/lib/src/loaders.d.ts +52 -0
  213. package/lib/src/loaders.js +260 -0
  214. package/lib/src/model/agenda.d.ts +6 -0
  215. package/lib/src/model/agenda.js +148 -0
  216. package/lib/src/model/ameli.d.ts +67 -0
  217. package/lib/src/model/ameli.js +150 -0
  218. package/lib/src/model/ameli_postgres.d.ts +67 -0
  219. package/lib/src/model/ameli_postgres.js +150 -0
  220. package/lib/src/model/commission.d.ts +19 -0
  221. package/lib/src/model/commission.js +269 -0
  222. package/lib/src/model/debats.d.ts +39 -0
  223. package/lib/src/model/debats.js +112 -0
  224. package/lib/src/model/documents.d.ts +32 -0
  225. package/lib/src/model/documents.js +182 -0
  226. package/lib/src/model/dosleg.d.ts +144 -0
  227. package/lib/src/model/dosleg.js +468 -0
  228. package/lib/src/model/index.d.ts +7 -0
  229. package/lib/src/model/index.js +7 -0
  230. package/lib/src/model/questions.d.ts +54 -0
  231. package/lib/src/model/questions.js +91 -0
  232. package/lib/src/model/scrutins.d.ts +48 -0
  233. package/lib/src/model/scrutins.js +121 -0
  234. package/lib/src/model/seance.d.ts +3 -0
  235. package/lib/src/model/seance.js +267 -0
  236. package/lib/src/model/sens.d.ts +112 -0
  237. package/lib/src/model/sens.js +385 -0
  238. package/lib/src/model/util.d.ts +1 -0
  239. package/lib/src/model/util.js +15 -0
  240. package/lib/src/other_types/questions.d.ts +2 -0
  241. package/lib/src/other_types/questions.js +1 -0
  242. package/lib/src/questions.d.ts +53 -0
  243. package/lib/src/questions.js +1 -0
  244. package/lib/src/raw_types/ameli.d.ts +1762 -0
  245. package/lib/src/raw_types/ameli.js +1074 -0
  246. package/lib/src/raw_types/debats.d.ts +380 -0
  247. package/lib/src/raw_types/debats.js +266 -0
  248. package/lib/src/raw_types/dosleg.d.ts +2954 -0
  249. package/lib/src/raw_types/dosleg.js +2005 -0
  250. package/lib/src/raw_types/questions.d.ts +699 -0
  251. package/lib/src/raw_types/questions.js +493 -0
  252. package/lib/src/raw_types/senat.d.ts +11372 -0
  253. package/lib/src/raw_types/senat.js +5 -0
  254. package/lib/src/raw_types/sens.d.ts +7843 -0
  255. package/lib/src/raw_types/sens.js +4691 -0
  256. package/lib/src/raw_types_schemats/ameli.d.ts +541 -0
  257. package/lib/src/raw_types_schemats/ameli.js +2 -0
  258. package/lib/src/raw_types_schemats/debats.d.ts +127 -0
  259. package/lib/src/raw_types_schemats/debats.js +2 -0
  260. package/lib/src/raw_types_schemats/dosleg.d.ts +977 -0
  261. package/lib/src/raw_types_schemats/dosleg.js +2 -0
  262. package/lib/src/raw_types_schemats/questions.d.ts +237 -0
  263. package/lib/src/raw_types_schemats/questions.js +2 -0
  264. package/lib/src/raw_types_schemats/sens.d.ts +2709 -0
  265. package/lib/src/raw_types_schemats/sens.js +2 -0
  266. package/lib/src/rich_types/agenda.d.ts +45 -0
  267. package/lib/src/rich_types/agenda.js +1 -0
  268. package/lib/src/rich_types/compte_rendu.d.ts +83 -0
  269. package/lib/src/rich_types/compte_rendu.js +1 -0
  270. package/lib/src/rich_types/dosleg.js +0 -7
  271. package/lib/src/rich_types/sessions.d.ts +6 -0
  272. package/lib/src/rich_types/sessions.js +19 -0
  273. package/lib/src/rich_types/texte.d.ts +72 -0
  274. package/lib/src/rich_types/texte.js +15 -0
  275. package/lib/src/scripts/convert_data.js +4 -5
  276. package/lib/src/scripts/retrieve_cr_commission.js +1 -1
  277. package/lib/src/scripts/retrieve_open_data.js +39 -0
  278. package/lib/src/scripts/retrieve_videos.js +1 -2
  279. package/lib/src/scripts/shared/incremental_import_sql.js +859 -859
  280. package/lib/src/scripts/shared/schema_version.js +84 -84
  281. package/lib/src/scripts/shared/staging_metadata_sql.js +214 -214
  282. package/lib/src/scripts/test_iter_load.d.ts +1 -0
  283. package/lib/src/scripts/test_iter_load.js +12 -0
  284. package/lib/src/scripts/validate_prefixed_tables.js +12 -12
  285. package/lib/src/sens.d.ts +104 -0
  286. package/lib/src/sens.js +1 -0
  287. package/lib/src/server/ameli.js +11 -13
  288. package/lib/src/server/conversion_textes.js +107 -107
  289. package/lib/src/server/debats.js +10 -15
  290. package/lib/src/server/documents.js +22 -25
  291. package/lib/src/server/dosleg.js +33 -44
  292. package/lib/src/server/questions.js +10 -11
  293. package/lib/src/server/scrutins.js +3 -7
  294. package/lib/src/server/sens.js +19 -36
  295. package/lib/src/types/agenda.d.ts +45 -0
  296. package/lib/src/types/agenda.js +1 -0
  297. package/lib/src/types/ameli.d.ts +1762 -0
  298. package/lib/src/types/ameli.js +1074 -0
  299. package/lib/src/types/compte_rendu.d.ts +83 -0
  300. package/lib/src/types/compte_rendu.js +1 -0
  301. package/lib/src/types/debats.d.ts +380 -0
  302. package/lib/src/types/debats.js +266 -0
  303. package/lib/src/types/dosleg.d.ts +2954 -0
  304. package/lib/src/types/dosleg.js +2005 -0
  305. package/lib/src/types/questions.d.ts +699 -0
  306. package/lib/src/types/questions.js +493 -0
  307. package/lib/src/types/sens.d.ts +7843 -0
  308. package/lib/src/types/sens.js +4691 -0
  309. package/lib/src/types/sessions.d.ts +6 -0
  310. package/lib/src/types/sessions.js +19 -0
  311. package/lib/src/types/texte.d.ts +72 -0
  312. package/lib/src/types/texte.js +15 -0
  313. package/lib/src/validators/config.d.ts +9 -0
  314. package/lib/src/validators/config.js +10 -0
  315. package/lib/src/videos/match.js +4 -4
  316. package/lib/strings.d.ts +1 -0
  317. package/lib/strings.js +18 -0
  318. package/lib/strings.mjs +18 -0
  319. package/lib/strings.ts +26 -0
  320. package/lib/tsconfig.tsbuildinfo +1 -0
  321. package/lib/types/agenda.d.ts +44 -0
  322. package/lib/types/agenda.js +1 -0
  323. package/lib/types/ameli.d.ts +5 -0
  324. package/lib/types/ameli.js +1 -0
  325. package/lib/types/ameli.mjs +13 -0
  326. package/lib/types/ameli.ts +21 -0
  327. package/lib/types/compte_rendu.d.ts +83 -0
  328. package/lib/types/compte_rendu.js +1 -0
  329. package/lib/types/debats.d.ts +2 -0
  330. package/lib/types/debats.js +1 -0
  331. package/lib/types/debats.mjs +2 -0
  332. package/lib/types/debats.ts +6 -0
  333. package/lib/types/dosleg.d.ts +70 -0
  334. package/lib/types/dosleg.js +1 -0
  335. package/lib/types/dosleg.mjs +151 -0
  336. package/lib/types/dosleg.ts +284 -0
  337. package/lib/types/questions.d.ts +2 -0
  338. package/lib/types/questions.js +1 -0
  339. package/lib/types/questions.mjs +1 -0
  340. package/lib/types/questions.ts +3 -0
  341. package/lib/types/sens.d.ts +10 -0
  342. package/lib/types/sens.js +1 -0
  343. package/lib/types/sens.mjs +1 -0
  344. package/lib/types/sens.ts +12 -0
  345. package/lib/types/sessions.d.ts +5 -0
  346. package/lib/types/sessions.js +84 -0
  347. package/lib/types/sessions.mjs +43 -0
  348. package/lib/types/sessions.ts +42 -0
  349. package/lib/types/texte.d.ts +74 -0
  350. package/lib/types/texte.js +16 -0
  351. package/lib/types/texte.mjs +16 -0
  352. package/lib/types/texte.ts +76 -0
  353. package/lib/typings/windows-1252.d.js +2 -0
  354. package/lib/typings/windows-1252.d.mjs +2 -0
  355. package/lib/typings/windows-1252.d.ts +11 -0
  356. package/lib/utils/cr_spliting.d.ts +28 -0
  357. package/lib/utils/cr_spliting.js +265 -0
  358. package/lib/utils/date.d.ts +10 -0
  359. package/lib/utils/date.js +100 -0
  360. package/lib/utils/nvs-timecode.d.ts +7 -0
  361. package/lib/utils/nvs-timecode.js +79 -0
  362. package/lib/utils/reunion_grouping.d.ts +9 -0
  363. package/lib/utils/reunion_grouping.js +361 -0
  364. package/lib/utils/reunion_odj_building.d.ts +5 -0
  365. package/lib/utils/reunion_odj_building.js +154 -0
  366. package/lib/utils/reunion_parsing.d.ts +23 -0
  367. package/lib/utils/reunion_parsing.js +209 -0
  368. package/lib/utils/scoring.d.ts +14 -0
  369. package/lib/utils/scoring.js +147 -0
  370. package/lib/utils/string_cleaning.d.ts +7 -0
  371. package/lib/utils/string_cleaning.js +57 -0
  372. package/lib/validators/config.d.ts +9 -0
  373. package/lib/validators/config.js +10 -0
  374. package/lib/validators/config.mjs +54 -0
  375. package/lib/validators/config.ts +79 -0
  376. package/lib/validators/senat.d.ts +0 -0
  377. package/lib/validators/senat.js +28 -0
  378. package/lib/validators/senat.mjs +24 -0
  379. package/lib/validators/senat.ts +26 -0
  380. package/package.json +119 -117
  381. package/lib/src/other_types/collaborateurs.d.ts +0 -5
  382. package/lib/src/parsers/collaborateurs.d.ts +0 -44
  383. package/lib/src/parsers/collaborateurs.js +0 -157
  384. package/lib/src/scripts/retrieve_collaborateurs.js +0 -166
  385. package/lib/tests/collaborateurs.test.js +0 -115
  386. /package/lib/{src/other_types/collaborateurs.js → add-js-extensions-v2.d.ts} +0 -0
  387. /package/lib/{src/scripts/retrieve_collaborateurs.d.ts → add-js-extensions.d.ts} +0 -0
  388. /package/lib/{tests/collaborateurs.test.d.ts → scripts/convert_data.d.ts} +0 -0
@@ -0,0 +1,833 @@
1
+ import {
2
+ Ses,
3
+ Sub,
4
+ TxtAmeli,
5
+ } from "./types/ameli"
6
+ import { Debat } from "./types/debats"
7
+ import {
8
+ Ass,
9
+ Aud,
10
+ Auteur,
11
+ DateSeance,
12
+ DecCoc,
13
+ DenRap,
14
+ DocAtt,
15
+ Ecr,
16
+ EtaLoi,
17
+ LecAss,
18
+ LecAssRap,
19
+ Lecture,
20
+ Loi,
21
+ Org,
22
+ OriTxt,
23
+ Qua,
24
+ Rap,
25
+ Scr,
26
+ Texte,
27
+ TypAtt,
28
+ TypLec,
29
+ TypLoi,
30
+ TypTxt,
31
+ TypUrl,
32
+ } from "./types/dosleg"
33
+ import { Question } from "./types/questions"
34
+ import {
35
+ getDebats,
36
+ getDebatsFromLecassidts,
37
+ getLecAssDebsFromDatseas,
38
+ } from "./model/debats"
39
+
40
+ export const allFollows = [
41
+ "aud.org",
42
+ "auteur.qua",
43
+ "dateSeance.debat",
44
+ "dateSeance.scrs",
45
+ "docatt.rec",
46
+ "docatt.typatt",
47
+ "ecr.aut",
48
+ "lecass.ass",
49
+ "lecass.auds",
50
+ "lecass.datesSeances",
51
+ "lecass.debats",
52
+ "lecass.lecassraps",
53
+ "lecass.org",
54
+ "lecass.textes",
55
+ "lecassrap.rap",
56
+ "lecture.lecasss",
57
+ "lecture.typlec",
58
+ "loi.deccoc",
59
+ "loi.etaloi",
60
+ "loi.lectures",
61
+ "loi.typloi",
62
+ "rap.denrap",
63
+ "rap.docatts",
64
+ "rap.ecrs",
65
+ "rap.orgs",
66
+ "texte.ecrs",
67
+ "texte.org",
68
+ "texte.oritxt",
69
+ "texte.txtAmeli",
70
+ "texte.typtxt",
71
+ "texte.typurl",
72
+ "txtAmeli.subs",
73
+ ]
74
+
75
+ export class Aggregator {
76
+ objectByIdByTableName: { [name: string]: { [id: string]: object } } = {}
77
+ requestedIdsByTableName: { [name: string]: Set<string> } = {}
78
+ visitedIdsByTableName: { [name: string]: Set<string> } = {}
79
+
80
+ constructor(public follow: Set<string>) {}
81
+
82
+ addAss(ass: Ass): void {
83
+ let objectById = this.objectByIdByTableName.ass
84
+ if (objectById === undefined) {
85
+ objectById = this.objectByIdByTableName.ass = {}
86
+ }
87
+ objectById[ass.codass] = ass
88
+ }
89
+
90
+ addAud(aud: Aud): void {
91
+ let objectById = this.objectByIdByTableName.aud
92
+ if (objectById === undefined) {
93
+ objectById = this.objectByIdByTableName.aud = {}
94
+ }
95
+ objectById[aud.audcle] = aud
96
+
97
+ if (aud.orgcod !== null && this.follow.has("aud.org")) {
98
+ this.request("org", aud.orgcod)
99
+ }
100
+ }
101
+
102
+ addAuteur(auteur: Auteur): void {
103
+ let objectById = this.objectByIdByTableName.auteur
104
+ if (objectById === undefined) {
105
+ objectById = this.objectByIdByTableName.auteur = {}
106
+ }
107
+ objectById[auteur.autcod] = auteur
108
+
109
+ if (this.follow.has("auteur.qua")) {
110
+ this.request("qua", auteur.quacod)
111
+ }
112
+
113
+ // TODO
114
+ }
115
+
116
+ addDateSeance(dateSeance: DateSeance): void {
117
+ let objectById = this.objectByIdByTableName.date_seance
118
+ if (objectById === undefined) {
119
+ objectById = this.objectByIdByTableName.date_seance = {}
120
+ }
121
+ objectById[dateSeance.code] = dateSeance
122
+
123
+ if (dateSeance.date_s !== null && this.follow.has("dateSeance.debat")) {
124
+ this.request("debats", dateSeance.date_s.toISOString())
125
+ }
126
+
127
+ if (this.follow.has("dateSeance.scrs")) {
128
+ this.request("scr_by_code", dateSeance.code.toString())
129
+ }
130
+ }
131
+
132
+ addDebat(debat: Debat): void {
133
+ let objectById = this.objectByIdByTableName.debats
134
+ if (objectById === undefined) {
135
+ objectById = this.objectByIdByTableName.debats = {}
136
+ }
137
+ objectById[debat.datsea.toISOString()] = debat
138
+ }
139
+
140
+ addDeccoc(deccoc: DecCoc): void {
141
+ let objectById = this.objectByIdByTableName.deccoc
142
+ if (objectById === undefined) {
143
+ objectById = this.objectByIdByTableName.deccoc = {}
144
+ }
145
+ objectById[deccoc.deccoccod] = deccoc
146
+ }
147
+
148
+ addDenrap(denrap: DenRap): void {
149
+ let objectById = this.objectByIdByTableName.denrap
150
+ if (objectById === undefined) {
151
+ objectById = this.objectByIdByTableName.denrap = {}
152
+ }
153
+ objectById[denrap.coddenrap] = denrap
154
+ }
155
+
156
+ addDocatt(docatt: DocAtt): void {
157
+ let objectById = this.objectByIdByTableName.docatt
158
+ if (objectById === undefined) {
159
+ objectById = this.objectByIdByTableName.docatt = {}
160
+ }
161
+ objectById[docatt.docattcle] = docatt
162
+
163
+ if (this.follow.has("docatt.rap")) {
164
+ this.request("rap", docatt.rapcod.toString())
165
+ }
166
+
167
+ if (this.follow.has("docatt.typatt")) {
168
+ this.request("typatt", docatt.rapcod.toString())
169
+ }
170
+ }
171
+
172
+ addEcr(ecr: Ecr): void {
173
+ let objectById = this.objectByIdByTableName.ecr
174
+ if (objectById === undefined) {
175
+ objectById = this.objectByIdByTableName.ecr = {}
176
+ }
177
+ objectById[ecr.ecrnum] = ecr
178
+
179
+ if (ecr.autcod !== null && this.follow.has("ecr.aut")) {
180
+ this.request("auteur", ecr.autcod)
181
+ }
182
+ }
183
+
184
+ addEtaloi(etaloi: EtaLoi): void {
185
+ let objectById = this.objectByIdByTableName.etaloi
186
+ if (objectById === undefined) {
187
+ objectById = this.objectByIdByTableName.etaloi = {}
188
+ }
189
+ objectById[etaloi.etaloicod] = etaloi
190
+ }
191
+
192
+ addLecass(lecass: LecAss): void {
193
+ let objectById = this.objectByIdByTableName.lecass
194
+ if (objectById === undefined) {
195
+ objectById = this.objectByIdByTableName.lecass = {}
196
+ }
197
+ objectById[lecass.lecassidt] = lecass
198
+
199
+ if (this.follow.has("lecass.ass")) {
200
+ this.request("ass", lecass.codass)
201
+ }
202
+
203
+ if (lecass.orgcod !== null && this.follow.has("lecass.org")) {
204
+ this.request("org", lecass.orgcod)
205
+ }
206
+
207
+ if (this.follow.has("lecass.auds")) {
208
+ this.request("aud_by_lecassidt", lecass.lecassidt)
209
+ }
210
+
211
+ if (this.follow.has("lecass.datesSeances")) {
212
+ this.request("date_seance_by_lecassidt", lecass.lecassidt)
213
+ }
214
+
215
+ if (this.follow.has("lecass.debats")) {
216
+ this.request("debat_by_lecassidt", lecass.lecassidt)
217
+ }
218
+
219
+ if (this.follow.has("lecass.lecassraps")) {
220
+ this.request("lecassrap_by_lecassidt", lecass.lecassidt)
221
+ }
222
+
223
+ if (this.follow.has("lecass.textes")) {
224
+ this.request("texte_by_lecassidt", lecass.lecassidt)
225
+ }
226
+ }
227
+
228
+ addLecassrap(lecassrap: LecAssRap): void {
229
+ let objectById = this.objectByIdByTableName.lecassrap
230
+ if (objectById === undefined) {
231
+ objectById = this.objectByIdByTableName.lecassrap = {}
232
+ }
233
+ objectById[`${lecassrap.lecassidt} ${lecassrap.rapcod}`] = lecassrap
234
+
235
+ if (this.follow.has("lecassrap.rap")) {
236
+ this.request("rap", lecassrap.rapcod.toString())
237
+ }
238
+ }
239
+
240
+ addLecture(lecture: Lecture): void {
241
+ let objectById = this.objectByIdByTableName.lecture
242
+ if (objectById === undefined) {
243
+ objectById = this.objectByIdByTableName.lecture = {}
244
+ }
245
+ objectById[lecture.lecidt] = lecture
246
+
247
+ if (this.follow.has("lecture.typlec")) {
248
+ this.request("typlec", lecture.typleccod)
249
+ }
250
+
251
+ if (this.follow.has("lecture.lecasss")) {
252
+ this.request("lecasss_by_lecidt", lecture.lecidt)
253
+ }
254
+ }
255
+
256
+ addLoi(loi: Loi): void {
257
+ let objectById = this.objectByIdByTableName.loi
258
+ if (objectById === undefined) {
259
+ objectById = this.objectByIdByTableName.loi = {}
260
+ }
261
+ objectById[loi.loicod] = loi
262
+
263
+ if (this.follow.has("loi.typloi")) {
264
+ this.request("typloi", loi.typloicod)
265
+ }
266
+
267
+ if (this.follow.has("loi.etaloi") && loi.etaloicod !== null) {
268
+ this.request("etaloi", loi.etaloicod)
269
+ }
270
+
271
+ if (this.follow.has("loi.deccoc") && loi.deccoccod !== null) {
272
+ this.request("deccoc", loi.deccoccod)
273
+ }
274
+
275
+ if (this.follow.has("loi.lectures")) {
276
+ this.request("lectures_by_loicod", loi.loicod)
277
+ }
278
+ }
279
+
280
+ addOrg(org: Org): void {
281
+ let objectById = this.objectByIdByTableName.org
282
+ if (objectById === undefined) {
283
+ objectById = this.objectByIdByTableName.org = {}
284
+ }
285
+ objectById[org.orgcod] = org
286
+
287
+ // TODO
288
+ }
289
+
290
+ addOritxt(oritxt: OriTxt): void {
291
+ let objectById = this.objectByIdByTableName.oritxt
292
+ if (objectById === undefined) {
293
+ objectById = this.objectByIdByTableName.oritxt = {}
294
+ }
295
+ objectById[oritxt.oritxtcod] = oritxt
296
+
297
+ // TODO
298
+ }
299
+
300
+ addQua(qua: Qua): void {
301
+ let objectById = this.objectByIdByTableName.qua
302
+ if (objectById === undefined) {
303
+ objectById = this.objectByIdByTableName.qua = {}
304
+ }
305
+ objectById[qua.quacod] = qua
306
+ }
307
+
308
+ addQuestion(question: Question): void {
309
+ let objectById = this.objectByIdByTableName.tam_questions
310
+ if (objectById === undefined) {
311
+ objectById = this.objectByIdByTableName.tam_questions = {}
312
+ }
313
+ objectById[question.id] = question
314
+ }
315
+
316
+ addRap(rap: Rap): void {
317
+ let objectById = this.objectByIdByTableName.rap
318
+ if (objectById === undefined) {
319
+ objectById = this.objectByIdByTableName.rap = {}
320
+ }
321
+ objectById[rap.rapcod.toString()] = rap
322
+
323
+ if (this.follow.has("rap.denrap")) {
324
+ this.request("denrap", rap.coddenrap)
325
+ }
326
+
327
+ if (this.follow.has("rap.docatts")) {
328
+ this.request("docatt_by_rapcod", rap.rapcod.toString())
329
+ }
330
+
331
+ if (this.follow.has("rap.ecrs")) {
332
+ this.request("ecr_by_rapcod", rap.rapcod.toString())
333
+ }
334
+
335
+ if (this.follow.has("rap.orgs")) {
336
+ this.request("org_by_rapcod", rap.rapcod.toString())
337
+ }
338
+
339
+ // TODO
340
+ }
341
+
342
+ addScr(scr: Scr): void {
343
+ let objectById = this.objectByIdByTableName.scr
344
+ if (objectById === undefined) {
345
+ objectById = this.objectByIdByTableName.scr = {}
346
+ }
347
+ objectById[`${scr.sesann} ${scr.scrnum}`] = scr
348
+
349
+ // TODO
350
+ }
351
+
352
+ addSes(ses: Ses): void {
353
+ let objectById = this.objectByIdByTableName.ses
354
+ if (objectById === undefined) {
355
+ objectById = this.objectByIdByTableName.ses = {}
356
+ }
357
+ objectById[ses.id] = ses
358
+ }
359
+
360
+ addSub(sub: Sub): void {
361
+ let objectById = this.objectByIdByTableName.sub
362
+ if (objectById === undefined) {
363
+ objectById = this.objectByIdByTableName.sub = {}
364
+ }
365
+ objectById[sub.id] = sub
366
+
367
+ // TODO
368
+ }
369
+
370
+ addTexte(texte: Texte): void {
371
+ let objectById = this.objectByIdByTableName.texte
372
+ if (objectById === undefined) {
373
+ objectById = this.objectByIdByTableName.texte = {}
374
+ }
375
+ objectById[texte.texcod] = texte
376
+
377
+ if (this.follow.has("texte.ecrs")) {
378
+ this.request("ecr_by_texcod", texte.texcod.toString())
379
+ }
380
+
381
+ if (texte.orgcod !== null && this.follow.has("texte.org")) {
382
+ this.request("org", texte.orgcod)
383
+ }
384
+
385
+ if (texte.oritxtcod !== null && this.follow.has("texte.oritxt")) {
386
+ this.request("oritxt", texte.oritxtcod)
387
+ }
388
+
389
+ if (
390
+ texte.sesann !== null &&
391
+ texte.texnum !== null &&
392
+ this.follow.has("texte.txtAmeli")
393
+ ) {
394
+ this.request("ses_by_ann", texte.sesann.toString())
395
+ this.request("txt_ameli_by_sesann_num", `${texte.sesann} ${texte.texnum}`)
396
+ }
397
+
398
+ if (texte.typtxtcod !== null && this.follow.has("texte.typtxt")) {
399
+ this.request("typtxt", texte.typtxtcod)
400
+ }
401
+
402
+ if (texte.typurl !== null && this.follow.has("texte.typurl")) {
403
+ this.request("typurl", texte.typurl)
404
+ }
405
+ }
406
+
407
+ addTxtAmeli(txtAmeli: TxtAmeli): void {
408
+ let objectById = this.objectByIdByTableName.txt_ameli
409
+ if (objectById === undefined) {
410
+ objectById = this.objectByIdByTableName.txt_ameli = {}
411
+ }
412
+ objectById[txtAmeli.id] = txtAmeli
413
+
414
+ if (this.follow.has("txtAmeli.subs")) {
415
+ this.request("sub_by_txtid", txtAmeli.id.toString())
416
+ }
417
+
418
+ // TODO
419
+ }
420
+
421
+ addTypatt(typatt: TypAtt): void {
422
+ let objectById = this.objectByIdByTableName.typatt
423
+ if (objectById === undefined) {
424
+ objectById = this.objectByIdByTableName.typatt = {}
425
+ }
426
+ objectById[typatt.typattcod] = typatt
427
+ }
428
+
429
+ addTyplec(typlec: TypLec): void {
430
+ let objectById = this.objectByIdByTableName.typlec
431
+ if (objectById === undefined) {
432
+ objectById = this.objectByIdByTableName.typlec = {}
433
+ }
434
+ objectById[typlec.typleccod] = typlec
435
+ }
436
+
437
+ addTyploi(typloi: TypLoi): void {
438
+ let objectById = this.objectByIdByTableName.typloi
439
+ if (objectById === undefined) {
440
+ objectById = this.objectByIdByTableName.typloi = {}
441
+ }
442
+ objectById[typloi.typloicod] = typloi
443
+
444
+ // TODO
445
+ }
446
+
447
+ addTyptxt(typtxt: TypTxt): void {
448
+ let objectById = this.objectByIdByTableName.typtxt
449
+ if (objectById === undefined) {
450
+ objectById = this.objectByIdByTableName.typtxt = {}
451
+ }
452
+ objectById[typtxt.typtxtcod] = typtxt
453
+ }
454
+
455
+ addTypurl(typurl: TypUrl): void {
456
+ let objectById = this.objectByIdByTableName.typurl
457
+ if (objectById === undefined) {
458
+ objectById = this.objectByIdByTableName.typurl = {}
459
+ }
460
+ objectById[typurl.typurl] = typurl
461
+ }
462
+
463
+ async getAll(): Promise<void> {
464
+ while (Object.keys(this.requestedIdsByTableName).length > 0) {
465
+ for (const [tableName, requestedIdsSet] of Object.entries(
466
+ this.requestedIdsByTableName,
467
+ )) {
468
+ const requestedIds = [...requestedIdsSet]
469
+ delete this.requestedIdsByTableName[tableName]
470
+ switch (tableName) {
471
+ case "ass": {
472
+ break
473
+ }
474
+ case "aud_by_lecassidt": {
475
+ break
476
+ }
477
+ case "auteur": {
478
+ break
479
+ }
480
+ case "date_seance_by_lecassidt": {
481
+ break
482
+ }
483
+ case "debat_by_lecassidt": {
484
+ (await getDebatsFromLecassidts(requestedIds)).map(
485
+ this.addDebat.bind(this),
486
+ )
487
+ break
488
+ }
489
+ case "debats": {
490
+ (await getDebats(requestedIds)).map(this.addDebat.bind(this))
491
+ break
492
+ }
493
+ case "deccoc": {
494
+ break
495
+ }
496
+ case "denrap": {
497
+ break
498
+ }
499
+ case "docatt_by_rapcod": {
500
+ break
501
+ }
502
+ case "ecr_by_rapcod": {
503
+ break
504
+ }
505
+ case "ecr_by_texcod": {
506
+ break
507
+ }
508
+ case "etaloi": {
509
+ break
510
+ }
511
+ case "lecasss_by_lecidt": {
512
+ break
513
+ }
514
+ case "lecassrap_by_lecassidt": {
515
+ break
516
+ }
517
+ case "lectures_by_loicod": {
518
+ break
519
+ }
520
+ case "loi": {
521
+ break
522
+ }
523
+ case "org": {
524
+ break
525
+ }
526
+ case "org_by_rapcod": {
527
+ break
528
+ }
529
+ case "oritxt": {
530
+ break
531
+ }
532
+ case "qua": {
533
+ break
534
+ }
535
+ case "rap": {
536
+ break
537
+ }
538
+ case "scr_by_code": {
539
+ break
540
+ }
541
+ case "texte_by_lecassidt": {
542
+ break
543
+ }
544
+ case "typatt": {
545
+ break
546
+ }
547
+ case "typlec": {
548
+ break
549
+ }
550
+ case "typloi": {
551
+ break
552
+ }
553
+ case "typtxt": {
554
+ break
555
+ }
556
+ case "typurl": {
557
+ break
558
+ }
559
+ default:
560
+ throw new Error(`Unhandled table: ${tableName}`)
561
+ }
562
+ const visitedIds = this.visitedIdsByTableName[tableName]
563
+ this.visitedIdsByTableName[tableName] =
564
+ visitedIds === undefined
565
+ ? new Set(requestedIds)
566
+ : new Set([...visitedIds, ...requestedIds])
567
+ }
568
+ }
569
+
570
+ // Add "1 to many" and other computed references.
571
+ if (this.follow.has("dateSeance.scrs")) {
572
+ const scrById = this.objectByIdByTableName.scr
573
+ const dateSeanceByCode = this.objectByIdByTableName.date_seance
574
+ if (scrById !== undefined && dateSeanceByCode !== undefined) {
575
+ for (const scr of Object.values(scrById) as Scr[]) {
576
+ const scrCode = scr.code
577
+ if (scrCode === null) {
578
+ continue
579
+ }
580
+ const dateSeance = dateSeanceByCode[scrCode] as DateSeance
581
+ if (dateSeance !== undefined) {
582
+ let scrids = dateSeance.scrids
583
+ if (scrids === undefined) {
584
+ scrids = dateSeance.scrids = []
585
+ }
586
+ scrids.push(`${scr.sesann} ${scr.scrnum}`)
587
+ }
588
+ }
589
+ }
590
+ }
591
+ if (this.follow.has("lecass.auds")) {
592
+ const audByAudcle = this.objectByIdByTableName.aud
593
+ const lecassByLecassidt = this.objectByIdByTableName.lecass
594
+ if (audByAudcle !== undefined && lecassByLecassidt !== undefined) {
595
+ for (const aud of Object.values(audByAudcle) as Aud[]) {
596
+ const lecass = lecassByLecassidt[aud.lecassidt] as LecAss
597
+ if (lecass !== undefined) {
598
+ let audcles = lecass.audcles
599
+ if (audcles === undefined) {
600
+ audcles = lecass.audcles = []
601
+ }
602
+ audcles.push(aud.audcle)
603
+ }
604
+ }
605
+ }
606
+ }
607
+ if (this.follow.has("lecass.datesSeances")) {
608
+ const dateSeanceByCode = this.objectByIdByTableName.date_seance
609
+ const lecassByLecassidt = this.objectByIdByTableName.lecass
610
+ if (dateSeanceByCode !== undefined && lecassByLecassidt !== undefined) {
611
+ for (const dateSeance of Object.values(
612
+ dateSeanceByCode,
613
+ ) as DateSeance[]) {
614
+ const lecassidt = dateSeance.lecidt
615
+ if (lecassidt === null) {
616
+ continue
617
+ }
618
+ const lecass = lecassByLecassidt[lecassidt] as LecAss
619
+ if (lecass !== undefined) {
620
+ let datesSeancesCodes = lecass.datesSeancesCodes
621
+ if (datesSeancesCodes === undefined) {
622
+ datesSeancesCodes = lecass.datesSeancesCodes = []
623
+ }
624
+ datesSeancesCodes.push(dateSeance.code)
625
+ }
626
+ }
627
+ }
628
+ }
629
+ if (this.follow.has("lecass.debats")) {
630
+ const debatById = this.objectByIdByTableName.debats
631
+ const lecassByLecassidt = this.objectByIdByTableName.lecass
632
+ if (debatById !== undefined && lecassByLecassidt !== undefined) {
633
+ const lecassdebs = await getLecAssDebsFromDatseas(Object.keys(debatById))
634
+ for (const lecassdeb of lecassdebs) {
635
+ const lecass = lecassByLecassidt[lecassdeb.lecassidt] as LecAss
636
+ if (lecass !== undefined) {
637
+ let debatdatseas = lecass.debatdatseas
638
+ if (debatdatseas === undefined) {
639
+ debatdatseas = lecass.debatdatseas = []
640
+ }
641
+ debatdatseas.push(lecassdeb.datsea)
642
+ }
643
+ }
644
+ }
645
+ }
646
+ if (this.follow.has("lecass.lecassraps")) {
647
+ const lecassrapById = this.objectByIdByTableName.lecassrap
648
+ const lecassByLecassidt = this.objectByIdByTableName.lecass
649
+ if (lecassrapById !== undefined && lecassByLecassidt !== undefined) {
650
+ for (const lecassrap of Object.values(lecassrapById) as LecAssRap[]) {
651
+ const lecass = lecassByLecassidt[lecassrap.lecassidt] as LecAss
652
+ if (lecass !== undefined) {
653
+ let lecassrapids = lecass.lecassrapids
654
+ if (lecassrapids === undefined) {
655
+ lecassrapids = lecass.lecassrapids = []
656
+ }
657
+ lecassrapids.push(`${lecassrap.lecassidt} ${lecassrap.rapcod}`)
658
+ }
659
+ }
660
+ }
661
+ }
662
+ if (this.follow.has("lecass.textes")) {
663
+ const texteByTexcod = this.objectByIdByTableName.texte
664
+ const lecassByLecassidt = this.objectByIdByTableName.lecass
665
+ if (texteByTexcod !== undefined && lecassByLecassidt !== undefined) {
666
+ for (const texte of Object.values(texteByTexcod) as Texte[]) {
667
+ const lecass = lecassByLecassidt[texte.lecassidt] as LecAss
668
+ if (lecass !== undefined) {
669
+ let texcods = lecass.texcods
670
+ if (texcods === undefined) {
671
+ texcods = lecass.texcods = []
672
+ }
673
+ texcods.push(texte.texcod)
674
+ }
675
+ }
676
+ }
677
+ }
678
+ if (this.follow.has("lecture.lecasss")) {
679
+ const lecassByLecassidt = this.objectByIdByTableName.lecass
680
+ const lectureByLecidt = this.objectByIdByTableName.lecture
681
+ if (lecassByLecassidt !== undefined && lectureByLecidt !== undefined) {
682
+ for (const lecass of Object.values(lecassByLecassidt) as LecAss[]) {
683
+ const lecture = lectureByLecidt[lecass.lecidt] as Lecture
684
+ if (lecture !== undefined) {
685
+ let lecassidts = lecture.lecassidts
686
+ if (lecassidts === undefined) {
687
+ lecassidts = lecture.lecassidts = []
688
+ }
689
+ lecassidts.push(lecass.lecassidt)
690
+ }
691
+ }
692
+ }
693
+ }
694
+ if (this.follow.has("loi.lectures")) {
695
+ const lectureByLecidt = this.objectByIdByTableName.lecture
696
+ const loiByLoicod = this.objectByIdByTableName.loi
697
+ if (lectureByLecidt !== undefined && loiByLoicod !== undefined) {
698
+ for (const lecture of Object.values(lectureByLecidt) as Lecture[]) {
699
+ const loi = loiByLoicod[lecture.loicod] as Loi
700
+ if (loi !== undefined) {
701
+ let lecidts = loi.lecidts
702
+ if (lecidts === undefined) {
703
+ lecidts = loi.lecidts = []
704
+ }
705
+ lecidts.push(lecture.lecidt)
706
+ }
707
+ }
708
+ }
709
+ }
710
+ if (this.follow.has("rap.docatts")) {
711
+ const docattByDocattcle = this.objectByIdByTableName.docatt
712
+ const rapById = this.objectByIdByTableName.rap
713
+ if (docattByDocattcle !== undefined && rapById !== undefined) {
714
+ for (const docatt of Object.values(docattByDocattcle) as DocAtt[]) {
715
+ const rapcod = docatt.rapcod
716
+ if (rapcod === null) {
717
+ continue
718
+ }
719
+ const rap = rapById[rapcod] as Rap
720
+ if (rap !== undefined) {
721
+ let docattcles = rap.docattcles
722
+ if (docattcles === undefined) {
723
+ docattcles = rap.docattcles = []
724
+ }
725
+ docattcles.push(docatt.docattcle)
726
+ }
727
+ }
728
+ }
729
+ }
730
+ if (this.follow.has("rap.ecrs")) {
731
+ const ecrByEcrnum = this.objectByIdByTableName.ecr
732
+ const rapById = this.objectByIdByTableName.rap
733
+ if (ecrByEcrnum !== undefined && rapById !== undefined) {
734
+ for (const ecr of Object.values(ecrByEcrnum) as Ecr[]) {
735
+ const rapcod = ecr.rapcod
736
+ if (rapcod === null) {
737
+ continue
738
+ }
739
+ const rap = rapById[rapcod] as Rap
740
+ if (rap !== undefined) {
741
+ let ecrnums = rap.ecrnums
742
+ if (ecrnums === undefined) {
743
+ ecrnums = rap.ecrnums = []
744
+ }
745
+ ecrnums.push(ecr.ecrnum)
746
+ }
747
+ }
748
+ }
749
+ }
750
+ if (this.follow.has("rap.orgs")) {
751
+ const orgByOrgcod = this.objectByIdByTableName.org
752
+ const rapById = this.objectByIdByTableName.rap
753
+ if (orgByOrgcod !== undefined && rapById !== undefined) {
754
+ }
755
+ }
756
+ if (this.follow.has("texte.ecrs")) {
757
+ const ecrByEcrnum = this.objectByIdByTableName.ecr
758
+ const texteById = this.objectByIdByTableName.texte
759
+ if (ecrByEcrnum !== undefined && texteById !== undefined) {
760
+ for (const ecr of Object.values(ecrByEcrnum) as Ecr[]) {
761
+ const texcod = ecr.texcod
762
+ if (texcod === null) {
763
+ continue
764
+ }
765
+ const texte = texteById[texcod] as Texte
766
+ if (texte !== undefined) {
767
+ let ecrnums = texte.ecrnums
768
+ if (ecrnums === undefined) {
769
+ ecrnums = texte.ecrnums = []
770
+ }
771
+ ecrnums.push(ecr.ecrnum)
772
+ }
773
+ }
774
+ }
775
+ }
776
+ if (this.follow.has("texte.txtAmeli")) {
777
+ const sesById = this.objectByIdByTableName.ses
778
+ const texteById = this.objectByIdByTableName.texte
779
+ const txtAmeliById = this.objectByIdByTableName.txt_ameli
780
+ if (
781
+ sesById !== undefined &&
782
+ texteById !== undefined &&
783
+ txtAmeliById !== undefined
784
+ ) {
785
+ for (const txtAmeli of Object.values(txtAmeliById) as TxtAmeli[]) {
786
+ const sesinsid = txtAmeli.sesinsid
787
+ const num = parseInt(txtAmeli.num)
788
+ if (sesinsid !== null) {
789
+ const sesins = sesById[sesinsid] as Ses
790
+ if (sesins !== undefined) {
791
+ for (const texte of Object.values(texteById) as Texte[]) {
792
+ if (texte.sesann === sesins.ann && texte.texnum === num) {
793
+ texte.txtAmeliId = txtAmeli.id
794
+ }
795
+ }
796
+ }
797
+ }
798
+ }
799
+ }
800
+ }
801
+ if (this.follow.has("txtAmeli.subs")) {
802
+ const subById = this.objectByIdByTableName.sub
803
+ const txtAmeliById = this.objectByIdByTableName.txt_ameli
804
+ if (subById !== undefined && txtAmeliById !== undefined) {
805
+ for (const sub of Object.values(subById) as Sub[]) {
806
+ const txtAmeli = txtAmeliById[sub.txtid] as TxtAmeli
807
+ if (txtAmeli !== undefined) {
808
+ let subids = txtAmeli.subids
809
+ if (subids === undefined) {
810
+ subids = txtAmeli.subids = []
811
+ }
812
+ subids.push(sub.id)
813
+ }
814
+ }
815
+ }
816
+ }
817
+ }
818
+
819
+ request(tableName: string, id: string): void {
820
+ const visitedIds = this.visitedIdsByTableName[tableName]
821
+ if (visitedIds === undefined || !visitedIds.has(id)) {
822
+ let requestedIds = this.requestedIdsByTableName[tableName]
823
+ if (requestedIds === undefined) {
824
+ requestedIds = this.requestedIdsByTableName[tableName] = new Set()
825
+ }
826
+ requestedIds.add(id)
827
+ }
828
+ }
829
+
830
+ toJson(): any {
831
+ return this.objectByIdByTableName
832
+ }
833
+ }