@tricoteuses/senat 2.9.0 → 2.9.1

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 (113) hide show
  1. package/README.md +1 -0
  2. package/package.json +1 -1
  3. package/lib/aggregates.d.ts +0 -52
  4. package/lib/aggregates.js +0 -949
  5. package/lib/aggregates.mjs +0 -726
  6. package/lib/aggregates.ts +0 -852
  7. package/lib/config.mjs +0 -16
  8. package/lib/config.ts +0 -26
  9. package/lib/databases.mjs +0 -55
  10. package/lib/databases.ts +0 -68
  11. package/lib/datasets.mjs +0 -78
  12. package/lib/datasets.ts +0 -118
  13. package/lib/fields.d.ts +0 -10
  14. package/lib/fields.js +0 -68
  15. package/lib/fields.mjs +0 -22
  16. package/lib/fields.ts +0 -29
  17. package/lib/index.mjs +0 -7
  18. package/lib/index.ts +0 -64
  19. package/lib/inserters.d.ts +0 -98
  20. package/lib/inserters.js +0 -500
  21. package/lib/inserters.mjs +0 -360
  22. package/lib/inserters.ts +0 -521
  23. package/lib/legislatures.json +0 -38
  24. package/lib/loaders.mjs +0 -97
  25. package/lib/loaders.ts +0 -173
  26. package/lib/model/ameli.mjs +0 -57
  27. package/lib/model/ameli.ts +0 -86
  28. package/lib/model/debats.mjs +0 -43
  29. package/lib/model/debats.ts +0 -68
  30. package/lib/model/dosleg.mjs +0 -163
  31. package/lib/model/dosleg.ts +0 -204
  32. package/lib/model/index.mjs +0 -4
  33. package/lib/model/index.ts +0 -13
  34. package/lib/model/questions.mjs +0 -76
  35. package/lib/model/questions.ts +0 -102
  36. package/lib/model/sens.mjs +0 -339
  37. package/lib/model/sens.ts +0 -432
  38. package/lib/model/texte.mjs +0 -156
  39. package/lib/model/texte.ts +0 -174
  40. package/lib/raw_types_kysely/ameli.d.ts +0 -915
  41. package/lib/raw_types_kysely/ameli.js +0 -7
  42. package/lib/raw_types_kysely/ameli.mjs +0 -5
  43. package/lib/raw_types_kysely/ameli.ts +0 -951
  44. package/lib/raw_types_kysely/debats.d.ts +0 -207
  45. package/lib/raw_types_kysely/debats.js +0 -7
  46. package/lib/raw_types_kysely/debats.mjs +0 -5
  47. package/lib/raw_types_kysely/debats.ts +0 -222
  48. package/lib/raw_types_kysely/dosleg.d.ts +0 -3532
  49. package/lib/raw_types_kysely/dosleg.js +0 -7
  50. package/lib/raw_types_kysely/dosleg.mjs +0 -5
  51. package/lib/raw_types_kysely/dosleg.ts +0 -3621
  52. package/lib/raw_types_kysely/questions.d.ts +0 -414
  53. package/lib/raw_types_kysely/questions.js +0 -7
  54. package/lib/raw_types_kysely/questions.mjs +0 -5
  55. package/lib/raw_types_kysely/questions.ts +0 -426
  56. package/lib/raw_types_kysely/sens.d.ts +0 -4394
  57. package/lib/raw_types_kysely/sens.js +0 -7
  58. package/lib/raw_types_kysely/sens.mjs +0 -5
  59. package/lib/raw_types_kysely/sens.ts +0 -4499
  60. package/lib/raw_types_schemats/ameli.mjs +0 -2
  61. package/lib/raw_types_schemats/ameli.ts +0 -601
  62. package/lib/raw_types_schemats/debats.mjs +0 -2
  63. package/lib/raw_types_schemats/debats.ts +0 -145
  64. package/lib/raw_types_schemats/dosleg.mjs +0 -2
  65. package/lib/raw_types_schemats/dosleg.ts +0 -2193
  66. package/lib/raw_types_schemats/questions.mjs +0 -2
  67. package/lib/raw_types_schemats/questions.ts +0 -249
  68. package/lib/raw_types_schemats/sens.mjs +0 -2
  69. package/lib/raw_types_schemats/sens.ts +0 -2907
  70. package/lib/scripts/convert_data.mjs +0 -95
  71. package/lib/scripts/convert_data.ts +0 -119
  72. package/lib/scripts/datautil.mjs +0 -16
  73. package/lib/scripts/datautil.ts +0 -19
  74. package/lib/scripts/images/transparent_150x192.jpg +0 -0
  75. package/lib/scripts/images/transparent_155x225.jpg +0 -0
  76. package/lib/scripts/parse_textes.mjs +0 -38
  77. package/lib/scripts/parse_textes.ts +0 -52
  78. package/lib/scripts/retrieve_documents.mjs +0 -243
  79. package/lib/scripts/retrieve_documents.ts +0 -279
  80. package/lib/scripts/retrieve_open_data.mjs +0 -214
  81. package/lib/scripts/retrieve_open_data.ts +0 -261
  82. package/lib/scripts/retrieve_senateurs_photos.mjs +0 -147
  83. package/lib/scripts/retrieve_senateurs_photos.ts +0 -177
  84. package/lib/scripts/retrieve_textes.d.ts +0 -1
  85. package/lib/scripts/retrieve_textes.mjs +0 -165
  86. package/lib/scripts/retrieve_textes.ts +0 -79
  87. package/lib/scripts/shared/cli_helpers.ts +0 -36
  88. package/lib/scripts/shared/util.ts +0 -33
  89. package/lib/strings.mjs +0 -18
  90. package/lib/strings.ts +0 -26
  91. package/lib/types/ameli.mjs +0 -13
  92. package/lib/types/ameli.ts +0 -21
  93. package/lib/types/debats.mjs +0 -2
  94. package/lib/types/debats.ts +0 -6
  95. package/lib/types/dosleg.mjs +0 -151
  96. package/lib/types/dosleg.ts +0 -284
  97. package/lib/types/questions.mjs +0 -1
  98. package/lib/types/questions.ts +0 -3
  99. package/lib/types/sens.mjs +0 -1
  100. package/lib/types/sens.ts +0 -12
  101. package/lib/types/sessions.mjs +0 -43
  102. package/lib/types/sessions.ts +0 -42
  103. package/lib/types/texte.mjs +0 -16
  104. package/lib/types/texte.ts +0 -66
  105. package/lib/typings/windows-1252.d.js +0 -2
  106. package/lib/typings/windows-1252.d.mjs +0 -2
  107. package/lib/typings/windows-1252.d.ts +0 -11
  108. package/lib/validators/config.mjs +0 -54
  109. package/lib/validators/config.ts +0 -79
  110. package/lib/validators/senat.d.ts +0 -0
  111. package/lib/validators/senat.js +0 -24
  112. package/lib/validators/senat.mjs +0 -24
  113. package/lib/validators/senat.ts +0 -26
