@tricoteuses/senat 3.1.22 → 3.1.24

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 (391) hide show
  1. package/LICENSE.md +32 -32
  2. package/README.md +326 -326
  3. package/lib/src/index.d.ts +1 -0
  4. package/lib/src/other_types/collaborateurs.d.ts +5 -0
  5. package/lib/src/parsers/collaborateurs.d.ts +44 -0
  6. package/lib/src/parsers/collaborateurs.js +157 -0
  7. package/lib/src/rich_types/sens.d.ts +5 -0
  8. package/lib/src/scripts/data-download.js +1 -0
  9. package/lib/src/scripts/retrieve_collaborateurs.js +166 -0
  10. package/lib/src/scripts/retrieve_cr_seance.js +34 -25
  11. package/lib/src/scripts/retrieve_videos.js +13 -8
  12. package/lib/src/scripts/shared/incremental_import_sql.js +866 -859
  13. package/lib/src/scripts/shared/schema_version.js +84 -84
  14. package/lib/src/scripts/shared/staging_metadata_sql.js +214 -214
  15. package/lib/src/scripts/validate_prefixed_tables.js +12 -12
  16. package/lib/src/server/ameli.js +14 -13
  17. package/lib/src/server/conversion_textes.js +106 -106
  18. package/lib/src/server/debats.js +10 -10
  19. package/lib/src/server/documents.js +22 -22
  20. package/lib/src/server/dosleg.js +33 -33
  21. package/lib/src/server/questions.js +10 -10
  22. package/lib/src/server/scrutins.js +3 -3
  23. package/lib/src/server/sens.js +19 -19
  24. package/lib/src/utils/reunion_odj_building.js +0 -4
  25. package/lib/src/videos/match.js +7 -5
  26. package/lib/src/videos/pipeline.js +26 -19
  27. package/lib/tests/collaborateurs.test.js +115 -0
  28. package/lib/tests/incrementalImportSql.test.js +4 -1
  29. package/package.json +121 -119
  30. package/lib/add-js-extensions-v2.js +0 -23
  31. package/lib/add-js-extensions.js +0 -17
  32. package/lib/aggregates.d.ts +0 -52
  33. package/lib/aggregates.js +0 -930
  34. package/lib/aggregates.mjs +0 -713
  35. package/lib/aggregates.ts +0 -833
  36. package/lib/config.d.ts +0 -10
  37. package/lib/config.js +0 -16
  38. package/lib/config.mjs +0 -16
  39. package/lib/config.ts +0 -26
  40. package/lib/databases.d.ts +0 -2
  41. package/lib/databases.js +0 -26
  42. package/lib/databases.mjs +0 -57
  43. package/lib/databases.ts +0 -71
  44. package/lib/datasets.d.ts +0 -34
  45. package/lib/datasets.js +0 -233
  46. package/lib/datasets.mjs +0 -78
  47. package/lib/datasets.ts +0 -118
  48. package/lib/fields.d.ts +0 -10
  49. package/lib/fields.js +0 -68
  50. package/lib/fields.mjs +0 -22
  51. package/lib/fields.ts +0 -29
  52. package/lib/git.d.ts +0 -26
  53. package/lib/git.js +0 -167
  54. package/lib/index.d.ts +0 -13
  55. package/lib/index.js +0 -1
  56. package/lib/index.mjs +0 -7
  57. package/lib/index.ts +0 -64
  58. package/lib/inserters.d.ts +0 -98
  59. package/lib/inserters.js +0 -500
  60. package/lib/inserters.mjs +0 -360
  61. package/lib/inserters.ts +0 -521
  62. package/lib/legislatures.json +0 -38
  63. package/lib/loaders.d.ts +0 -58
  64. package/lib/loaders.js +0 -286
  65. package/lib/loaders.mjs +0 -158
  66. package/lib/loaders.ts +0 -271
  67. package/lib/model/agenda.d.ts +0 -6
  68. package/lib/model/agenda.js +0 -148
  69. package/lib/model/ameli.d.ts +0 -51
  70. package/lib/model/ameli.js +0 -149
  71. package/lib/model/ameli.mjs +0 -84
  72. package/lib/model/ameli.ts +0 -100
  73. package/lib/model/commission.d.ts +0 -18
  74. package/lib/model/commission.js +0 -269
  75. package/lib/model/debats.d.ts +0 -67
  76. package/lib/model/debats.js +0 -95
  77. package/lib/model/debats.mjs +0 -43
  78. package/lib/model/debats.ts +0 -68
  79. package/lib/model/documents.d.ts +0 -12
  80. package/lib/model/documents.js +0 -151
  81. package/lib/model/dosleg.d.ts +0 -7
  82. package/lib/model/dosleg.js +0 -326
  83. package/lib/model/dosleg.mjs +0 -196
  84. package/lib/model/dosleg.ts +0 -240
  85. package/lib/model/index.d.ts +0 -7
  86. package/lib/model/index.js +0 -7
  87. package/lib/model/index.mjs +0 -5
  88. package/lib/model/index.ts +0 -15
  89. package/lib/model/questions.d.ts +0 -45
  90. package/lib/model/questions.js +0 -89
  91. package/lib/model/questions.mjs +0 -71
  92. package/lib/model/questions.ts +0 -93
  93. package/lib/model/scrutins.d.ts +0 -13
  94. package/lib/model/scrutins.js +0 -114
  95. package/lib/model/seance.d.ts +0 -3
  96. package/lib/model/seance.js +0 -267
  97. package/lib/model/sens.d.ts +0 -146
  98. package/lib/model/sens.js +0 -454
  99. package/lib/model/sens.mjs +0 -415
  100. package/lib/model/sens.ts +0 -516
  101. package/lib/model/texte.d.ts +0 -7
  102. package/lib/model/texte.js +0 -256
  103. package/lib/model/texte.mjs +0 -208
  104. package/lib/model/texte.ts +0 -229
  105. package/lib/model/util.d.ts +0 -9
  106. package/lib/model/util.js +0 -38
  107. package/lib/model/util.mjs +0 -19
  108. package/lib/model/util.ts +0 -32
  109. package/lib/parsers/texte.d.ts +0 -7
  110. package/lib/parsers/texte.js +0 -228
  111. package/lib/raw_types/ameli.d.ts +0 -914
  112. package/lib/raw_types/ameli.js +0 -5
  113. package/lib/raw_types/ameli.mjs +0 -163
  114. package/lib/raw_types/debats.d.ts +0 -207
  115. package/lib/raw_types/debats.js +0 -5
  116. package/lib/raw_types/debats.mjs +0 -58
  117. package/lib/raw_types/dosleg.d.ts +0 -1619
  118. package/lib/raw_types/dosleg.js +0 -5
  119. package/lib/raw_types/dosleg.mjs +0 -438
  120. package/lib/raw_types/questions.d.ts +0 -419
  121. package/lib/raw_types/questions.js +0 -5
  122. package/lib/raw_types/questions.mjs +0 -11
  123. package/lib/raw_types/senat.d.ts +0 -11368
  124. package/lib/raw_types/senat.js +0 -5
  125. package/lib/raw_types/sens.d.ts +0 -8248
  126. package/lib/raw_types/sens.js +0 -5
  127. package/lib/raw_types/sens.mjs +0 -508
  128. package/lib/raw_types_kysely/ameli.d.ts +0 -915
  129. package/lib/raw_types_kysely/ameli.js +0 -7
  130. package/lib/raw_types_kysely/ameli.mjs +0 -5
  131. package/lib/raw_types_kysely/ameli.ts +0 -951
  132. package/lib/raw_types_kysely/debats.d.ts +0 -207
  133. package/lib/raw_types_kysely/debats.js +0 -7
  134. package/lib/raw_types_kysely/debats.mjs +0 -5
  135. package/lib/raw_types_kysely/debats.ts +0 -222
  136. package/lib/raw_types_kysely/dosleg.d.ts +0 -3532
  137. package/lib/raw_types_kysely/dosleg.js +0 -7
  138. package/lib/raw_types_kysely/dosleg.mjs +0 -5
  139. package/lib/raw_types_kysely/dosleg.ts +0 -3621
  140. package/lib/raw_types_kysely/questions.d.ts +0 -414
  141. package/lib/raw_types_kysely/questions.js +0 -7
  142. package/lib/raw_types_kysely/questions.mjs +0 -5
  143. package/lib/raw_types_kysely/questions.ts +0 -426
  144. package/lib/raw_types_kysely/sens.d.ts +0 -4394
  145. package/lib/raw_types_kysely/sens.js +0 -7
  146. package/lib/raw_types_kysely/sens.mjs +0 -5
  147. package/lib/raw_types_kysely/sens.ts +0 -4499
  148. package/lib/raw_types_schemats/ameli.d.ts +0 -539
  149. package/lib/raw_types_schemats/ameli.js +0 -2
  150. package/lib/raw_types_schemats/ameli.mjs +0 -2
  151. package/lib/raw_types_schemats/ameli.ts +0 -601
  152. package/lib/raw_types_schemats/debats.d.ts +0 -127
  153. package/lib/raw_types_schemats/debats.js +0 -2
  154. package/lib/raw_types_schemats/debats.mjs +0 -2
  155. package/lib/raw_types_schemats/debats.ts +0 -145
  156. package/lib/raw_types_schemats/dosleg.d.ts +0 -977
  157. package/lib/raw_types_schemats/dosleg.js +0 -2
  158. package/lib/raw_types_schemats/dosleg.mjs +0 -2
  159. package/lib/raw_types_schemats/dosleg.ts +0 -2193
  160. package/lib/raw_types_schemats/questions.d.ts +0 -235
  161. package/lib/raw_types_schemats/questions.js +0 -2
  162. package/lib/raw_types_schemats/questions.mjs +0 -2
  163. package/lib/raw_types_schemats/questions.ts +0 -249
  164. package/lib/raw_types_schemats/sens.d.ts +0 -6915
  165. package/lib/raw_types_schemats/sens.js +0 -2
  166. package/lib/raw_types_schemats/sens.mjs +0 -2
  167. package/lib/raw_types_schemats/sens.ts +0 -2907
  168. package/lib/scripts/convert_data.js +0 -354
  169. package/lib/scripts/convert_data.mjs +0 -181
  170. package/lib/scripts/convert_data.ts +0 -243
  171. package/lib/scripts/data-download.d.ts +0 -1
  172. package/lib/scripts/data-download.js +0 -12
  173. package/lib/scripts/datautil.d.ts +0 -8
  174. package/lib/scripts/datautil.js +0 -34
  175. package/lib/scripts/datautil.mjs +0 -16
  176. package/lib/scripts/datautil.ts +0 -19
  177. package/lib/scripts/images/transparent_150x192.jpg +0 -0
  178. package/lib/scripts/images/transparent_155x225.jpg +0 -0
  179. package/lib/scripts/parse_textes.d.ts +0 -1
  180. package/lib/scripts/parse_textes.js +0 -44
  181. package/lib/scripts/parse_textes.mjs +0 -46
  182. package/lib/scripts/parse_textes.ts +0 -65
  183. package/lib/scripts/retrieve_agenda.d.ts +0 -1
  184. package/lib/scripts/retrieve_agenda.js +0 -132
  185. package/lib/scripts/retrieve_cr_commission.d.ts +0 -1
  186. package/lib/scripts/retrieve_cr_commission.js +0 -364
  187. package/lib/scripts/retrieve_cr_seance.d.ts +0 -6
  188. package/lib/scripts/retrieve_cr_seance.js +0 -347
  189. package/lib/scripts/retrieve_documents.d.ts +0 -3
  190. package/lib/scripts/retrieve_documents.js +0 -219
  191. package/lib/scripts/retrieve_documents.mjs +0 -249
  192. package/lib/scripts/retrieve_documents.ts +0 -298
  193. package/lib/scripts/retrieve_open_data.d.ts +0 -1
  194. package/lib/scripts/retrieve_open_data.js +0 -315
  195. package/lib/scripts/retrieve_open_data.mjs +0 -217
  196. package/lib/scripts/retrieve_open_data.ts +0 -268
  197. package/lib/scripts/retrieve_senateurs_photos.d.ts +0 -1
  198. package/lib/scripts/retrieve_senateurs_photos.js +0 -147
  199. package/lib/scripts/retrieve_senateurs_photos.mjs +0 -147
  200. package/lib/scripts/retrieve_senateurs_photos.ts +0 -177
  201. package/lib/scripts/retrieve_videos.d.ts +0 -1
  202. package/lib/scripts/retrieve_videos.js +0 -461
  203. package/lib/scripts/shared/cli_helpers.d.ts +0 -95
  204. package/lib/scripts/shared/cli_helpers.js +0 -91
  205. package/lib/scripts/shared/cli_helpers.ts +0 -36
  206. package/lib/scripts/shared/util.d.ts +0 -4
  207. package/lib/scripts/shared/util.js +0 -35
  208. package/lib/scripts/shared/util.ts +0 -33
  209. package/lib/scripts/test_iter_load.d.ts +0 -1
  210. package/lib/scripts/test_iter_load.js +0 -12
  211. package/lib/src/ameli.d.ts +0 -66
  212. package/lib/src/ameli.js +0 -1
  213. package/lib/src/config.d.ts +0 -43
  214. package/lib/src/config.js +0 -37
  215. package/lib/src/conversion_textes.d.ts +0 -11
  216. package/lib/src/conversion_textes.js +0 -320
  217. package/lib/src/databases.d.ts +0 -3
  218. package/lib/src/databases.js +0 -26
  219. package/lib/src/databases_postgres.d.ts +0 -4
  220. package/lib/src/databases_postgres.js +0 -23
  221. package/lib/src/datasets.d.ts +0 -38
  222. package/lib/src/datasets.js +0 -247
  223. package/lib/src/db_types/ameli.d.ts +0 -1762
  224. package/lib/src/db_types/ameli.js +0 -1074
  225. package/lib/src/db_types/debats.d.ts +0 -380
  226. package/lib/src/db_types/debats.js +0 -266
  227. package/lib/src/db_types/dosleg.d.ts +0 -2954
  228. package/lib/src/db_types/dosleg.js +0 -2005
  229. package/lib/src/db_types/questions.d.ts +0 -699
  230. package/lib/src/db_types/questions.js +0 -493
  231. package/lib/src/db_types/sens.d.ts +0 -7843
  232. package/lib/src/db_types/sens.js +0 -4691
  233. package/lib/src/debats.d.ts +0 -38
  234. package/lib/src/debats.js +0 -1
  235. package/lib/src/dosleg.d.ts +0 -142
  236. package/lib/src/dosleg.js +0 -193
  237. package/lib/src/git.d.ts +0 -27
  238. package/lib/src/git.js +0 -251
  239. package/lib/src/loaders.d.ts +0 -52
  240. package/lib/src/loaders.js +0 -260
  241. package/lib/src/model/agenda.d.ts +0 -6
  242. package/lib/src/model/agenda.js +0 -148
  243. package/lib/src/model/ameli.d.ts +0 -67
  244. package/lib/src/model/ameli.js +0 -150
  245. package/lib/src/model/ameli_postgres.d.ts +0 -67
  246. package/lib/src/model/ameli_postgres.js +0 -150
  247. package/lib/src/model/commission.d.ts +0 -19
  248. package/lib/src/model/commission.js +0 -269
  249. package/lib/src/model/debats.d.ts +0 -39
  250. package/lib/src/model/debats.js +0 -112
  251. package/lib/src/model/documents.d.ts +0 -32
  252. package/lib/src/model/documents.js +0 -182
  253. package/lib/src/model/dosleg.d.ts +0 -144
  254. package/lib/src/model/dosleg.js +0 -468
  255. package/lib/src/model/index.d.ts +0 -7
  256. package/lib/src/model/index.js +0 -7
  257. package/lib/src/model/questions.d.ts +0 -54
  258. package/lib/src/model/questions.js +0 -91
  259. package/lib/src/model/scrutins.d.ts +0 -48
  260. package/lib/src/model/scrutins.js +0 -121
  261. package/lib/src/model/seance.d.ts +0 -3
  262. package/lib/src/model/seance.js +0 -267
  263. package/lib/src/model/sens.d.ts +0 -112
  264. package/lib/src/model/sens.js +0 -385
  265. package/lib/src/model/util.d.ts +0 -1
  266. package/lib/src/model/util.js +0 -15
  267. package/lib/src/other_types/questions.d.ts +0 -2
  268. package/lib/src/other_types/questions.js +0 -1
  269. package/lib/src/questions.d.ts +0 -53
  270. package/lib/src/questions.js +0 -1
  271. package/lib/src/raw_types/ameli.d.ts +0 -1762
  272. package/lib/src/raw_types/ameli.js +0 -1074
  273. package/lib/src/raw_types/debats.d.ts +0 -380
  274. package/lib/src/raw_types/debats.js +0 -266
  275. package/lib/src/raw_types/dosleg.d.ts +0 -2954
  276. package/lib/src/raw_types/dosleg.js +0 -2005
  277. package/lib/src/raw_types/questions.d.ts +0 -699
  278. package/lib/src/raw_types/questions.js +0 -493
  279. package/lib/src/raw_types/senat.d.ts +0 -11372
  280. package/lib/src/raw_types/senat.js +0 -5
  281. package/lib/src/raw_types/sens.d.ts +0 -7843
  282. package/lib/src/raw_types/sens.js +0 -4691
  283. package/lib/src/raw_types_schemats/ameli.d.ts +0 -541
  284. package/lib/src/raw_types_schemats/ameli.js +0 -2
  285. package/lib/src/raw_types_schemats/debats.d.ts +0 -127
  286. package/lib/src/raw_types_schemats/debats.js +0 -2
  287. package/lib/src/raw_types_schemats/dosleg.d.ts +0 -977
  288. package/lib/src/raw_types_schemats/dosleg.js +0 -2
  289. package/lib/src/raw_types_schemats/questions.d.ts +0 -237
  290. package/lib/src/raw_types_schemats/questions.js +0 -2
  291. package/lib/src/raw_types_schemats/sens.d.ts +0 -2709
  292. package/lib/src/raw_types_schemats/sens.js +0 -2
  293. package/lib/src/rich_types/agenda.d.ts +0 -45
  294. package/lib/src/rich_types/agenda.js +0 -1
  295. package/lib/src/rich_types/compte_rendu.d.ts +0 -83
  296. package/lib/src/rich_types/compte_rendu.js +0 -1
  297. package/lib/src/rich_types/sessions.d.ts +0 -6
  298. package/lib/src/rich_types/sessions.js +0 -19
  299. package/lib/src/rich_types/texte.d.ts +0 -72
  300. package/lib/src/rich_types/texte.js +0 -15
  301. package/lib/src/scripts/test_iter_load.d.ts +0 -1
  302. package/lib/src/scripts/test_iter_load.js +0 -12
  303. package/lib/src/sens.d.ts +0 -104
  304. package/lib/src/sens.js +0 -1
  305. package/lib/src/types/agenda.d.ts +0 -45
  306. package/lib/src/types/agenda.js +0 -1
  307. package/lib/src/types/ameli.d.ts +0 -1762
  308. package/lib/src/types/ameli.js +0 -1074
  309. package/lib/src/types/compte_rendu.d.ts +0 -83
  310. package/lib/src/types/compte_rendu.js +0 -1
  311. package/lib/src/types/debats.d.ts +0 -380
  312. package/lib/src/types/debats.js +0 -266
  313. package/lib/src/types/dosleg.d.ts +0 -2954
  314. package/lib/src/types/dosleg.js +0 -2005
  315. package/lib/src/types/questions.d.ts +0 -699
  316. package/lib/src/types/questions.js +0 -493
  317. package/lib/src/types/sens.d.ts +0 -7843
  318. package/lib/src/types/sens.js +0 -4691
  319. package/lib/src/types/sessions.d.ts +0 -6
  320. package/lib/src/types/sessions.js +0 -19
  321. package/lib/src/types/texte.d.ts +0 -72
  322. package/lib/src/types/texte.js +0 -15
  323. package/lib/src/validators/config.d.ts +0 -9
  324. package/lib/src/validators/config.js +0 -10
  325. package/lib/strings.d.ts +0 -1
  326. package/lib/strings.js +0 -18
  327. package/lib/strings.mjs +0 -18
  328. package/lib/strings.ts +0 -26
  329. package/lib/tsconfig.tsbuildinfo +0 -1
  330. package/lib/types/agenda.d.ts +0 -44
  331. package/lib/types/agenda.js +0 -1
  332. package/lib/types/ameli.d.ts +0 -5
  333. package/lib/types/ameli.js +0 -1
  334. package/lib/types/ameli.mjs +0 -13
  335. package/lib/types/ameli.ts +0 -21
  336. package/lib/types/compte_rendu.d.ts +0 -83
  337. package/lib/types/compte_rendu.js +0 -1
  338. package/lib/types/debats.d.ts +0 -2
  339. package/lib/types/debats.js +0 -1
  340. package/lib/types/debats.mjs +0 -2
  341. package/lib/types/debats.ts +0 -6
  342. package/lib/types/dosleg.d.ts +0 -70
  343. package/lib/types/dosleg.js +0 -1
  344. package/lib/types/dosleg.mjs +0 -151
  345. package/lib/types/dosleg.ts +0 -284
  346. package/lib/types/questions.d.ts +0 -2
  347. package/lib/types/questions.js +0 -1
  348. package/lib/types/questions.mjs +0 -1
  349. package/lib/types/questions.ts +0 -3
  350. package/lib/types/sens.d.ts +0 -10
  351. package/lib/types/sens.js +0 -1
  352. package/lib/types/sens.mjs +0 -1
  353. package/lib/types/sens.ts +0 -12
  354. package/lib/types/sessions.d.ts +0 -5
  355. package/lib/types/sessions.js +0 -84
  356. package/lib/types/sessions.mjs +0 -43
  357. package/lib/types/sessions.ts +0 -42
  358. package/lib/types/texte.d.ts +0 -74
  359. package/lib/types/texte.js +0 -16
  360. package/lib/types/texte.mjs +0 -16
  361. package/lib/types/texte.ts +0 -76
  362. package/lib/typings/windows-1252.d.js +0 -2
  363. package/lib/typings/windows-1252.d.mjs +0 -2
  364. package/lib/typings/windows-1252.d.ts +0 -11
  365. package/lib/utils/cr_spliting.d.ts +0 -28
  366. package/lib/utils/cr_spliting.js +0 -265
  367. package/lib/utils/date.d.ts +0 -10
  368. package/lib/utils/date.js +0 -100
  369. package/lib/utils/nvs-timecode.d.ts +0 -7
  370. package/lib/utils/nvs-timecode.js +0 -79
  371. package/lib/utils/reunion_grouping.d.ts +0 -9
  372. package/lib/utils/reunion_grouping.js +0 -361
  373. package/lib/utils/reunion_odj_building.d.ts +0 -5
  374. package/lib/utils/reunion_odj_building.js +0 -154
  375. package/lib/utils/reunion_parsing.d.ts +0 -23
  376. package/lib/utils/reunion_parsing.js +0 -209
  377. package/lib/utils/scoring.d.ts +0 -14
  378. package/lib/utils/scoring.js +0 -147
  379. package/lib/utils/string_cleaning.d.ts +0 -7
  380. package/lib/utils/string_cleaning.js +0 -57
  381. package/lib/validators/config.d.ts +0 -9
  382. package/lib/validators/config.js +0 -10
  383. package/lib/validators/config.mjs +0 -54
  384. package/lib/validators/config.ts +0 -79
  385. package/lib/validators/senat.d.ts +0 -0
  386. package/lib/validators/senat.js +0 -28
  387. package/lib/validators/senat.mjs +0 -24
  388. package/lib/validators/senat.ts +0 -26
  389. /package/lib/{add-js-extensions-v2.d.ts → src/other_types/collaborateurs.js} +0 -0
  390. /package/lib/{add-js-extensions.d.ts → src/scripts/retrieve_collaborateurs.d.ts} +0 -0
  391. /package/lib/{scripts/convert_data.d.ts → tests/collaborateurs.test.d.ts} +0 -0
