@tricoteuses/senat 1.3.2 → 1.3.5
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.
- package/lib/config.js +4 -6
- package/lib/databases.js +34 -75
- package/lib/datasets.js +20 -28
- package/lib/index.d.ts +5 -0
- package/lib/index.js +4 -43
- package/lib/loaders.js +56 -74
- package/lib/model/ameli.js +8 -11
- package/lib/model/dosleg.js +47 -52
- package/lib/model/index.js +4 -13
- package/lib/model/questions.js +15 -18
- package/lib/model/sens.d.ts +1 -1
- package/lib/model/sens.js +65 -71
- package/lib/model/texte.js +17 -25
- package/lib/model/util.js +13 -21
- package/lib/raw_types/ameli.js +1 -2
- package/lib/raw_types/debats.js +1 -2
- package/lib/raw_types/dosleg.js +1 -2
- package/lib/raw_types/questions.js +1 -2
- package/lib/raw_types/sens.js +1 -2
- package/lib/raw_types_schemats/ameli.js +1 -2
- package/lib/raw_types_schemats/debats.js +1 -2
- package/lib/raw_types_schemats/dosleg.js +1 -2
- package/lib/raw_types_schemats/questions.js +1 -2
- package/lib/raw_types_schemats/sens.js +1 -2
- package/lib/scripts/convert_data.js +78 -83
- package/lib/scripts/datautil.js +9 -13
- package/lib/scripts/parse_textes.js +23 -28
- package/lib/scripts/retrieve_documents.js +56 -61
- package/lib/scripts/retrieve_open_data.js +44 -49
- package/lib/scripts/retrieve_senateurs_photos.js +31 -36
- package/lib/scripts/shared/cli_helpers.js +9 -12
- package/lib/scripts/shared/util.js +7 -15
- package/lib/strings.js +4 -10
- package/lib/types/ameli.js +5 -8
- package/lib/types/debats.js +2 -5
- package/lib/types/dosleg.js +28 -31
- package/lib/types/questions.js +1 -2
- package/lib/types/sens.js +1 -2
- package/lib/types/sessions.js +2 -5
- package/lib/types/texte.js +2 -5
- package/lib/validators/config.js +4 -7
- package/package.json +4 -4
package/lib/model/sens.js
CHANGED
|
@@ -1,14 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
exports.findAllCirconscriptions = findAllCirconscriptions;
|
|
5
|
-
exports.findAllOrganismes = findAllOrganismes;
|
|
6
|
-
exports.findActif = findActif;
|
|
7
|
-
const postgres_1 = require("kysely/helpers/postgres");
|
|
8
|
-
const databases_1 = require("../databases");
|
|
9
|
-
const util_1 = require("./util");
|
|
1
|
+
import { jsonArrayFrom, jsonObjectFrom } from "kysely/helpers/postgres";
|
|
2
|
+
import { dbSens } from "../databases";
|
|
3
|
+
import { concat, rtrim, toDateString } from "./util";
|
|
10
4
|
function circonscription(dptNum) {
|
|
11
|
-
return
|
|
5
|
+
return jsonObjectFrom(dbSens
|
|
12
6
|
.selectFrom("dpt")
|
|
13
7
|
.leftJoin("reg", "dpt.regcod", "reg.regcod")
|
|
14
8
|
.where("dpt.dptnum", "=", dptNum)
|
|
@@ -19,19 +13,19 @@ function circonscription(dptNum) {
|
|
|
19
13
|
]));
|
|
20
14
|
}
|
|
21
15
|
function textes(actId) {
|
|
22
|
-
return
|
|
16
|
+
return jsonArrayFrom(dbSens
|
|
23
17
|
.selectFrom("activite_loi")
|
|
24
18
|
.where("actid", "=", actId)
|
|
25
|
-
.select(({ ref }) => [
|
|
19
|
+
.select(({ ref }) => [rtrim(ref("loicod")).as("loicod")]));
|
|
26
20
|
}
|
|
27
21
|
function delegations(actId) {
|
|
28
|
-
return
|
|
22
|
+
return jsonArrayFrom(dbSens
|
|
29
23
|
.selectFrom("activite_delegation")
|
|
30
24
|
.where("actid", "=", actId)
|
|
31
25
|
.orderBy("delegidx asc"));
|
|
32
26
|
}
|
|
33
27
|
function activites(senMat) {
|
|
34
|
-
return
|
|
28
|
+
return jsonArrayFrom(dbSens
|
|
35
29
|
.selectFrom("activite")
|
|
36
30
|
.leftJoin("activite_participant", "activite.actid", "activite_participant.actid")
|
|
37
31
|
.leftJoin("type_activite", "activite.typactcod", "type_activite.typactcod")
|
|
@@ -44,26 +38,26 @@ function activites(senMat) {
|
|
|
44
38
|
.orderBy("activite.datdeb desc"));
|
|
45
39
|
}
|
|
46
40
|
function activitesPerso(senMat) {
|
|
47
|
-
return
|
|
41
|
+
return jsonArrayFrom(dbSens
|
|
48
42
|
.selectFrom("activite_senateur")
|
|
49
43
|
.leftJoin("type_activite_senateur", "activite_senateur.typactsencod", "type_activite_senateur.typactsencod")
|
|
50
44
|
.where("activite_senateur.senmat", "=", senMat)
|
|
51
45
|
.orderBy("activite_senateur.datdeb desc"));
|
|
52
46
|
}
|
|
53
47
|
function fonctionsBureau(senMat) {
|
|
54
|
-
return
|
|
48
|
+
return jsonArrayFrom(dbSens
|
|
55
49
|
.selectFrom("senbur")
|
|
56
50
|
.leftJoin("bur", "senbur.burcod", "bur.burcod")
|
|
57
51
|
.where("senbur.senmat", "=", senMat)
|
|
58
52
|
.select(({ ref }) => [
|
|
59
|
-
|
|
60
|
-
|
|
53
|
+
toDateString(ref("senbur.senburdatdeb")).as("date_debut"),
|
|
54
|
+
toDateString(ref("senbur.senburdatfin")).as("date_fin"),
|
|
61
55
|
"bur.burlib as libelle",
|
|
62
56
|
])
|
|
63
57
|
.orderBy("senbur.senburdatdeb desc"));
|
|
64
58
|
}
|
|
65
59
|
function mandatsEluConseillerGeneral(senMat) {
|
|
66
|
-
return
|
|
60
|
+
return jsonArrayFrom(dbSens
|
|
67
61
|
.selectFrom("elucan")
|
|
68
62
|
.leftJoin("typman", "elucan.typmancod", "typman.typmancod")
|
|
69
63
|
.where("elucan.senmat", "=", senMat)
|
|
@@ -73,7 +67,7 @@ function mandatsEluConseillerGeneral(senMat) {
|
|
|
73
67
|
.orderBy("elucan.eludatdeb desc"));
|
|
74
68
|
}
|
|
75
69
|
function mandatsEluDepute(senMat) {
|
|
76
|
-
return
|
|
70
|
+
return jsonArrayFrom(dbSens
|
|
77
71
|
.selectFrom("eludep")
|
|
78
72
|
.leftJoin("typman", "eludep.typmancod", "typman.typmancod")
|
|
79
73
|
.where("eludep.senmat", "=", senMat)
|
|
@@ -83,14 +77,14 @@ function mandatsEluDepute(senMat) {
|
|
|
83
77
|
.orderBy("eludep.eludatdeb desc"));
|
|
84
78
|
}
|
|
85
79
|
function mandatsEluDivers(senMat) {
|
|
86
|
-
return
|
|
80
|
+
return jsonArrayFrom(dbSens
|
|
87
81
|
.selectFrom("eludiv")
|
|
88
82
|
.leftJoin("typman", "eludiv.typmancod", "typman.typmancod")
|
|
89
83
|
.where("eludiv.senmat", "=", senMat)
|
|
90
84
|
.orderBy("eludiv.eludatdeb desc"));
|
|
91
85
|
}
|
|
92
86
|
function mandatsEluEuropeen(senMat) {
|
|
93
|
-
return
|
|
87
|
+
return jsonArrayFrom(dbSens
|
|
94
88
|
.selectFrom("elueur")
|
|
95
89
|
.leftJoin("nation", "elueur.nationcod", "nation.nationcod")
|
|
96
90
|
.leftJoin("typman", "elueur.typmancod", "typman.typmancod")
|
|
@@ -98,7 +92,7 @@ function mandatsEluEuropeen(senMat) {
|
|
|
98
92
|
.orderBy("elueur.eludatdeb desc"));
|
|
99
93
|
}
|
|
100
94
|
function mandatsEluConseillerRegional(senMat) {
|
|
101
|
-
return
|
|
95
|
+
return jsonArrayFrom(dbSens
|
|
102
96
|
.selectFrom("elureg")
|
|
103
97
|
.leftJoin("reg", "elureg.regcod", "reg.regcod")
|
|
104
98
|
.leftJoin("typman", "elureg.typmancod", "typman.typmancod")
|
|
@@ -106,7 +100,7 @@ function mandatsEluConseillerRegional(senMat) {
|
|
|
106
100
|
.orderBy("elureg.eludatdeb desc"));
|
|
107
101
|
}
|
|
108
102
|
function mandatsEluSenateur(senMat) {
|
|
109
|
-
return
|
|
103
|
+
return jsonArrayFrom(dbSens
|
|
110
104
|
.selectFrom("elusen")
|
|
111
105
|
.leftJoin("etadebman", "elusen.etadebmancod", "etadebman.etadebmancod")
|
|
112
106
|
.leftJoin("etafinman", "elusen.etafinmancod", "etafinman.etafinmancod")
|
|
@@ -114,15 +108,15 @@ function mandatsEluSenateur(senMat) {
|
|
|
114
108
|
.where("elusen.senmat", "=", senMat)
|
|
115
109
|
.select(({ ref }) => [
|
|
116
110
|
"elusen.dptnum as code_circonscription",
|
|
117
|
-
|
|
118
|
-
|
|
111
|
+
toDateString(ref("elusen.eludatdeb")).as("date_debut"),
|
|
112
|
+
toDateString(ref("elusen.eludatfin")).as("date_fin"),
|
|
119
113
|
"etadebman.etadebmanlib as etat_debut",
|
|
120
114
|
"etafinman.etafinman as etat_fin",
|
|
121
115
|
])
|
|
122
116
|
.orderBy("elusen.eludatdeb desc"));
|
|
123
117
|
}
|
|
124
118
|
function mandatsEluTerritorial(senMat) {
|
|
125
|
-
return
|
|
119
|
+
return jsonArrayFrom(dbSens
|
|
126
120
|
.selectFrom("eluter")
|
|
127
121
|
.leftJoin("asster", "eluter.asstercod", "asster.asstercod")
|
|
128
122
|
.leftJoin("typman", "eluter.typmancod", "typman.typmancod")
|
|
@@ -130,26 +124,26 @@ function mandatsEluTerritorial(senMat) {
|
|
|
130
124
|
.orderBy("eluter.eludatdeb desc"));
|
|
131
125
|
}
|
|
132
126
|
function mandatsEluConseillerMunicipal(senMat) {
|
|
133
|
-
return
|
|
127
|
+
return jsonArrayFrom(dbSens
|
|
134
128
|
.selectFrom("eluvil")
|
|
135
129
|
.leftJoin("typman", "eluvil.typmancod", "typman.typmancod")
|
|
136
130
|
.where("eluvil.senmat", "=", senMat)
|
|
137
131
|
.orderBy("eluvil.eludatdeb desc"));
|
|
138
132
|
}
|
|
139
133
|
function fonctionsMembreCommission(memComId) {
|
|
140
|
-
return
|
|
134
|
+
return jsonArrayFrom(dbSens
|
|
141
135
|
.selectFrom("fonmemcom")
|
|
142
136
|
.leftJoin("foncom", "fonmemcom.foncomcod", "foncom.foncomcod")
|
|
143
137
|
.where("fonmemcom.memcomid", "=", memComId)
|
|
144
138
|
.select(({ ref }) => [
|
|
145
|
-
|
|
146
|
-
|
|
139
|
+
toDateString(ref("fonmemcom.fonmemcomdatdeb")).as("date_debut"),
|
|
140
|
+
toDateString(ref("fonmemcom.fonmemcomdatfin")).as("date_fin"),
|
|
147
141
|
"foncom.foncomlib as libelle",
|
|
148
142
|
])
|
|
149
143
|
.orderBy("fonmemcom.fonmemcomdatdeb desc"));
|
|
150
144
|
}
|
|
151
145
|
function mandatsMembreCommission(senMat) {
|
|
152
|
-
return
|
|
146
|
+
return jsonArrayFrom(dbSens
|
|
153
147
|
.selectFrom("memcom")
|
|
154
148
|
.leftJoin("com", "memcom.orgcod", "com.orgcod")
|
|
155
149
|
.leftJoin("typorg", "com.typorgcod", "typorg.typorgcod")
|
|
@@ -159,8 +153,8 @@ function mandatsMembreCommission(senMat) {
|
|
|
159
153
|
"memcom.orgcod as code_organisme",
|
|
160
154
|
"typorg.typorglib as type_organisme",
|
|
161
155
|
"com.comlilmin as libelle",
|
|
162
|
-
|
|
163
|
-
|
|
156
|
+
toDateString(ref("memcom.memcomdatdeb")).as("date_debut"),
|
|
157
|
+
toDateString(ref("memcom.memcomdatfin")).as("date_fin"),
|
|
164
158
|
])
|
|
165
159
|
.select(({ ref }) => [
|
|
166
160
|
fonctionsMembreCommission(ref("memcom.memcomid")).as("fonctions"),
|
|
@@ -168,19 +162,19 @@ function mandatsMembreCommission(senMat) {
|
|
|
168
162
|
.orderBy("memcom.memcomdatdeb desc"));
|
|
169
163
|
}
|
|
170
164
|
function fonctionsMembreDelegation(memDelegaId) {
|
|
171
|
-
return
|
|
165
|
+
return jsonArrayFrom(dbSens
|
|
172
166
|
.selectFrom("fonmemdelega")
|
|
173
167
|
.leftJoin("fondelega", "fonmemdelega.fondelcod", "fondelega.fondelcod")
|
|
174
168
|
.where("fonmemdelega.memdelegaid", "=", memDelegaId)
|
|
175
169
|
.select(({ ref }) => [
|
|
176
|
-
|
|
177
|
-
|
|
170
|
+
toDateString(ref("fonmemdelega.fonmemdeldatdeb")).as("date_debut"),
|
|
171
|
+
toDateString(ref("fonmemdelega.fonmemdeldatfin")).as("date_fin"),
|
|
178
172
|
"fondelega.fondellib as libelle",
|
|
179
173
|
])
|
|
180
174
|
.orderBy("fonmemdelega.fonmemdeldatdeb desc"));
|
|
181
175
|
}
|
|
182
176
|
function mandatsMembreDelegation(senMat) {
|
|
183
|
-
return
|
|
177
|
+
return jsonArrayFrom(dbSens
|
|
184
178
|
.selectFrom("memdelega")
|
|
185
179
|
.leftJoin("delega", "memdelega.orgcod", "delega.orgcod")
|
|
186
180
|
.leftJoin("designorg", "memdelega.designcod", "designorg.designcod")
|
|
@@ -191,8 +185,8 @@ function mandatsMembreDelegation(senMat) {
|
|
|
191
185
|
"memdelega.orgcod as code_organisme",
|
|
192
186
|
"typorg.typorglib as type_organisme",
|
|
193
187
|
"delega.evelib as libelle",
|
|
194
|
-
|
|
195
|
-
|
|
188
|
+
toDateString(ref("memdelega.memdelegadatdeb")).as("date_debut"),
|
|
189
|
+
toDateString(ref("memdelega.memdelegadatfin")).as("date_fin"),
|
|
196
190
|
])
|
|
197
191
|
.select(({ ref }) => [
|
|
198
192
|
fonctionsMembreDelegation(ref("memdelega.memdelegaid")).as("fonctions"),
|
|
@@ -200,7 +194,7 @@ function mandatsMembreDelegation(senMat) {
|
|
|
200
194
|
.orderBy("memdelega.memdelegadatdeb desc"));
|
|
201
195
|
}
|
|
202
196
|
function mandatsMembreExtraParlementaire(senMat) {
|
|
203
|
-
return
|
|
197
|
+
return jsonArrayFrom(dbSens
|
|
204
198
|
.selectFrom("memextpar")
|
|
205
199
|
.leftJoin("orgext", "memextpar.orgcod", "orgext.orgcod")
|
|
206
200
|
.leftJoin("design", "memextpar.designcod", "design.designcod")
|
|
@@ -208,19 +202,19 @@ function mandatsMembreExtraParlementaire(senMat) {
|
|
|
208
202
|
.orderBy("memextpar.memextpardatdeb desc"));
|
|
209
203
|
}
|
|
210
204
|
function fonctionsMembreGroupePolitique(memGrpPolId) {
|
|
211
|
-
return
|
|
205
|
+
return jsonArrayFrom(dbSens
|
|
212
206
|
.selectFrom("fonmemgrppol")
|
|
213
207
|
.leftJoin("fongrppol", "fonmemgrppol.fongrppolcod", "fongrppol.fongrppolcod")
|
|
214
208
|
.where("fonmemgrppol.memgrppolid", "=", memGrpPolId)
|
|
215
209
|
.select(({ ref }) => [
|
|
216
|
-
|
|
217
|
-
|
|
210
|
+
toDateString(ref("fonmemgrppol.fonmemgrppoldatdeb")).as("date_debut"),
|
|
211
|
+
toDateString(ref("fonmemgrppol.fonmemgrppoldatfin")).as("date_fin"),
|
|
218
212
|
"fongrppol.fongrppollib as libelle",
|
|
219
213
|
])
|
|
220
214
|
.orderBy("fonmemgrppol.fonmemgrppoldatdeb desc"));
|
|
221
215
|
}
|
|
222
216
|
function mandatsMembreGroupePolitique(senMat) {
|
|
223
|
-
return
|
|
217
|
+
return jsonArrayFrom(dbSens
|
|
224
218
|
.selectFrom("memgrppol")
|
|
225
219
|
.leftJoin("grppol", "memgrppol.grppolcod", "grppol.grppolcod")
|
|
226
220
|
.leftJoin("typapppol", "memgrppol.typapppolcod", "typapppol.typapppolcod")
|
|
@@ -228,8 +222,8 @@ function mandatsMembreGroupePolitique(senMat) {
|
|
|
228
222
|
.select(({ ref }) => [
|
|
229
223
|
"memgrppol.grppolcod as code",
|
|
230
224
|
"grppol.grppollibcou as libelle",
|
|
231
|
-
|
|
232
|
-
|
|
225
|
+
toDateString(ref("memgrppol.memgrppoldatdeb")).as("date_debut"),
|
|
226
|
+
toDateString(ref("memgrppol.memgrppoldatfin")).as("date_fin"),
|
|
233
227
|
"typapppol.typapppollib as fonction",
|
|
234
228
|
])
|
|
235
229
|
.select(({ ref }) => [
|
|
@@ -238,14 +232,14 @@ function mandatsMembreGroupePolitique(senMat) {
|
|
|
238
232
|
.orderBy("memgrppol.memgrppoldatdeb desc"));
|
|
239
233
|
}
|
|
240
234
|
function fonctionsMembreGroupeSenatorial(memGrpSenId) {
|
|
241
|
-
return
|
|
235
|
+
return jsonArrayFrom(dbSens
|
|
242
236
|
.selectFrom("fonmemgrpsen")
|
|
243
237
|
.leftJoin("fongrpsen", "fonmemgrpsen.fongrpsencod", "fongrpsen.fongrpsencod")
|
|
244
238
|
.where("fonmemgrpsen.memgrpsenid", "=", memGrpSenId)
|
|
245
239
|
.orderBy("fonmemgrpsen.fonmemgrpsendatdeb desc"));
|
|
246
240
|
}
|
|
247
241
|
function mandatsMembreGroupeSenatorial(senMat) {
|
|
248
|
-
return
|
|
242
|
+
return jsonArrayFrom(dbSens
|
|
249
243
|
.selectFrom("memgrpsen")
|
|
250
244
|
.leftJoin("grpsenami", "memgrpsen.orgcod", "grpsenami.orgcod")
|
|
251
245
|
.leftJoin("typgrpsen", "grpsenami.typgrpsencod", "typgrpsen.typgrpsencod")
|
|
@@ -256,14 +250,14 @@ function mandatsMembreGroupeSenatorial(senMat) {
|
|
|
256
250
|
.orderBy("memgrpsen.memgrpsendatent desc"));
|
|
257
251
|
}
|
|
258
252
|
function fonctionsMembreOrganisme(memOrgId) {
|
|
259
|
-
return
|
|
253
|
+
return jsonArrayFrom(dbSens
|
|
260
254
|
.selectFrom("fonmemorg")
|
|
261
255
|
.leftJoin("fonorg", "fonmemorg.fonorgcod", "fonorg.fonorgcod")
|
|
262
256
|
.where("fonmemorg.memorgid", "=", memOrgId)
|
|
263
257
|
.orderBy("fonmemorg.fonmemorgdatdeb desc"));
|
|
264
258
|
}
|
|
265
259
|
function mandatsMembreOrganisme(senMat) {
|
|
266
|
-
return
|
|
260
|
+
return jsonArrayFrom(dbSens
|
|
267
261
|
.selectFrom("memorg")
|
|
268
262
|
.leftJoin("org", "memorg.orgcod", "org.orgcod")
|
|
269
263
|
.leftJoin("typorg", "org.typorgcod", "typorg.typorgcod")
|
|
@@ -275,13 +269,13 @@ function mandatsMembreOrganisme(senMat) {
|
|
|
275
269
|
.orderBy("memorg.memorgdatdeb desc"));
|
|
276
270
|
}
|
|
277
271
|
function mandatsMinistre(senMat) {
|
|
278
|
-
return
|
|
272
|
+
return jsonArrayFrom(dbSens
|
|
279
273
|
.selectFrom("minind")
|
|
280
274
|
.where("minind.senmat", "=", senMat)
|
|
281
275
|
.orderBy("minind.mindatdeb desc"));
|
|
282
276
|
}
|
|
283
277
|
function contacts(senMat) {
|
|
284
|
-
return
|
|
278
|
+
return jsonArrayFrom(dbSens
|
|
285
279
|
.selectFrom("poicon")
|
|
286
280
|
.leftJoin("adresse", "poicon.poiconid", "adresse.poiconid")
|
|
287
281
|
.leftJoin("mel", "poicon.poiconid", "mel.poiconid")
|
|
@@ -290,13 +284,13 @@ function contacts(senMat) {
|
|
|
290
284
|
.orderBy("poicon.poiconnumtri asc"));
|
|
291
285
|
}
|
|
292
286
|
function urls(senMat) {
|
|
293
|
-
return
|
|
287
|
+
return jsonArrayFrom(dbSens
|
|
294
288
|
.selectFrom("senurl")
|
|
295
289
|
.where("senurl.senmat", "=", senMat)
|
|
296
290
|
.select(["senurl.typurlcod as code_url", "senurl.senurlurl as url"])
|
|
297
291
|
.orderBy("senurl.senurlnumtri asc"));
|
|
298
292
|
}
|
|
299
|
-
const findAllQuery =
|
|
293
|
+
const findAllQuery = dbSens
|
|
300
294
|
.selectFrom("sen")
|
|
301
295
|
.leftJoin("etasen", "sen.etasencod", "etasen.etasencod")
|
|
302
296
|
.leftJoin("pcs", "sen.pcscod", "pcs.pcscod")
|
|
@@ -311,8 +305,8 @@ const findAllQuery = databases_1.dbSens
|
|
|
311
305
|
"sen.sennomuse as nom_usuel",
|
|
312
306
|
"sen.senprenomuse as prenom_usuel",
|
|
313
307
|
"sen.etasencod as etat",
|
|
314
|
-
|
|
315
|
-
|
|
308
|
+
toDateString(ref("sen.sendatnai")).as("date_naissance"),
|
|
309
|
+
toDateString(ref("sen.sendatdec")).as("date_deces"),
|
|
316
310
|
"sen.sengrppolcodcou as code_groupe_politique",
|
|
317
311
|
"sen.sengrppolliccou as groupe_politique",
|
|
318
312
|
"sen.sencomcodcou as code_commission_permanente",
|
|
@@ -337,7 +331,7 @@ const findAllQuery = databases_1.dbSens
|
|
|
337
331
|
mandatsMembreGroupePolitique(ref("sen.senmat")).as("groupes"),
|
|
338
332
|
fonctionsBureau(ref("sen.senmat")).as("fonctions_bureau"),
|
|
339
333
|
]);
|
|
340
|
-
const findAllCirconscriptionsQuery =
|
|
334
|
+
const findAllCirconscriptionsQuery = dbSens
|
|
341
335
|
.selectFrom("dpt")
|
|
342
336
|
.leftJoin("reg", "dpt.regcod", "reg.regcod")
|
|
343
337
|
.select(({ ref }) => [
|
|
@@ -347,12 +341,12 @@ const findAllCirconscriptionsQuery = databases_1.dbSens
|
|
|
347
341
|
"dpt.dptart as article",
|
|
348
342
|
"reg.reglib as libelle_region",
|
|
349
343
|
"dpt.temvalcod as etat",
|
|
350
|
-
|
|
351
|
-
|
|
344
|
+
toDateString(ref("dpt.dptdatdeb")).as("date_debut"),
|
|
345
|
+
toDateString(ref("dpt.dptdatfin")).as("date_fin"),
|
|
352
346
|
"dpt.dptnbrsen as nombre_senateurs",
|
|
353
347
|
"dpt.dpturlcmp as url",
|
|
354
348
|
]);
|
|
355
|
-
const findAllOrganismesQuery =
|
|
349
|
+
const findAllOrganismesQuery = dbSens
|
|
356
350
|
.selectFrom((eb) => eb
|
|
357
351
|
.selectFrom("com")
|
|
358
352
|
.select([
|
|
@@ -424,25 +418,25 @@ const findAllOrganismesQuery = databases_1.dbSens
|
|
|
424
418
|
"all_organismes.orgcod as code",
|
|
425
419
|
"all_organismes.evelic as libelle_court",
|
|
426
420
|
"all_organismes.evelib as libelle",
|
|
427
|
-
|
|
421
|
+
rtrim(ref("all_organismes.evelil")).as("libelle_long"),
|
|
428
422
|
"all_organismes.typorgcod as type_code",
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
423
|
+
rtrim(ref("typorg.typorglib")).as("type_libelle"),
|
|
424
|
+
concat(val("https://www.senat.fr"), ref("all_organismes.orgurlsim")).as("url"),
|
|
425
|
+
toDateString(ref("all_organismes.orgdatcre")).as("date_debut"),
|
|
426
|
+
toDateString(ref("all_organismes.orgdatfin")).as("date_fin"),
|
|
433
427
|
"all_organismes.temvalcod as etat",
|
|
434
428
|
]);
|
|
435
|
-
function findAll() {
|
|
429
|
+
export function findAll() {
|
|
436
430
|
return findAllQuery.stream();
|
|
437
431
|
}
|
|
438
|
-
function findAllCirconscriptions() {
|
|
432
|
+
export function findAllCirconscriptions() {
|
|
439
433
|
return findAllCirconscriptionsQuery.stream();
|
|
440
434
|
}
|
|
441
|
-
function findAllOrganismes() {
|
|
435
|
+
export function findAllOrganismes() {
|
|
442
436
|
return findAllOrganismesQuery.stream();
|
|
443
437
|
}
|
|
444
|
-
function findActif() {
|
|
445
|
-
return
|
|
438
|
+
export function findActif() {
|
|
439
|
+
return dbSens
|
|
446
440
|
.selectFrom("sen")
|
|
447
441
|
.where("etasencod", "=", "ACTIF")
|
|
448
442
|
.select(["senmat", "sennomuse", "senprenomuse"])
|
package/lib/model/texte.js
CHANGED
|
@@ -1,20 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
exports.transformExposeDesMotifs = transformExposeDesMotifs;
|
|
5
|
-
exports.parseTexte = parseTexte;
|
|
6
|
-
exports.parseTexteFromFile = parseTexteFromFile;
|
|
7
|
-
exports.parseExposeDesMotifs = parseExposeDesMotifs;
|
|
8
|
-
exports.parseExposeDesMotifsFromFile = parseExposeDesMotifsFromFile;
|
|
9
|
-
const jsdom_1 = require("jsdom");
|
|
10
|
-
const datautil_1 = require("../scripts/datautil");
|
|
11
|
-
const texte_1 = require("../types/texte");
|
|
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";
|
|
12
4
|
function buildWorklow(metaElement) {
|
|
13
5
|
const stepElements = metaElement.querySelectorAll("workflow step");
|
|
14
6
|
const steps = [];
|
|
15
7
|
for (const stepElement of stepElements) {
|
|
16
8
|
const identification = stepElement.getAttribute("href") ?? "";
|
|
17
|
-
const identificationParts =
|
|
9
|
+
const identificationParts = AKN_WORKFLOW_IDENTIFICATION_STRUCTURE_REGEXP.exec(identification)?.groups;
|
|
18
10
|
steps.push({
|
|
19
11
|
eId: stepElement.getAttribute("eId"),
|
|
20
12
|
date: stepElement.getAttribute("date")
|
|
@@ -34,7 +26,7 @@ function buildWorklow(metaElement) {
|
|
|
34
26
|
function buildDivision(node, index) {
|
|
35
27
|
const eId = node.getAttribute("eId");
|
|
36
28
|
const tag = node.nodeName;
|
|
37
|
-
const level =
|
|
29
|
+
const level = DivisionType[tag];
|
|
38
30
|
const titleNode = node.querySelector("num");
|
|
39
31
|
const subtitleNode = node.querySelector("heading");
|
|
40
32
|
const headings = [
|
|
@@ -87,7 +79,7 @@ function buildEmptyArticle(index) {
|
|
|
87
79
|
index: index,
|
|
88
80
|
eId: "",
|
|
89
81
|
tag: "article",
|
|
90
|
-
level:
|
|
82
|
+
level: DivisionType["article"],
|
|
91
83
|
headings: [],
|
|
92
84
|
alineas: [],
|
|
93
85
|
};
|
|
@@ -136,13 +128,13 @@ function flattenTexte(texteContentRoot) {
|
|
|
136
128
|
iter(texteContentRoot);
|
|
137
129
|
return divisions;
|
|
138
130
|
}
|
|
139
|
-
function transformTexte(document) {
|
|
131
|
+
export function transformTexte(document) {
|
|
140
132
|
const metaElement = document.querySelector("meta");
|
|
141
133
|
const preambleElement = document.querySelector("preamble");
|
|
142
134
|
const identification = metaElement
|
|
143
135
|
?.querySelector("FRBRExpression FRBRuri")
|
|
144
136
|
?.getAttribute("value") ?? "";
|
|
145
|
-
const identificationParts =
|
|
137
|
+
const identificationParts = AKN_IDENTIFICATION_STRUCTURE_REGEXP.exec(identification)?.groups;
|
|
146
138
|
const bodyElement = document.querySelector("body");
|
|
147
139
|
const datePresentation = metaElement
|
|
148
140
|
?.querySelector("FRBRdate[name='#presentation']")
|
|
@@ -184,7 +176,7 @@ function transformTexte(document) {
|
|
|
184
176
|
divisions: bodyElement ? flattenTexte(bodyElement) : [],
|
|
185
177
|
};
|
|
186
178
|
}
|
|
187
|
-
function transformExposeDesMotifs(document) {
|
|
179
|
+
export function transformExposeDesMotifs(document) {
|
|
188
180
|
const sectionElements = document.querySelectorAll("section");
|
|
189
181
|
const exposeDesMotifsRegexp = new RegExp("EXPOS.{1,2}[\\n\\s]DES[\\n\\s]MOTIFS");
|
|
190
182
|
for (const sectionElement of sectionElements) {
|
|
@@ -213,9 +205,9 @@ function transformExposeDesMotifs(document) {
|
|
|
213
205
|
}
|
|
214
206
|
return null;
|
|
215
207
|
}
|
|
216
|
-
function parseTexte(texteXml) {
|
|
208
|
+
export function parseTexte(texteXml) {
|
|
217
209
|
try {
|
|
218
|
-
const { document } = new
|
|
210
|
+
const { document } = new JSDOM(texteXml, {
|
|
219
211
|
contentType: "text/xml",
|
|
220
212
|
}).window;
|
|
221
213
|
return transformTexte(document);
|
|
@@ -227,9 +219,9 @@ function parseTexte(texteXml) {
|
|
|
227
219
|
}
|
|
228
220
|
// Prevent from memory leak
|
|
229
221
|
// https://github.com/jsdom/jsdom/issues/2583#issuecomment-559520814
|
|
230
|
-
async function parseTexteFromFile(xmlFilePath) {
|
|
222
|
+
export async function parseTexteFromFile(xmlFilePath) {
|
|
231
223
|
try {
|
|
232
|
-
const { document } = (await
|
|
224
|
+
const { document } = (await JSDOM.fromFile(xmlFilePath, { contentType: "text/xml" })).window;
|
|
233
225
|
return transformTexte(document);
|
|
234
226
|
}
|
|
235
227
|
catch (error) {
|
|
@@ -237,15 +229,15 @@ async function parseTexteFromFile(xmlFilePath) {
|
|
|
237
229
|
}
|
|
238
230
|
return null;
|
|
239
231
|
}
|
|
240
|
-
function parseExposeDesMotifs(exposeDesMotifsHtml) {
|
|
241
|
-
const { document } = new
|
|
232
|
+
export function parseExposeDesMotifs(exposeDesMotifsHtml) {
|
|
233
|
+
const { document } = new JSDOM(exposeDesMotifsHtml, {
|
|
242
234
|
contentType: "text/html",
|
|
243
235
|
}).window;
|
|
244
236
|
return transformExposeDesMotifs(document);
|
|
245
237
|
}
|
|
246
238
|
// Prevent from memory leak
|
|
247
239
|
// https://github.com/jsdom/jsdom/issues/2583#issuecomment-559520814
|
|
248
|
-
async function parseExposeDesMotifsFromFile(htmlFilePath) {
|
|
249
|
-
const { document } = (await
|
|
240
|
+
export async function parseExposeDesMotifsFromFile(htmlFilePath) {
|
|
241
|
+
const { document } = (await JSDOM.fromFile(htmlFilePath, { contentType: "text/html" })).window;
|
|
250
242
|
return transformExposeDesMotifs(document);
|
|
251
243
|
}
|
package/lib/model/util.js
CHANGED
|
@@ -1,27 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
exports.expandToRows = expandToRows;
|
|
5
|
-
exports.removeSubstring = removeSubstring;
|
|
6
|
-
exports.replace = replace;
|
|
7
|
-
exports.rtrim = rtrim;
|
|
8
|
-
exports.toDateString = toDateString;
|
|
9
|
-
const kysely_1 = require("kysely");
|
|
10
|
-
function concat(...exprs) {
|
|
11
|
-
return kysely_1.sql.join(exprs, (0, kysely_1.sql) `||`).$castTo();
|
|
1
|
+
import { sql } from "kysely";
|
|
2
|
+
export function concat(...exprs) {
|
|
3
|
+
return sql.join(exprs, sql `||`).$castTo();
|
|
12
4
|
}
|
|
13
|
-
function expandToRows(expr, regexp) {
|
|
14
|
-
return
|
|
5
|
+
export function expandToRows(expr, regexp) {
|
|
6
|
+
return sql `unnest(regexp_matches(${expr}, ${regexp}, 'g'))`;
|
|
15
7
|
}
|
|
16
|
-
function removeSubstring(expr, pattern) {
|
|
17
|
-
return replace(expr, pattern,
|
|
8
|
+
export function removeSubstring(expr, pattern) {
|
|
9
|
+
return replace(expr, pattern, sql.val(""));
|
|
18
10
|
}
|
|
19
|
-
function replace(expr, pattern, replacement) {
|
|
20
|
-
return
|
|
11
|
+
export function replace(expr, pattern, replacement) {
|
|
12
|
+
return sql `replace(${expr}, ${pattern}, ${replacement})`;
|
|
21
13
|
}
|
|
22
|
-
function rtrim(expr) {
|
|
23
|
-
return
|
|
14
|
+
export function rtrim(expr) {
|
|
15
|
+
return sql `rtrim(${expr})`;
|
|
24
16
|
}
|
|
25
|
-
function toDateString(expr) {
|
|
26
|
-
return
|
|
17
|
+
export function toDateString(expr) {
|
|
18
|
+
return sql `to_char(${expr}, 'yyyy-MM-dd')`;
|
|
27
19
|
}
|
package/lib/raw_types/ameli.js
CHANGED
package/lib/raw_types/debats.js
CHANGED
package/lib/raw_types/dosleg.js
CHANGED
package/lib/raw_types/sens.js
CHANGED