package/lib/model/sens.ts DELETED
@@ -1,432 +0,0 @@
1
- import { Expression, InferResult, sql } from "kysely"
2
- import { jsonArrayFrom, jsonObjectFrom } from "kysely/helpers/postgres"
3
- import { dbSens } from "../databases"
4
-
5
- function circonscription (dptNum: Expression<string>) {
6
- return jsonObjectFrom(
7
- dbSens.selectFrom("dpt")
8
- .leftJoin("reg", "dpt.regcod", "reg.regcod")
9
- .where("dpt.dptnum", "=", dptNum)
10
- .select([
11
- "dpt.dptcod as code",
12
- "dpt.dptlib as libelle_departement",
13
- "reg.reglib as libelle_region",
14
- ]),
15
- )
16
- }
17
-
18
- function textes (actId: Expression<string>) {
19
- return jsonArrayFrom(
20
- dbSens.selectFrom("activite_loi")
21
- .where("actid", "=", actId)
22
- .select(sql<string>`rtrim(loicod)`.as("loicod")),
23
- )
24
- }
25
-
26
- function delegations (actId: Expression<string>) {
27
- return jsonArrayFrom(
28
- dbSens.selectFrom("activite_delegation")
29
- .where("actid", "=", actId)
30
- .orderBy("delegidx asc"),
31
- )
32
- }
33
-
34
- function activites (senMat: Expression<string>) {
35
- return jsonArrayFrom(
36
- dbSens.selectFrom("activite")
37
- .leftJoin("activite_participant", "activite.actid", "activite_participant.actid")
38
- .leftJoin("type_activite", "activite.typactcod", "type_activite.typactcod")
39
- .leftJoin("categorie_activite", "activite.catactcod", "categorie_activite.catactcod")
40
- .where("activite_participant.senmat", "=", senMat)
41
- .select(({ ref }) => [
42
- delegations(ref("activite.actid")).as("delegations"),
43
- textes(ref("activite.actid")).as("textes"),
44
- ])
45
- .orderBy("activite.datdeb desc"),
46
- )
47
- }
48
-
49
- function activitesPerso (senMat: Expression<string>) {
50
- return jsonArrayFrom(
51
- dbSens.selectFrom("activite_senateur")
52
- .leftJoin("type_activite_senateur", "activite_senateur.typactsencod", "type_activite_senateur.typactsencod")
53
- .where("activite_senateur.senmat", "=", senMat)
54
- .orderBy("activite_senateur.datdeb desc"),
55
- )
56
- }
57
-
58
- function fonctionsBureau (senMat: Expression<string>) {
59
- return jsonArrayFrom(
60
- dbSens.selectFrom("senbur")
61
- .leftJoin("bur", "senbur.burcod", "bur.burcod")
62
- .where("senbur.senmat", "=", senMat)
63
- .select([
64
- "senbur.senburdatdeb as date_debut",
65
- "senbur.senburdatfin as date_fin",
66
- "bur.burlib as libelle",
67
- ])
68
- .orderBy("senbur.senburdatdeb desc"),
69
- )
70
- }
71
-
72
- function mandatsEluConseillerGeneral (senMat: Expression<string>) {
73
- return jsonArrayFrom(
74
- dbSens.selectFrom("elucan")
75
- .leftJoin("typman", "elucan.typmancod", "typman.typmancod")
76
- .where("elucan.senmat", "=", senMat)
77
- .select(({ ref }) => [
78
- circonscription(ref("elucan.dptnum").$notNull()).as("circonscription"),
79
- ])
80
- .orderBy("elucan.eludatdeb desc"),
81
- )
82
- }
83
-
84
- function mandatsEluDepute (senMat: Expression<string>) {
85
- return jsonArrayFrom(
86
- dbSens.selectFrom("eludep")
87
- .leftJoin("typman", "eludep.typmancod", "typman.typmancod")
88
- .where("eludep.senmat", "=", senMat)
89
- .select(({ ref }) => [
90
- circonscription(ref("eludep.circo").$notNull()).as("circonscription"),
91
- ])
92
- .orderBy("eludep.eludatdeb desc"),
93
- )
94
- }
95
-
96
- function mandatsEluDivers (senMat: Expression<string>) {
97
- return jsonArrayFrom(
98
- dbSens.selectFrom("eludiv")
99
- .leftJoin("typman", "eludiv.typmancod", "typman.typmancod")
100
- .where("eludiv.senmat", "=", senMat)
101
- .orderBy("eludiv.eludatdeb desc"),
102
- )
103
- }
104
-
105
- function mandatsEluEuropeen (senMat: Expression<string>) {
106
- return jsonArrayFrom(
107
- dbSens.selectFrom("elueur")
108
- .leftJoin("nation", "elueur.nationcod", "nation.nationcod")
109
- .leftJoin("typman", "elueur.typmancod", "typman.typmancod")
110
- .where("elueur.senmat", "=", senMat)
111
- .orderBy("elueur.eludatdeb desc"),
112
- )
113
- }
114
-
115
- function mandatsEluConseillerRegional (senMat: Expression<string>) {
116
- return jsonArrayFrom(
117
- dbSens.selectFrom("elureg")
118
- .leftJoin("reg", "elureg.regcod", "reg.regcod")
119
- .leftJoin("typman", "elureg.typmancod", "typman.typmancod")
120
- .where("elureg.senmat", "=", senMat)
121
- .orderBy("elureg.eludatdeb desc"),
122
- )
123
- }
124
-
125
- function mandatsEluSenateur (senMat: Expression<string>) {
126
- return jsonArrayFrom(
127
- dbSens.selectFrom("elusen")
128
- .leftJoin("etadebman", "elusen.etadebmancod", "etadebman.etadebmancod")
129
- .leftJoin("etafinman", "elusen.etafinmancod", "etafinman.etafinmancod")
130
- .leftJoin("typman", "elusen.typmancod", "typman.typmancod")
131
- .where("elusen.senmat", "=", senMat)
132
- .select([
133
- "elusen.dptnum as code_circonscription",
134
- "elusen.eludatdeb as date_debut",
135
- "elusen.eludatfin as date_fin",
136
- "etadebman.etadebmanlib as etat_debut",
137
- "etafinman.etafinman as etat_fin",
138
- ])
139
- .orderBy("elusen.eludatdeb desc"),
140
- )
141
- }
142
-
143
- function mandatsEluTerritorial (senMat: Expression<string>) {
144
- return jsonArrayFrom(
145
- dbSens.selectFrom("eluter")
146
- .leftJoin("asster", "eluter.asstercod", "asster.asstercod")
147
- .leftJoin("typman", "eluter.typmancod", "typman.typmancod")
148
- .where("eluter.senmat", "=", senMat)
149
- .orderBy("eluter.eludatdeb desc"),
150
- )
151
- }
152
-
153
- function mandatsEluConseillerMunicipal (senMat: Expression<string>) {
154
- return jsonArrayFrom(
155
- dbSens.selectFrom("eluvil")
156
- .leftJoin("typman", "eluvil.typmancod", "typman.typmancod")
157
- .where("eluvil.senmat", "=", senMat)
158
- .orderBy("eluvil.eludatdeb desc"),
159
- )
160
- }
161
-
162
- function fonctionsMembreCommission (memComId: Expression<string>) {
163
- return jsonArrayFrom(
164
- dbSens.selectFrom("fonmemcom")
165
- .leftJoin("foncom", "fonmemcom.foncomcod", "foncom.foncomcod")
166
- .where("fonmemcom.memcomid", "=", memComId)
167
- .select([
168
- "fonmemcom.fonmemcomdatdeb as date_debut",
169
- "fonmemcom.fonmemcomdatfin as date_fin",
170
- "foncom.foncomlib as libelle",
171
- ])
172
- .orderBy("fonmemcom.fonmemcomdatdeb desc"),
173
- )
174
- }
175
-
176
- function mandatsMembreCommission (senMat: Expression<string>) {
177
- return jsonArrayFrom(
178
- dbSens.selectFrom("memcom")
179
- .leftJoin("com", "memcom.orgcod", "com.orgcod")
180
- .leftJoin("typorg", "com.typorgcod", "typorg.typorgcod")
181
- .where("memcom.senmat", "=", senMat)
182
- .select([
183
- "com.typorgcod as type_code_organisme",
184
- "memcom.orgcod as code_organisme",
185
- "typorg.typorglib as type_organisme",
186
- "com.comlilmin as libelle",
187
- "memcom.memcomdatdeb as date_debut",
188
- "memcom.memcomdatfin as date_fin",
189
- ])
190
- .select(({ ref }) => [
191
- fonctionsMembreCommission(ref("memcom.memcomid")).as("fonctions"),
192
- ])
193
- .orderBy("memcom.memcomdatdeb desc"),
194
- )
195
- }
196
-
197
- function fonctionsMembreDelegation (memDelegaId: Expression<string>) {
198
- return jsonArrayFrom(
199
- dbSens.selectFrom("fonmemdelega")
200
- .leftJoin("fondelega", "fonmemdelega.fondelcod", "fondelega.fondelcod")
201
- .where("fonmemdelega.memdelegaid", "=", memDelegaId)
202
- .select([
203
- "fonmemdelega.fonmemdeldatdeb as date_debut",
204
- "fonmemdelega.fonmemdeldatfin as date_fin",
205
- "fondelega.fondellib as libelle",
206
- ])
207
- .orderBy("fonmemdelega.fonmemdeldatdeb desc"),
208
- )
209
- }
210
-
211
- function mandatsMembreDelegation (senMat: Expression<string>) {
212
- return jsonArrayFrom(
213
- dbSens.selectFrom("memdelega")
214
- .leftJoin("delega", "memdelega.orgcod", "delega.orgcod")
215
- .leftJoin("designorg", "memdelega.designcod", "designorg.designcod")
216
- .leftJoin("typorg", "delega.typorgcod", "typorg.typorgcod")
217
- .where("memdelega.senmat", "=", senMat)
218
- .select([
219
- "delega.typorgcod as type_code_organisme",
220
- "memdelega.orgcod as code_organisme",
221
- "typorg.typorglib as type_organisme",
222
- "delega.evelib as libelle",
223
- "memdelega.memdelegadatdeb as date_debut",
224
- "memdelega.memdelegadatfin as date_fin",
225
- ])
226
- .select(({ ref }) => [
227
- fonctionsMembreDelegation(ref("memdelega.memdelegaid")).as("fonctions"),
228
- ])
229
- .orderBy("memdelega.memdelegadatdeb desc"),
230
- )
231
- }
232
-
233
- function mandatsMembreExtraParlementaire (senMat: Expression<string>) {
234
- return jsonArrayFrom(
235
- dbSens.selectFrom("memextpar")
236
- .leftJoin("orgext", "memextpar.orgcod", "orgext.orgcod")
237
- .leftJoin("design", "memextpar.designcod", "design.designcod")
238
- .where("memextpar.senmat", "=", senMat)
239
- .orderBy("memextpar.memextpardatdeb desc"),
240
- )
241
- }
242
-
243
- function fonctionsMembreGroupePolitique (memGrpPolId: Expression<string>) {
244
- return jsonArrayFrom(
245
- dbSens.selectFrom("fonmemgrppol")
246
- .leftJoin("fongrppol", "fonmemgrppol.fongrppolcod", "fongrppol.fongrppolcod")
247
- .where("fonmemgrppol.memgrppolid", "=", memGrpPolId)
248
- .select([
249
- "fonmemgrppol.fonmemgrppoldatdeb as date_debut",
250
- "fonmemgrppol.fonmemgrppoldatfin as date_fin",
251
- "fongrppol.fongrppollib as libelle",
252
- ])
253
- .orderBy("fonmemgrppol.fonmemgrppoldatdeb desc"),
254
- )
255
- }
256
-
257
- function mandatsMembreGroupePolitique (senMat: Expression<string>) {
258
- return jsonArrayFrom(
259
- dbSens.selectFrom("memgrppol")
260
- .leftJoin("grppol", "memgrppol.grppolcod", "grppol.grppolcod")
261
- .leftJoin("typapppol", "memgrppol.typapppolcod", "typapppol.typapppolcod")
262
- .where("memgrppol.senmat", "=", senMat)
263
- .select([
264
- "memgrppol.grppolcod as code",
265
- "grppol.grppollibcou as libelle",
266
- "memgrppol.memgrppoldatdeb as date_debut",
267
- "memgrppol.memgrppoldatfin as date_fin",
268
- "typapppol.typapppollib as fonction",
269
- ])
270
- .select(({ ref }) => [
271
- fonctionsMembreGroupePolitique(ref("memgrppol.memgrppolid")).as("fonctions"),
272
- ])
273
- .orderBy("memgrppol.memgrppoldatdeb desc"),
274
- )
275
- }
276
-
277
- function fonctionsMembreGroupeSenatorial (memGrpSenId: Expression<string>) {
278
- return jsonArrayFrom(
279
- dbSens.selectFrom("fonmemgrpsen")
280
- .leftJoin("fongrpsen", "fonmemgrpsen.fongrpsencod", "fongrpsen.fongrpsencod")
281
- .where("fonmemgrpsen.memgrpsenid", "=", memGrpSenId)
282
- .orderBy("fonmemgrpsen.fonmemgrpsendatdeb desc"),
283
- )
284
- }
285
-
286
- function mandatsMembreGroupeSenatorial (senMat: Expression<string>) {
287
- return jsonArrayFrom(
288
- dbSens.selectFrom("memgrpsen")
289
- .leftJoin("grpsenami", "memgrpsen.orgcod", "grpsenami.orgcod")
290
- .leftJoin("typgrpsen", "grpsenami.typgrpsencod", "typgrpsen.typgrpsencod")
291
- .where("memgrpsen.senmat", "=", senMat)
292
- .select(({ ref }) => [
293
- fonctionsMembreGroupeSenatorial(ref("memgrpsen.memgrpsenid")).as("fonctions"),
294
- ])
295
- .orderBy("memgrpsen.memgrpsendatent desc"),
296
- )
297
- }
298
-
299
- function fonctionsMembreOrganisation (memOrgId: Expression<string>) {
300
- return jsonArrayFrom(
301
- dbSens.selectFrom("fonmemorg")
302
- .leftJoin("fonorg", "fonmemorg.fonorgcod", "fonorg.fonorgcod")
303
- .where("fonmemorg.memorgid", "=", memOrgId)
304
- .orderBy("fonmemorg.fonmemorgdatdeb desc"),
305
- )
306
- }
307
-
308
- function mandatsMembreOrganisation (senMat: Expression<string>) {
309
- return jsonArrayFrom(
310
- dbSens.selectFrom("memorg")
311
- .leftJoin("org", "memorg.orgcod", "org.orgcod")
312
- .leftJoin("typorg", "org.typorgcod", "typorg.typorgcod")
313
- .leftJoin("designorg", "memorg.designcod", "designorg.designcod")
314
- .where("memorg.senmat", "=", senMat)
315
- .select(({ ref }) => [
316
- fonctionsMembreOrganisation(ref("memorg.memorgid")).as("fonctions"),
317
- ])
318
- .orderBy("memorg.memorgdatdeb desc"),
319
- )
320
- }
321
-
322
- function mandatsMinistre (senMat: Expression<string>) {
323
- return jsonArrayFrom(
324
- dbSens.selectFrom("minind")
325
- .where("minind.senmat", "=", senMat)
326
- .orderBy("minind.mindatdeb desc"),
327
- )
328
- }
329
-
330
- function contacts (senMat: Expression<string>) {
331
- return jsonArrayFrom(
332
- dbSens.selectFrom("poicon")
333
- .leftJoin("adresse", "poicon.poiconid", "adresse.poiconid")
334
- .leftJoin("mel", "poicon.poiconid", "mel.poiconid")
335
- .leftJoin("telephone", "poicon.poiconid", "telephone.poiconid")
336
- .where("poicon.senmat", "=", senMat)
337
- .orderBy("poicon.poiconnumtri asc"),
338
- )
339
- }
340
-
341
- function urls (senMat: Expression<string>) {
342
- return jsonArrayFrom(
343
- dbSens.selectFrom("senurl")
344
- .where("senurl.senmat", "=", senMat)
345
- .select([
346
- "senurl.typurlcod as code_url",
347
- "senurl.senurlurl as url",
348
- ])
349
- .orderBy("senurl.senurlnumtri asc"),
350
- )
351
- }
352
-
353
- const findAllQuery = dbSens
354
- .selectFrom("sen")
355
- .leftJoin("etasen", "sen.etasencod", "etasen.etasencod")
356
- .leftJoin("pcs", "sen.pcscod", "pcs.pcscod")
357
- .leftJoin("pcs42", "pcs.pcs42cod", "pcs42.pcs42cod")
358
- .leftJoin("pcs24", "pcs42.pcs24cod", "pcs24.pcs24cod")
359
- .leftJoin("pcs8", "pcs24.pcs8cod", "pcs8.pcs8cod")
360
- .leftJoin("grppol", "sen.sengrppolcodcou", "grppol.grppolcod")
361
- .leftJoin("com", "sen.sencomcodcou", "com.orgcod")
362
- .select([
363
- "sen.senmat as matricule",
364
- "sen.quacod as qualite",
365
- "sen.sennomuse as nom_usuel",
366
- "sen.senprenomuse as prenom_usuel",
367
- "sen.etasencod as etat",
368
- "sen.sendatnai as date_naissance",
369
- "sen.sendatdec as date_deces",
370
- "sen.sengrppolcodcou as code_groupe_politique",
371
- "sen.sengrppolliccou as groupe_politique",
372
- "sen.sencomcodcou as code_commission_permanente",
373
- "com.comlilmin as commission_permanente",
374
- "sen.sencirnumcou as code_circonscription",
375
- "sen.sencircou as circonscription",
376
- "sen.senburliccou as fonction_bureau_senat",
377
- "sen.senema as courrier_electronique",
378
- "pcs.pcslil as PCS_INSEE",
379
- "pcs42.pcs42lib as PCS_INSEE_42",
380
- "pcs24.pcs24lib as PCS_INSEE_24",
381
- "pcs8.pcs8lil as PCS_INSEE_8",
382
- "sen.sendespro as description_profession",
383
- "sen.sennumsie as siege",
384
- "sen.sendaiurl as url_hatvp",
385
- ])
386
- .select(({ ref }) => [
387
- urls(ref("sen.senmat")).as("urls"),
388
- mandatsEluSenateur(ref("sen.senmat")).as("mandats_senateur"),
389
- mandatsMembreCommission(ref("sen.senmat")).as("commissions"),
390
- mandatsMembreDelegation(ref("sen.senmat")).as("delegations"),
391
- mandatsMembreGroupePolitique(ref("sen.senmat")).as("groupes"),
392
- fonctionsBureau(ref("sen.senmat")).as("fonctions_bureau"),
393
- ])
394
-
395
- const findAllCirconscriptionsQuery = dbSens
396
- .selectFrom("dpt")
397
- .leftJoin("reg", "dpt.regcod", "reg.regcod")
398
- .select([
399
- "dpt.dptnum as identifiant",
400
- "dpt.dptcod as code",
401
- "dpt.dptlib as libelle_departement",
402
- "dpt.dptart as article",
403
- "reg.reglib as libelle_region",
404
- "dpt.temvalcod as etat",
405
- "dpt.dptdatdeb as date_debut",
406
- "dpt.dptdatfin as date_fin",
407
- "dpt.dptnbrsen as nombre_senateurs",
408
- "dpt.dpturlcmp as url",
409
- ])
410
-
411
- export type SenateurResult = InferResult<typeof findAllQuery>[0]
412
- export type CirconscriptionResult = InferResult<typeof findAllCirconscriptionsQuery>[0]
413
-
414
- export function findAll () {
415
- return findAllQuery.stream()
416
- }
417
-
418
- export function findAllCirconscriptions () {
419
- return findAllCirconscriptionsQuery.stream()
420
- }
421
-
422
- export function findActif (): AsyncIterableIterator<{ senmat: string, sennomuse: string, senprenomuse: string }> {
423
- return dbSens
424
- .selectFrom("sen")
425
- .where("etasencod", "=", "ACTIF")
426
- .select(["senmat", "sennomuse", "senprenomuse"])
427
- .stream()
428
- }
429
-
430
- export function getDbSchema() {
431
- return dbSens.introspection.getTables()
432
- }
@@ -1,156 +0,0 @@
1
- import { JSDOM } from "jsdom";
2
- import { AKN_WORKFLOW_IDENTIFICATION_STRUCTURE_REGEXP, AKN_IDENTIFICATION_STRUCTURE_REGEXP } from "../scripts/datautil";
3
- import { DivisionType, } from "../types/texte";
4
- function buildWorklow(metaElement) {
5
- const stepElements = metaElement.querySelectorAll("workflow step");
6
- const steps = [];
7
- for (const stepElement of stepElements) {
8
- const identification = stepElement.getAttribute("href") ?? "";
9
- const identificationParts = AKN_WORKFLOW_IDENTIFICATION_STRUCTURE_REGEXP.exec(identification)?.groups;
10
- steps.push({
11
- eId: stepElement.getAttribute("eId"),
12
- date: stepElement.getAttribute("date") ? new Date(stepElement.getAttribute("date") ?? "") : null,
13
- type: identificationParts?.type || null,
14
- session: identificationParts?.session || null,
15
- numero: identificationParts?.numTexte || null,
16
- version: identificationParts?.version ? identificationParts.version : null,
17
- outcome: stepElement.getAttribute("outcome"),
18
- });
19
- }
20
- return steps;
21
- }
22
- function buildDivision(node, index) {
23
- const eId = node.getAttribute("eId");
24
- const tag = node.nodeName;
25
- const level = DivisionType[tag];
26
- const titleNode = node.querySelector("num");
27
- const subtitleNode = node.querySelector("heading");
28
- const headings = [
29
- ...(titleNode ? [{
30
- text: titleNode.textContent?.trim() ?? null,
31
- html: titleNode.innerHTML?.trim() ?? null,
32
- }] : []),
33
- ...(subtitleNode ? [{
34
- text: subtitleNode.textContent?.trim() ?? null,
35
- html: subtitleNode.innerHTML?.trim() ?? null,
36
- }] : []),
37
- ];
38
- const division = {
39
- index,
40
- eId,
41
- tag,
42
- level,
43
- headings,
44
- };
45
- if (tag === "article") {
46
- division.alineas = [];
47
- }
48
- return division;
49
- }
50
- function buildAlinea(contentNode, alineaNode) {
51
- const eId = alineaNode.getAttribute("eId");
52
- const heading = {
53
- text: alineaNode.querySelector("num")?.textContent ?? null,
54
- };
55
- const pastille = alineaNode.getAttribute("data:pastille") ?? null;
56
- return {
57
- eId,
58
- heading,
59
- text: contentNode.textContent?.trim() ?? null,
60
- html: contentNode.innerHTML?.trim() ?? null,
61
- pastille,
62
- };
63
- }
64
- function buildEmptyArticle(index) {
65
- return {
66
- index: index,
67
- eId: "",
68
- tag: "article",
69
- level: DivisionType["article"],
70
- headings: [],
71
- alineas: [],
72
- };
73
- }
74
- function flattenTexte(texteContentRoot) {
75
- const divisions = [];
76
- let divisionIndex = 0;
77
- const iter = (node) => {
78
- if (node.nodeName === "content") {
79
- return;
80
- }
81
- switch (node.nodeName) {
82
- case "tome":
83
- case "part":
84
- case "book":
85
- case "title":
86
- case "subtitle":
87
- case "chapter":
88
- case "section":
89
- case "subsection":
90
- case "paragraph":
91
- case "article":
92
- divisions.push(buildDivision(node, divisionIndex++));
93
- break;
94
- }
95
- if (node.nodeName === "alinea") {
96
- Array.from(node.childNodes)
97
- // Find direct content children programmatically
98
- // because `:scope` selector does not work
99
- // https://github.com/jsdom/jsdom/issues/2998
100
- .filter((alineaChildNode) => alineaChildNode.nodeName === "content")
101
- .forEach((alineaContentNode) => {
102
- // Hypothesis: alineas should always be enclosed in articles
103
- let lastArticle = divisions.findLast(division => division.tag === "article");
104
- if (!lastArticle) {
105
- lastArticle = buildEmptyArticle(divisionIndex++);
106
- divisions.push(lastArticle);
107
- }
108
- lastArticle.alineas.push(buildAlinea(alineaContentNode, node));
109
- });
110
- }
111
- if (node.hasChildNodes()) {
112
- node.childNodes.forEach((childNode) => iter(childNode));
113
- }
114
- };
115
- iter(texteContentRoot);
116
- return divisions;
117
- }
118
- export function transformTexte(document) {
119
- let transformedTexte = null;
120
- const metaElement = document.querySelector("meta");
121
- const identification = metaElement?.querySelector("FRBRExpression FRBRuri")?.getAttribute("value") ?? "";
122
- const identificationParts = AKN_IDENTIFICATION_STRUCTURE_REGEXP.exec(identification)?.groups;
123
- const bodyElement = document.querySelector("body");
124
- try {
125
- transformedTexte = {
126
- title: metaElement?.querySelector("FRBRalias[name='intitule-court']")
127
- ?.getAttribute("value") || null,
128
- signetDossierLegislatifSenat: metaElement?.querySelector("FRBRalias[name='signet-dossier-legislatif-senat']")
129
- ?.getAttribute("value") || null,
130
- urlSenat: metaElement?.querySelector("FRBRalias[name='url-senat']")?.getAttribute("value") || null,
131
- urlAssemblee: metaElement?.querySelector("FRBRalias[name='url-AN']")?.getAttribute("value") || null,
132
- type: identificationParts?.type || null,
133
- session: identificationParts?.session || null,
134
- numero: identificationParts?.numTexte ? parseInt(identificationParts.numTexte) : null,
135
- version: identificationParts?.version ? identificationParts.version : null,
136
- workflow: metaElement ? buildWorklow(metaElement) : [],
137
- divisions: bodyElement ? flattenTexte(bodyElement) : [],
138
- };
139
- }
140
- catch (error) {
141
- console.error(`Could not parse texte with error ${error}`);
142
- }
143
- return transformedTexte;
144
- }
145
- export function parseTexte(texteXml) {
146
- const { document } = (new JSDOM(texteXml, {
147
- contentType: "text/xml",
148
- })).window;
149
- return transformTexte(document);
150
- }
151
- // Prevent from memory leak
152
- // https://github.com/jsdom/jsdom/issues/2583#issuecomment-559520814
153
- export async function parseTexteFromFile(xmlFilePath) {
154
- const { document } = (await JSDOM.fromFile(xmlFilePath, { contentType: "text/xml" })).window;
155
- return transformTexte(document);
156
- }