@@ -1,468 +0,0 @@
1
- import { streamUnsafeQuery } from "../databases_postgres.js";
2
- function stripTrailingHashesSql(expr) {
3
- return `regexp_replace(${expr}, '#+$', '')`;
4
- }
5
- function buildAuteursTexteSql(texteIdSql) {
6
- return `
7
- (
8
- select coalesce(json_agg(author_rows order by author_rows.ordre_num nulls last), '[]'::json)
9
- from (
10
- select
11
- auteur.prenom as prenom,
12
- auteur.nomuse as nom_usuel,
13
- auteur.autmat as matricule,
14
- ecr.ecrnumtri::text as ordre,
15
- ecr.ecrnumtri as ordre_num,
16
- rolsig.rolsiglib as role,
17
- ecr.ecrqua as qualite
18
- from senat.dosleg_auteur as auteur
19
- left join senat.dosleg_ecr as ecr on ecr.autcod = auteur.autcod
20
- left join senat.dosleg_rolsig as rolsig on rolsig.signataire = ecr.signataire
21
- where ecr.texcod = ${texteIdSql}
22
- ) as author_rows
23
- )
24
- `;
25
- }
26
- function buildAuteursRapportSql(rapportIdSql) {
27
- return `
28
- (
29
- select coalesce(json_agg(author_rows order by author_rows.ordre_num nulls last), '[]'::json)
30
- from (
31
- select
32
- auteur.prenom as prenom,
33
- auteur.nomuse as nom_usuel,
34
- auteur.autmat as matricule,
35
- ecr.ecrnumtri::text as ordre,
36
- ecr.ecrnumtri as ordre_num,
37
- rolsig.rolsiglib as role,
38
- ecr.ecrqua as qualite
39
- from senat.dosleg_auteur as auteur
40
- left join senat.dosleg_ecr as ecr on ecr.autcod = auteur.autcod
41
- left join senat.dosleg_rolsig as rolsig on rolsig.signataire = ecr.signataire
42
- where ecr.rapcod = ${rapportIdSql}
43
- ) as author_rows
44
- )
45
- `;
46
- }
47
- function buildDocumentsAttachesSql(rapportIdSql) {
48
- return `
49
- (
50
- select coalesce(json_agg(attached_rows), '[]'::json)
51
- from (
52
- select
53
- docatt.docatturl as url,
54
- typatt.typattlib as type_document
55
- from senat.dosleg_docatt as docatt
56
- left join senat.dosleg_typatt as typatt on docatt.typattcod = typatt.typattcod
57
- where docatt.rapcod = ${rapportIdSql}
58
- ) as attached_rows
59
- )
60
- `;
61
- }
62
- function buildTextesSql(lectureAssembleeIdSql) {
63
- return `
64
- (
65
- select coalesce(json_agg(text_rows order by text_rows.ordre_tri nulls last), '[]'::json)
66
- from (
67
- select
68
- texte.texnum as numero,
69
- texte.orgcod as code_organisme,
70
- case
71
- when texte.texurl is not null then
72
- ${stripTrailingHashesSql("regexp_replace(trim(texte.texurl), '^(.*/)?(.*?)(\\.html)?$', '\\2')")}
73
- else null
74
- end as id,
75
- case
76
- when texte.typurl = 'I' then
77
- ${stripTrailingHashesSql("'https://www.senat.fr/leg/' || rtrim(texte.texurl)")}
78
- else ${stripTrailingHashesSql("rtrim(texte.texurl)")}
79
- end as url,
80
- rtrim(oritxt.oritxtlib) as origine,
81
- oritxt.oriordre as ordre_origine,
82
- oritxt.oritxtado as code_adoption,
83
- oritxt.oritxtmod as modification,
84
- rtrim(typtxt.typtxtlib) as type,
85
- to_char(texte.txtoritxtdat, 'YYYY-MM-DD') as date,
86
- texte.sesann::int as session,
87
- ${buildAuteursTexteSql("texte.texcod")} as auteurs,
88
- array_position(array['0','2','1'], oritxt.oriordre) as ordre_tri
89
- from senat.dosleg_texte as texte
90
- left join senat.dosleg_oritxt as oritxt on oritxt.oritxtcod = texte.oritxtcod
91
- left join senat.dosleg_typtxt as typtxt on typtxt.typtxtcod = texte.typtxtcod
92
- where texte.lecassidt = ${lectureAssembleeIdSql}
93
- ) as text_rows
94
- )
95
- `;
96
- }
97
- function buildRapportsSql(lectureAssembleeIdSql) {
98
- return `
99
- (
100
- select coalesce(json_agg(report_rows), '[]'::json)
101
- from (
102
- select
103
- rap.rapnum as numero,
104
- raporg.orgcod as code_organisme,
105
- case
106
- when rap.rapurl is not null then
107
- ${stripTrailingHashesSql("regexp_replace(trim(rap.rapurl), '^(.*/)?(.*?)(\\.html)?$', '\\2')")}
108
- else null
109
- end as id,
110
- case
111
- when rap.typurl = 'I' then
112
- ${stripTrailingHashesSql("'https://www.senat.fr/rap/' || rtrim(rap.rapurl)")}
113
- else ${stripTrailingHashesSql("rtrim(rap.rapurl)")}
114
- end as url,
115
- rtrim(denrap.libdenrap) as type,
116
- rtrim(rtrim(rap.raptil)) as titre,
117
- rtrim(rtrim(rap.rapsoustit)) as sous_titre,
118
- to_char(rap.date_depot, 'YYYY-MM-DD') as date,
119
- rap.sesann::int as session,
120
- ${buildAuteursRapportSql("rap.rapcod")} as auteurs,
121
- ${buildDocumentsAttachesSql("rap.rapcod")} as documents_annexes
122
- from senat.dosleg_rap as rap
123
- left join senat.dosleg_raporg as raporg on raporg.rapcod = rap.rapcod
124
- left join senat.dosleg_denrap as denrap on denrap.coddenrap = rap.coddenrap
125
- left join senat.dosleg_lecassrap as lecassrap on lecassrap.rapcod = rap.rapcod
126
- where lecassrap.lecassidt = ${lectureAssembleeIdSql}
127
- ) as report_rows
128
- )
129
- `;
130
- }
131
- function buildDatesSeancesSql(lectureAssembleeIdSql) {
132
- return `
133
- (
134
- select coalesce(json_agg(date_rows), '[]'::json)
135
- from (
136
- select to_char(date_seance.date_s, 'YYYY-MM-DD') as date
137
- from senat.dosleg_date_seance as date_seance
138
- where date_seance.lecidt = ${lectureAssembleeIdSql}
139
- ) as date_rows
140
- )
141
- `;
142
- }
143
- function buildLecturesAssembleeSql(lectureIdSql) {
144
- return `
145
- (
146
- select coalesce(json_agg(assembly_rows order by assembly_rows.ordre_lecture_assemblee_num nulls last), '[]'::json)
147
- from (
148
- select
149
- rtrim(ass.libass) as assemblee,
150
- org.orgnom as libelle_organisme,
151
- org.senorgcod as code_organisme,
152
- lecass.ordreass::text as ordre_lecture_assemblee,
153
- lecass.ordreass as ordre_lecture_assemblee_num,
154
- lecass.sesann::int as session,
155
- orippr.oripprlib as origine_proposition,
156
- lecass.ptlnum as numero_petite_loi,
157
- lecass.ptlurl as url_petite_loi,
158
- lecass.loiintmod as loi_intitule_modifie,
159
- lecass.debatsurl as url_cr_debats,
160
- to_char(lecass.lecassamecomdat, 'YYYY-MM-DD') as date_publication_amendements_commission,
161
- to_char(lecass.lecassamedat, 'YYYY-MM-DD') as date_publication_amendements_seance,
162
- ${buildTextesSql("lecass.lecassidt")} as textes,
163
- ${buildRapportsSql("lecass.lecassidt")} as rapports,
164
- ${buildDatesSeancesSql("lecass.lecassidt")} as dates_seances
165
- from senat.dosleg_lecass as lecass
166
- left join senat.dosleg_ass as ass on ass.codass = lecass.codass
167
- left join senat.dosleg_org as org on org.orgcod = lecass.orgcod
168
- left join senat.dosleg_orippr as orippr on orippr.oripprcod = lecass.orippr
169
- where lecass.lecidt = ${lectureIdSql}
170
- ) as assembly_rows
171
- )
172
- `;
173
- }
174
- function buildLecturesSql(loiIdSql) {
175
- return `
176
- (
177
- select coalesce(json_agg(lecture_rows order by lecture_rows.ordre_lecture_num nulls last), '[]'::json)
178
- from (
179
- select
180
- rtrim(typlec.typleclib) as type_lecture,
181
- rtrim(lecture.leccom) as libelle,
182
- typlec.typlecord::text as ordre_lecture,
183
- typlec.typlecord as ordre_lecture_num,
184
- ${buildLecturesAssembleeSql("lecture.lecidt")} as lectures_assemblee
185
- from senat.dosleg_lecture as lecture
186
- left join senat.dosleg_typlec as typlec on typlec.typleccod = lecture.typleccod
187
- where lecture.loicod = ${loiIdSql}
188
- ) as lecture_rows
189
- )
190
- `;
191
- }
192
- function buildThemesSql(loiIdSql) {
193
- return `
194
- (
195
- select coalesce(json_agg(theme_rows), '[]'::json)
196
- from (
197
- select the.thelib as libelle
198
- from senat.dosleg_the as the
199
- left join senat.dosleg_loithe as loithe on loithe.thecle = the.thecle
200
- where loithe.loicod = ${loiIdSql}
201
- ) as theme_rows
202
- )
203
- `;
204
- }
205
- function buildFindAllDossiersQuery() {
206
- return {
207
- params: [],
208
- query: `
209
- select
210
- rtrim(loi.loicod) as code,
211
- loi.numero,
212
- loi.signet,
213
- nullif(regexp_replace(loi.url_an, '^.*\\/(DL[^\\/]+)\\.asp$', '\\1'), '') as code_dossier_an,
214
- loi.signetalt as signet_alternatif,
215
- rtrim(loi.motclef) as mot_cle,
216
- rtrim(loi.loient) as titre_court,
217
- rtrim(typloi.typloiden) || ' ' || rtrim(loi.loitit) as titre,
218
- rtrim(typloi.typloiden) || ' ' || rtrim(loi.loiint) as titre_long,
219
- rtrim(typloi.typloiden) || ' ' || rtrim(loi.loiintori) as titre_long_original,
220
- 'https://www.senat.fr/dossier-legislatif/' || loi.signet || '.html' as url,
221
- loi.urgence,
222
- rtrim(typloi.groupe) as code_nature_dossier,
223
- rtrim(typloi.typloilib) as libelle_type_dossier,
224
- rtrim(etaloi.etaloilib) as etat_dossier,
225
- loi.url_an as url_dossier_assemblee_nationale,
226
- loi.url_presart as url_presentation_articles,
227
- loi.url_ordonnance as url_ordonnance,
228
- loi.orgcod as code_organisme_resolution,
229
- deccoc.deccoclib as libelle_decision_CoC,
230
- to_char(loi.date_decision, 'YYYY-MM-DD') as date_decision_CoC,
231
- loi.num_decision as num_decision_CoC,
232
- loi.deccocurl as url_decision_CoC,
233
- loi.doscocurl as url_dossier_CoC,
234
- to_char(loi.saisine_date, 'YYYY-MM-DD') as date_saisine_CoC,
235
- loi.saisine_par as condition_saisine_CoC,
236
- to_char(loi.proaccdat, 'YYYY-MM-DD') as date_procedure_acceleree,
237
- to_char(loi.proaccoppdat, 'YYYY-MM-DD') as date_opposition_procedure_acceleree,
238
- to_char(loi.retproaccdat, 'YYYY-MM-DD') as date_retrait_procedure_acceleree,
239
- to_char(loi.date_loi, 'YYYY-MM-DD') as date_promulgation,
240
- case
241
- when loi.loititjo is not null then rtrim(typloi.typloiden) || ' ' || rtrim(loi.loititjo)
242
- else ''
243
- end as titre_JO,
244
- to_char(loi.loidatjo, 'YYYY-MM-DD') as date_publication_JO,
245
- loi.loinumjo as numero_JO,
246
- loi.url_jo as url_JO,
247
- to_char(loi.loidatjo2, 'YYYY-MM-DD') as date_publication_JO_correctif_1,
248
- loi.loinumjo2 as numero_JO_correctif_1,
249
- loi.url_jo2 as url_JO_correctif_1,
250
- to_char(loi.loidatjo3, 'YYYY-MM-DD') as date_publication_JO_correctif_2,
251
- loi.loinumjo3 as numero_JO_correctif_2,
252
- loi.url_jo3 as url_JO_correctif_2,
253
- ${buildLecturesSql("loi.loicod")} as lectures,
254
- ${buildThemesSql("loi.loicod")} as themes
255
- from senat.dosleg_loi as loi
256
- left join senat.dosleg_typloi as typloi on typloi.typloicod = loi.typloicod
257
- left join senat.dosleg_etaloi as etaloi on etaloi.etaloicod = loi.etaloicod
258
- left join senat.dosleg_deccoc as deccoc on deccoc.deccoccod = loi.deccoccod
259
- `,
260
- };
261
- }
262
- export async function* findAllDossiers() {
263
- const { query, params } = buildFindAllDossiersQuery();
264
- for await (const row of streamUnsafeQuery(query, params)) {
265
- if (!row.signet) {
266
- continue;
267
- }
268
- yield {
269
- ...row,
270
- signet: row.signet,
271
- lectures: row.lectures ?? [],
272
- themes: row.themes ?? [],
273
- };
274
- }
275
- }
276
- export function getCodeActeLecture(codeNatureDossier, typeLecture, assemblee) {
277
- const codeAssemblee = assemblee === "Sénat" ? "SN" : assemblee === "Assemblée nationale" ? "AN" : null;
278
- if (typeLecture === "Commission mixte paritaire") {
279
- return "CMP";
280
- }
281
- if (!codeAssemblee) {
282
- return null;
283
- }
284
- if (["ppl", "pjl", "cvn"].includes(codeNatureDossier) && typeLecture === "Première lecture") {
285
- return `${codeAssemblee}1`;
286
- }
287
- if (["ppl", "pjl", "cvn"].includes(codeNatureDossier) && typeLecture === "Deuxième lecture") {
288
- return `${codeAssemblee}2`;
289
- }
290
- if (["ppl", "pjl", "cvn"].includes(codeNatureDossier) && typeLecture === "Troisième lecture") {
291
- return `${codeAssemblee}3`;
292
- }
293
- if (["ppl", "pjl", "cvn"].includes(codeNatureDossier) && typeLecture === "Quatrième lecture") {
294
- return `${codeAssemblee}4`;
295
- }
296
- if (["ppl", "pjl", "cvn"].includes(codeNatureDossier) && typeLecture === "Nouvelle lecture") {
297
- return `${codeAssemblee}NLEC`;
298
- }
299
- if (["ppl", "pjl", "cvn"].includes(codeNatureDossier) && typeLecture === "Lecture définitive") {
300
- return `${codeAssemblee}LDEF`;
301
- }
302
- if (["ppr"].includes(codeNatureDossier) && typeLecture === "Première lecture") {
303
- return `${codeAssemblee}LUNI`;
304
- }
305
- return null;
306
- }
307
- function getDateSortValue(value) {
308
- if (!value) {
309
- return Number.POSITIVE_INFINITY;
310
- }
311
- const timestamp = new Date(value).getTime();
312
- return Number.isNaN(timestamp) ? Number.POSITIVE_INFINITY : timestamp;
313
- }
314
- function compareByDate(left, right) {
315
- return getDateSortValue(left.date) - getDateSortValue(right.date);
316
- }
317
- function getPhasePrefix(lecture, assemblee) {
318
- if (assemblee !== "Sénat")
319
- return null;
320
- const typeLibelle = (lecture.type_lecture || "").toLowerCase();
321
- if (typeLibelle.includes("cmp") || typeLibelle.includes("mixte"))
322
- return "CMP";
323
- if (typeLibelle.includes("nouvelle lecture"))
324
- return "SNNLEC";
325
- if (typeLibelle.includes("définitive"))
326
- return "SNLDEF";
327
- if (typeLibelle.includes("unique"))
328
- return "SNLUNI";
329
- if (lecture.ordre_lecture) {
330
- return `SN${lecture.ordre_lecture}`;
331
- }
332
- if (typeLibelle.includes("première"))
333
- return "SN1";
334
- if (typeLibelle.includes("deuxième") || typeLibelle.includes("seconde"))
335
- return "SN2";
336
- return "SN1";
337
- }
338
- export function buildActesLegislatifs(dossier) {
339
- const actes = [];
340
- const loiSignet = dossier.signet;
341
- const lectures = dossier.lectures ?? [];
342
- for (const lecture of lectures) {
343
- const lecturesAssemblee = lecture.lectures_assemblee ?? [];
344
- for (const lecAss of lecturesAssemblee) {
345
- if (lecAss.assemblee !== "Sénat")
346
- continue;
347
- const phasePrefix = getPhasePrefix(lecture, lecAss.assemblee);
348
- if (!phasePrefix)
349
- continue;
350
- const textes = lecAss.textes ?? [];
351
- const textesTries = [...textes].sort(compareByDate);
352
- const depotTexte = textesTries.find((t) => (t.origine || "").toLowerCase().includes("déposé") ||
353
- (t.origine || "").toLowerCase().includes("transmis") ||
354
- t.ordre_origine === "0");
355
- if (depotTexte && depotTexte.date) {
356
- actes.push({
357
- code_acte: `${phasePrefix}-DEPOT`,
358
- date: depotTexte.date,
359
- libelle: `Dépôt du texte n°${depotTexte.numero}`,
360
- id: depotTexte.id,
361
- numero: depotTexte.numero,
362
- uid: `${loiSignet}-${phasePrefix}-DEPOT`,
363
- session: lecAss.session,
364
- chambre: "SN",
365
- signet_dossier: loiSignet,
366
- texte_url: depotTexte.url,
367
- code_organisme: null,
368
- });
369
- }
370
- const rapports = lecAss.rapports ?? [];
371
- for (const rap of rapports) {
372
- if (rap.date) {
373
- actes.push({
374
- code_acte: `${phasePrefix}-COM-FOND`,
375
- date: rap.date,
376
- libelle: `Rapport n°${rap.numero} de la commission`,
377
- id: rap.id,
378
- numero: rap.numero,
379
- code_organisme: rap.code_organisme ?? null,
380
- uid: `${loiSignet}-${phasePrefix}-COM`,
381
- session: lecAss.session,
382
- chambre: "SN",
383
- signet_dossier: loiSignet,
384
- texte_url: rap.url,
385
- });
386
- }
387
- }
388
- const datesSeances = lecAss.dates_seances ?? [];
389
- if (datesSeances.length > 0) {
390
- datesSeances.sort(compareByDate);
391
- const premiereSeance = datesSeances[0];
392
- if (premiereSeance && premiereSeance.date) {
393
- actes.push({
394
- code_acte: `${phasePrefix}-DEBATS-SEANCE`,
395
- date: premiereSeance.date,
396
- libelle: "Discussion en séance publique",
397
- id: null,
398
- uid: `${loiSignet}-${phasePrefix}-DEBATS-SEANCE`,
399
- session: lecAss.session,
400
- chambre: "SN",
401
- signet_dossier: loiSignet,
402
- code_organisme: null,
403
- });
404
- }
405
- }
406
- const texteFinal = [...textesTries].reverse().find((t) => {
407
- const origine = (t.origine || "").toLowerCase();
408
- return (origine.includes("adopté") ||
409
- origine.includes("rejeté") ||
410
- origine.includes("devenu résolution") ||
411
- t.code_adoption === "O");
412
- });
413
- if (texteFinal && texteFinal.date) {
414
- const origine = (texteFinal.origine || "").toLowerCase();
415
- let libelleStatut = "Adopté";
416
- if (origine.includes("rejeté")) {
417
- libelleStatut = "Rejeté";
418
- }
419
- else if (origine.includes("devenue résolution")) {
420
- libelleStatut = "Adopté";
421
- }
422
- actes.push({
423
- code_acte: `${phasePrefix}-DEBATS-DEC`,
424
- date: texteFinal.date,
425
- libelle: `${libelleStatut === "Adopté" ? "Adoption" : "Rejet"} (Texte n°${texteFinal.numero})`,
426
- id: texteFinal.id,
427
- numero: texteFinal.numero,
428
- adoption: libelleStatut,
429
- uid: `${loiSignet}-DEC-${texteFinal.numero}`,
430
- session: lecAss.session,
431
- chambre: "SN",
432
- signet_dossier: loiSignet,
433
- texte_url: texteFinal.url,
434
- code_organisme: null,
435
- });
436
- }
437
- }
438
- }
439
- if (dossier.date_decision_CoC) {
440
- actes.push({
441
- code_acte: "CC",
442
- date: dossier.date_decision_CoC,
443
- libelle: "Décision du Conseil constitutionnel",
444
- id: dossier.url_decision_CoC,
445
- uid: `${loiSignet}-CC`,
446
- chambre: "AN",
447
- signet_dossier: loiSignet,
448
- code_organisme: null,
449
- texte_url: dossier.url_decision_CoC || dossier.url_dossier_CoC,
450
- });
451
- }
452
- if (dossier.date_promulgation) {
453
- actes.push({
454
- code_acte: "PROM",
455
- date: dossier.date_promulgation,
456
- libelle: "Promulgation de la loi",
457
- date_publication_JO: dossier.date_publication_JO,
458
- numero_JO: dossier.numero_JO,
459
- url_legifrance: dossier.url_JO,
460
- id: dossier.url_JO,
461
- uid: `${loiSignet}-PROM`,
462
- chambre: "AN",
463
- signet_dossier: loiSignet,
464
- code_organisme: null,
465
- });
466
- }
467
- return actes.sort(compareByDate);
468
- }
@@ -1,7 +0,0 @@
1
- export { findAllAmendements } from "./ameli.js";
2
- export { findAll as findAllDebats } from "./debats.js";
3
- export { findAllDossiers } from "./dosleg.js";
4
- export { findAllTextes, findAllRapports } from "./documents.js";
5
- export { findAllScrutins } from "./scrutins.js";
6
- export { findAll as findAllQuestions } from "./questions.js";
7
- export { findAll as findAllSens, findAllCirconscriptions, findAllOrganismes } from "./sens.js";
@@ -1,7 +0,0 @@
1
- export { findAllAmendements } from "./ameli.js";
2
- export { findAll as findAllDebats } from "./debats.js";
3
- export { findAllDossiers } from "./dosleg.js";
4
- export { findAllTextes, findAllRapports } from "./documents.js";
5
- export { findAllScrutins } from "./scrutins.js";
6
- export { findAll as findAllQuestions } from "./questions.js";
7
- export { findAll as findAllSens, findAllCirconscriptions, findAllOrganismes } from "./sens.js";
@@ -1,54 +0,0 @@
1
- export interface QuestionReponseRow {
2
- date_erratum_JO: string | null;
3
- date_reponse_JO: string | null;
4
- ministere_reponse: string | null;
5
- ministere_reponse_id: string | null;
6
- page_JO: string | null;
7
- texte: string | null;
8
- texte_erratum: string | null;
9
- url: string | null;
10
- }
11
- export interface QuestionResult {
12
- circonscription: string | null;
13
- circonscription_numero: string | null;
14
- civilite: string | null;
15
- date_cloture: string | null;
16
- date_erratum_JO: string | null;
17
- date_publication_JO: string | null;
18
- date_reponse_JO: string | null;
19
- date_signalement: string | null;
20
- date_transmission: string | null;
21
- etat_code: string | null;
22
- etat_libelle: string | null;
23
- etat_tri: string | null;
24
- groupe: string | null;
25
- legislature: string | null;
26
- matricule: string;
27
- ministere_depot: string | null;
28
- ministere_depot_date_debut: string | null;
29
- ministere_depot_id: string | null;
30
- ministere_reponse: string | null;
31
- ministere_transmission: string | null;
32
- nature: string | null;
33
- nature_libelle: string | null;
34
- nom: string | null;
35
- nom_technique: string | null;
36
- numero: string | null;
37
- page_JO: string | null;
38
- page_erratum_JO: string | null;
39
- prenom: string | null;
40
- reference: string | null;
41
- reference_question_rappelee: string | null;
42
- republique: string | null;
43
- reponses: QuestionReponseRow[];
44
- rubrique: string | null;
45
- sort: string | null;
46
- sort_code: string | null;
47
- sort_tri: string | null;
48
- texte: string | null;
49
- texte_erratum: string | null;
50
- themes: string[];
51
- titre: string | null;
52
- type_appartenance: string | null;
53
- }
54
- export declare function findAll(): AsyncGenerator<QuestionResult, void, unknown>;
@@ -1,91 +0,0 @@
1
- import { streamUnsafeQuery } from "../databases_postgres.js";
2
- function buildFindAllQuestionsQuery() {
3
- return {
4
- params: [],
5
- query: `
6
- select
7
- tam_questions.repub::text as republique,
8
- tam_questions.legislature::text as legislature,
9
- tam_questions.natquecod as nature,
10
- naturequestion.natquelib as nature_libelle,
11
- tam_questions.numero as numero,
12
- tam_questions.reference as reference,
13
- tam_questions.titre as titre,
14
- tam_questions.nom as nom,
15
- tam_questions.prenom as prenom,
16
- tam_questions.nomtechnique as nom_technique,
17
- tam_questions.codequalite as civilite,
18
- tam_questions.matricule as matricule,
19
- tam_questions.cirnum::text as circonscription_numero,
20
- tam_questions.circonscription as circonscription,
21
- tam_questions.groupe as groupe,
22
- tam_questions.ratgrp as type_appartenance,
23
- to_char(tam_questions.datejodepot, 'YYYY-MM-DD') as date_publication_JO,
24
- tam_questions.pagejodepot::text as page_JO,
25
- rtrim(tam_questions.mindepotlib) as ministere_depot,
26
- tam_questions.mindepotid::text as ministere_depot_id,
27
- to_char(tam_ministeres.datedebut, 'YYYY-MM-DD') as ministere_depot_date_debut,
28
- to_char(tam_questions.datejotran, 'YYYY-MM-DD') as date_transmission,
29
- tam_questions.mintranlib as ministere_transmission,
30
- to_char(tam_questions.datejorep1, 'YYYY-MM-DD') as date_reponse_JO,
31
- to_char(tam_questions.dateerr, 'YYYY-MM-DD') as date_erratum_JO,
32
- tam_questions.pageerr::text as page_erratum_JO,
33
- tam_questions.minreplib1 as ministere_reponse,
34
- to_char(tam_questions.datecloture, 'YYYY-MM-DD') as date_cloture,
35
- to_char(tam_questions.datesignal, 'YYYY-MM-DD') as date_signalement,
36
- tam_questions.refquerappelee as reference_question_rappelee,
37
- tam_questions.txtque as texte,
38
- tam_questions.txterrque as texte_erratum,
39
- tam_questions.rubrique as rubrique,
40
- sortquestion.sorquelib as sort,
41
- sortquestion.sorquecod as sort_code,
42
- sortquestion.sorquenumtri::text as sort_tri,
43
- etatquestion.etaquelib as etat_libelle,
44
- etatquestion.etaquecod as etat_code,
45
- etatquestion.etaquenumtri::text as etat_tri,
46
- (
47
- select coalesce(json_agg(theme_rows.libelle order by theme_rows.theme_order nulls last), '[]'::json)
48
- from (
49
- select
50
- the.thelib as libelle,
51
- the.thenouidt as theme_order
52
- from regexp_matches(coalesce(tam_questions.themes, ''), '#(\\d+)', 'g') as matches(match)
53
- join senat.questions_the as the on the.thenouidt::text = matches.match[1]
54
- order by the.thenouidt asc
55
- ) as theme_rows
56
- ) as themes,
57
- (
58
- select coalesce(json_agg(response_rows order by response_rows.date_reponse_JO nulls last), '[]'::json)
59
- from (
60
- select
61
- to_char(tam_reponses.datejorep, 'YYYY-MM-DD') as date_reponse_JO,
62
- tam_reponses.pagejorep::text as page_JO,
63
- to_char(tam_reponses.errdate, 'YYYY-MM-DD') as date_erratum_JO,
64
- tam_reponses.minreplib as ministere_reponse,
65
- tam_reponses.minrepid::text as ministere_reponse_id,
66
- tam_reponses.urlrep as url,
67
- tam_reponses.txtrep as texte,
68
- tam_reponses.txterrrep as texte_erratum
69
- from senat.questions_tam_reponses as tam_reponses
70
- where tam_reponses.idque = tam_questions.id
71
- order by tam_reponses.datejorep asc
72
- ) as response_rows
73
- ) as reponses
74
- from senat.questions_tam_questions as tam_questions
75
- left join senat.questions_tam_ministeres as tam_ministeres on tam_questions.mindepotid = tam_ministeres.minid
76
- left join senat.questions_sortquestion as sortquestion on tam_questions.sorquecod::text = sortquestion.sorquecod
77
- left join senat.questions_naturequestion as naturequestion on tam_questions.natquecod = naturequestion.natquecod
78
- left join senat.questions_etatquestion as etatquestion on tam_questions.etaquecod::text = etatquestion.etaquecod
79
- `,
80
- };
81
- }
82
- export async function* findAll() {
83
- const { query, params } = buildFindAllQuestionsQuery();
84
- for await (const row of streamUnsafeQuery(query, params)) {
85
- yield {
86
- ...row,
87
- reponses: row.reponses ?? [],
88
- themes: row.themes ?? [],
89
- };
90
- }
91
- }
@@ -1,48 +0,0 @@
1
- export interface VoteScrutinRow {
2
- groupe_politique_code: string | null;
3
- groupe_politique_id: string | null;
4
- matricule_delegant: string | null;
5
- matricule_votant: string;
6
- position: string | null;
7
- statut_votant: string | null;
8
- titre_votant: string | null;
9
- }
10
- export interface GroupeVotantRow {
11
- groupe_politique_code: string | null;
12
- nombre_abstentions: string;
13
- nombre_contre: string;
14
- nombre_non_votants: string;
15
- nombre_pour: string;
16
- nombre_votants: string;
17
- }
18
- export interface MiseAuPointRow {
19
- ordre: string | null;
20
- texte: string;
21
- url: string | null;
22
- }
23
- export interface ScrutinResult {
24
- date_scrutin: string | null;
25
- date_scrutin_effective: string | null;
26
- groupes_votants: GroupeVotantRow[];
27
- intitule: string | null;
28
- lecture_id: string | null;
29
- lecture_libelle: string | null;
30
- mises_au_point: MiseAuPointRow[];
31
- nombre_contre: string | null;
32
- nombre_contre_seance: string | null;
33
- nombre_majorite: string | null;
34
- nombre_majorite_seance: string | null;
35
- nombre_pour: string | null;
36
- nombre_pour_seance: string | null;
37
- nombre_suffrages: string | null;
38
- nombre_suffrages_seance: string | null;
39
- nombre_votants: string | null;
40
- nombre_votants_seance: string | null;
41
- note: string | null;
42
- numero: string;
43
- session: string;
44
- signet_dossier: string | null;
45
- type_lecture: string | null;
46
- votes: VoteScrutinRow[];
47
- }
48
- export declare function findAllScrutins(fromSession?: number): AsyncGenerator<ScrutinResult, void, unknown>;