@tricoteuses/senat 3.1.6 → 3.1.7
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/src/config.d.ts +43 -0
- package/lib/src/config.js +37 -0
- package/lib/src/conversion_textes.d.ts +11 -0
- package/lib/src/conversion_textes.js +320 -0
- package/lib/src/databases_postgres.d.ts +4 -0
- package/lib/src/databases_postgres.js +23 -0
- package/lib/src/datasets.d.ts +38 -0
- package/lib/src/datasets.js +247 -0
- package/lib/src/git.d.ts +27 -0
- package/lib/src/git.js +251 -0
- package/lib/src/loaders.d.ts +52 -0
- package/lib/src/loaders.js +260 -0
- package/lib/src/model/agenda.d.ts +6 -0
- package/lib/src/model/agenda.js +148 -0
- package/lib/src/model/ameli.d.ts +67 -0
- package/lib/src/model/ameli.js +150 -0
- package/lib/src/model/commission.d.ts +19 -0
- package/lib/src/model/commission.js +269 -0
- package/lib/src/model/debats.d.ts +39 -0
- package/lib/src/model/debats.js +112 -0
- package/lib/src/model/documents.d.ts +32 -0
- package/lib/src/model/documents.js +182 -0
- package/lib/src/model/dosleg.d.ts +144 -0
- package/lib/src/model/dosleg.js +468 -0
- package/lib/src/model/index.d.ts +7 -0
- package/lib/src/model/index.js +7 -0
- package/lib/src/model/questions.d.ts +54 -0
- package/lib/src/model/questions.js +91 -0
- package/lib/src/model/scrutins.d.ts +48 -0
- package/lib/src/model/scrutins.js +121 -0
- package/lib/src/model/seance.d.ts +3 -0
- package/lib/src/model/seance.js +267 -0
- package/lib/src/model/sens.d.ts +112 -0
- package/lib/src/model/sens.js +385 -0
- package/lib/src/model/util.d.ts +1 -0
- package/lib/src/model/util.js +15 -0
- package/lib/src/raw_types/ameli.d.ts +1762 -0
- package/lib/src/raw_types/ameli.js +1074 -0
- package/lib/src/raw_types/debats.d.ts +380 -0
- package/lib/src/raw_types/debats.js +266 -0
- package/lib/src/raw_types/dosleg.d.ts +2954 -0
- package/lib/src/raw_types/dosleg.js +2005 -0
- package/lib/src/raw_types/questions.d.ts +699 -0
- package/lib/src/raw_types/questions.js +493 -0
- package/lib/src/raw_types/sens.d.ts +7843 -0
- package/lib/src/raw_types/sens.js +4691 -0
- package/lib/src/raw_types_schemats/ameli.d.ts +541 -0
- package/lib/src/raw_types_schemats/ameli.js +2 -0
- package/lib/src/raw_types_schemats/debats.d.ts +127 -0
- package/lib/src/raw_types_schemats/debats.js +2 -0
- package/lib/src/raw_types_schemats/dosleg.d.ts +977 -0
- package/lib/src/raw_types_schemats/dosleg.js +2 -0
- package/lib/src/raw_types_schemats/questions.d.ts +237 -0
- package/lib/src/raw_types_schemats/questions.js +2 -0
- package/lib/src/raw_types_schemats/sens.d.ts +2709 -0
- package/lib/src/raw_types_schemats/sens.js +2 -0
- package/lib/src/scripts/convert_data.js +7 -5
- package/lib/src/scripts/debug_dosleg_query.d.ts +6 -0
- package/lib/src/scripts/debug_dosleg_query.js +50 -0
- package/lib/src/types/agenda.d.ts +45 -0
- package/lib/src/types/agenda.js +1 -0
- package/lib/src/types/ameli.d.ts +5 -0
- package/lib/src/types/ameli.js +1 -0
- package/lib/src/types/compte_rendu.d.ts +83 -0
- package/lib/src/types/compte_rendu.js +1 -0
- package/lib/src/types/debats.d.ts +2 -0
- package/lib/src/types/debats.js +1 -0
- package/lib/src/types/dosleg.d.ts +70 -0
- package/lib/src/types/dosleg.js +1 -0
- package/lib/src/types/questions.d.ts +2 -0
- package/lib/src/types/questions.js +1 -0
- package/lib/src/types/sens.d.ts +8 -0
- package/lib/src/types/sens.js +1 -0
- package/lib/src/types/sessions.d.ts +6 -0
- package/lib/src/types/sessions.js +19 -0
- package/lib/src/types/texte.d.ts +72 -0
- package/lib/src/types/texte.js +15 -0
- package/lib/src/validators/config.d.ts +9 -0
- package/lib/src/validators/config.js +10 -0
- package/package.json +1 -1
|
@@ -0,0 +1,385 @@
|
|
|
1
|
+
import { streamUnsafeQuery } from "../databases_postgres.js";
|
|
2
|
+
function bureauFunctionsSql(senMatSql) {
|
|
3
|
+
return `
|
|
4
|
+
(
|
|
5
|
+
select coalesce(json_agg(rows order by rows.order_date desc nulls last), '[]'::json)
|
|
6
|
+
from (
|
|
7
|
+
select
|
|
8
|
+
to_char(senbur.senburdatdeb, 'YYYY-MM-DD') as date_debut,
|
|
9
|
+
to_char(senbur.senburdatfin, 'YYYY-MM-DD') as date_fin,
|
|
10
|
+
coalesce(nullif(bur.burlib, ''), nullif(bur.burlil, ''), nullif(bur.burlic, '')) as libelle,
|
|
11
|
+
senbur.senburdatdeb as order_date
|
|
12
|
+
from senat.sens_senbur as senbur
|
|
13
|
+
left join senat.sens_bur as bur on senbur.burcod = bur.burcod
|
|
14
|
+
where senbur.senmat = ${senMatSql}
|
|
15
|
+
) as rows
|
|
16
|
+
)
|
|
17
|
+
`;
|
|
18
|
+
}
|
|
19
|
+
function senateurMandatesSql(senMatSql) {
|
|
20
|
+
return `
|
|
21
|
+
(
|
|
22
|
+
select coalesce(json_agg(rows order by rows.order_date desc nulls last), '[]'::json)
|
|
23
|
+
from (
|
|
24
|
+
select
|
|
25
|
+
elusen.dptnum::text as code_circonscription,
|
|
26
|
+
to_char(elusen.eludatdeb, 'YYYY-MM-DD') as date_debut,
|
|
27
|
+
to_char(elusen.eludatfin, 'YYYY-MM-DD') as date_fin,
|
|
28
|
+
elusen.temvalcod as etat,
|
|
29
|
+
etadebman.etadebmanlib as etat_debut,
|
|
30
|
+
etafinman.etafinman as etat_fin,
|
|
31
|
+
elusen.eludatdeb as order_date
|
|
32
|
+
from senat.sens_elusen as elusen
|
|
33
|
+
left join senat.sens_etadebman as etadebman on elusen.etadebmancod = etadebman.etadebmancod
|
|
34
|
+
left join senat.sens_etafinman as etafinman on elusen.etafinmancod = etafinman.etafinmancod
|
|
35
|
+
where elusen.senmat = ${senMatSql}
|
|
36
|
+
) as rows
|
|
37
|
+
)
|
|
38
|
+
`;
|
|
39
|
+
}
|
|
40
|
+
function commissionFunctionsSql(memComIdSql) {
|
|
41
|
+
return `
|
|
42
|
+
(
|
|
43
|
+
select coalesce(json_agg(rows order by rows.order_date desc nulls last), '[]'::json)
|
|
44
|
+
from (
|
|
45
|
+
select
|
|
46
|
+
to_char(fonmemcom.fonmemcomdatdeb, 'YYYY-MM-DD') as date_debut,
|
|
47
|
+
to_char(fonmemcom.fonmemcomdatfin, 'YYYY-MM-DD') as date_fin,
|
|
48
|
+
coalesce(nullif(foncom.foncomlib, ''), nullif(foncom.foncomlil, ''), nullif(foncom.foncomlic, '')) as libelle,
|
|
49
|
+
fonmemcom.fonmemcomdatdeb as order_date
|
|
50
|
+
from senat.sens_fonmemcom as fonmemcom
|
|
51
|
+
left join senat.sens_foncom as foncom on fonmemcom.foncomcod = foncom.foncomcod
|
|
52
|
+
where fonmemcom.memcomid = ${memComIdSql}
|
|
53
|
+
) as rows
|
|
54
|
+
)
|
|
55
|
+
`;
|
|
56
|
+
}
|
|
57
|
+
function commissionMandatesSql(senMatSql) {
|
|
58
|
+
return `
|
|
59
|
+
(
|
|
60
|
+
select coalesce(json_agg(rows order by rows.order_date desc nulls last), '[]'::json)
|
|
61
|
+
from (
|
|
62
|
+
select
|
|
63
|
+
memcom.orgcod as code_organisme,
|
|
64
|
+
to_char(memcom.memcomdatdeb, 'YYYY-MM-DD') as date_debut,
|
|
65
|
+
to_char(memcom.memcomdatfin, 'YYYY-MM-DD') as date_fin,
|
|
66
|
+
memcom.temvalcod as etat,
|
|
67
|
+
${commissionFunctionsSql("memcom.memcomid")} as fonctions,
|
|
68
|
+
com.comlilmin as libelle,
|
|
69
|
+
com.typorgcod as type_code_organisme,
|
|
70
|
+
typorg.typorglib as type_organisme,
|
|
71
|
+
memcom.memcomdatdeb as order_date
|
|
72
|
+
from senat.sens_memcom as memcom
|
|
73
|
+
left join senat.sens_com as com on memcom.orgcod = com.orgcod
|
|
74
|
+
left join senat.sens_typorg as typorg on com.typorgcod = typorg.typorgcod
|
|
75
|
+
where memcom.senmat = ${senMatSql}
|
|
76
|
+
) as rows
|
|
77
|
+
)
|
|
78
|
+
`;
|
|
79
|
+
}
|
|
80
|
+
function delegationFunctionsSql(memDelegaIdSql) {
|
|
81
|
+
return `
|
|
82
|
+
(
|
|
83
|
+
select coalesce(json_agg(rows order by rows.order_date desc nulls last), '[]'::json)
|
|
84
|
+
from (
|
|
85
|
+
select
|
|
86
|
+
to_char(fonmemdelega.fonmemdeldatdeb, 'YYYY-MM-DD') as date_debut,
|
|
87
|
+
to_char(fonmemdelega.fonmemdeldatfin, 'YYYY-MM-DD') as date_fin,
|
|
88
|
+
coalesce(
|
|
89
|
+
nullif(fondelega.fondellib, ''),
|
|
90
|
+
nullif(fondelega.fondellil, ''),
|
|
91
|
+
nullif(fondelega.fondellic, '')
|
|
92
|
+
) as libelle,
|
|
93
|
+
fonmemdelega.fonmemdeldatdeb as order_date
|
|
94
|
+
from senat.sens_fonmemdelega as fonmemdelega
|
|
95
|
+
left join senat.sens_fondelega as fondelega on fonmemdelega.fondelcod = fondelega.fondelcod
|
|
96
|
+
where fonmemdelega.memdelegaid = ${memDelegaIdSql}
|
|
97
|
+
) as rows
|
|
98
|
+
)
|
|
99
|
+
`;
|
|
100
|
+
}
|
|
101
|
+
function delegationMandatesSql(senMatSql) {
|
|
102
|
+
return `
|
|
103
|
+
(
|
|
104
|
+
select coalesce(json_agg(rows order by rows.order_date desc nulls last), '[]'::json)
|
|
105
|
+
from (
|
|
106
|
+
select
|
|
107
|
+
memdelega.orgcod as code_organisme,
|
|
108
|
+
to_char(memdelega.memdelegadatdeb, 'YYYY-MM-DD') as date_debut,
|
|
109
|
+
to_char(memdelega.memdelegadatfin, 'YYYY-MM-DD') as date_fin,
|
|
110
|
+
memdelega.temvalcod as etat,
|
|
111
|
+
${delegationFunctionsSql("memdelega.memdelegaid")} as fonctions,
|
|
112
|
+
delega.evelib as libelle,
|
|
113
|
+
delega.typorgcod as type_code_organisme,
|
|
114
|
+
typorg.typorglib as type_organisme,
|
|
115
|
+
memdelega.memdelegadatdeb as order_date
|
|
116
|
+
from senat.sens_memdelega as memdelega
|
|
117
|
+
left join senat.sens_delega as delega on memdelega.orgcod = delega.orgcod
|
|
118
|
+
left join senat.sens_designorg as designorg on memdelega.designcod = designorg.designcod
|
|
119
|
+
left join senat.sens_typorg as typorg on delega.typorgcod = typorg.typorgcod
|
|
120
|
+
where memdelega.senmat = ${senMatSql}
|
|
121
|
+
) as rows
|
|
122
|
+
)
|
|
123
|
+
`;
|
|
124
|
+
}
|
|
125
|
+
function groupFunctionsSql(memGrpPolIdSql) {
|
|
126
|
+
return `
|
|
127
|
+
(
|
|
128
|
+
select coalesce(json_agg(rows order by rows.order_date desc nulls last), '[]'::json)
|
|
129
|
+
from (
|
|
130
|
+
select
|
|
131
|
+
to_char(fonmemgrppol.fonmemgrppoldatdeb, 'YYYY-MM-DD') as date_debut,
|
|
132
|
+
to_char(fonmemgrppol.fonmemgrppoldatfin, 'YYYY-MM-DD') as date_fin,
|
|
133
|
+
coalesce(
|
|
134
|
+
nullif(fongrppol.fongrppollib, ''),
|
|
135
|
+
nullif(fongrppol.fongrppollil, ''),
|
|
136
|
+
nullif(fongrppol.fongrppollic, '')
|
|
137
|
+
) as libelle,
|
|
138
|
+
fonmemgrppol.fonmemgrppoldatdeb as order_date
|
|
139
|
+
from senat.sens_fonmemgrppol as fonmemgrppol
|
|
140
|
+
left join senat.sens_fongrppol as fongrppol on fonmemgrppol.fongrppolcod = fongrppol.fongrppolcod
|
|
141
|
+
where fonmemgrppol.memgrppolid = ${memGrpPolIdSql}
|
|
142
|
+
) as rows
|
|
143
|
+
)
|
|
144
|
+
`;
|
|
145
|
+
}
|
|
146
|
+
function groupMandatesSql(senMatSql) {
|
|
147
|
+
return `
|
|
148
|
+
(
|
|
149
|
+
select coalesce(json_agg(rows order by rows.order_date desc nulls last), '[]'::json)
|
|
150
|
+
from (
|
|
151
|
+
select
|
|
152
|
+
memgrppol.grppolcod as code_organisme,
|
|
153
|
+
to_char(memgrppol.memgrppoldatdeb, 'YYYY-MM-DD') as date_debut,
|
|
154
|
+
to_char(memgrppol.memgrppoldatfin, 'YYYY-MM-DD') as date_fin,
|
|
155
|
+
memgrppol.temvalcod as etat,
|
|
156
|
+
${groupFunctionsSql("memgrppol.memgrppolid")} as fonctions,
|
|
157
|
+
grppol.grppollibcou as libelle,
|
|
158
|
+
grppol.typorgcod as type_code_organisme,
|
|
159
|
+
typorg.typorglib as type_organisme,
|
|
160
|
+
memgrppol.memgrppoldatdeb as order_date
|
|
161
|
+
from senat.sens_memgrppol as memgrppol
|
|
162
|
+
left join senat.sens_grppol as grppol on memgrppol.grppolcod = grppol.grppolcod
|
|
163
|
+
left join senat.sens_typapppol as typapppol on memgrppol.typapppolcod = typapppol.typapppolcod
|
|
164
|
+
left join senat.sens_typorg as typorg on grppol.typorgcod = typorg.typorgcod
|
|
165
|
+
where memgrppol.senmat = ${senMatSql}
|
|
166
|
+
) as rows
|
|
167
|
+
)
|
|
168
|
+
`;
|
|
169
|
+
}
|
|
170
|
+
function addressesSql(poiconIdSql) {
|
|
171
|
+
return `
|
|
172
|
+
(
|
|
173
|
+
select coalesce(json_agg(rows order by rows.order_num asc nulls last), '[]'::json)
|
|
174
|
+
from (
|
|
175
|
+
select
|
|
176
|
+
adresse.adrnumvoi as numero_voie,
|
|
177
|
+
adresse.adrnomvoi as nom_voie,
|
|
178
|
+
adresse.adrcmp as complement,
|
|
179
|
+
adresse.adrcmp2 as complement2,
|
|
180
|
+
adresse.adrcodpos as code_postal,
|
|
181
|
+
adresse.adrcom as commune,
|
|
182
|
+
adresse.adrcdxcod as code_cedex,
|
|
183
|
+
adresse.adrcdxlib as libelle_cedex,
|
|
184
|
+
adresse.adrburdis as bureau_distributeur,
|
|
185
|
+
adresse.adrnumtri as order_num
|
|
186
|
+
from senat.sens_adresse as adresse
|
|
187
|
+
where adresse.poiconid = ${poiconIdSql}
|
|
188
|
+
) as rows
|
|
189
|
+
)
|
|
190
|
+
`;
|
|
191
|
+
}
|
|
192
|
+
function phonesSql(poiconIdSql) {
|
|
193
|
+
return `
|
|
194
|
+
(
|
|
195
|
+
select coalesce(json_agg(rows order by rows.order_num asc nulls last), '[]'::json)
|
|
196
|
+
from (
|
|
197
|
+
select
|
|
198
|
+
telephone.typtelcod as type,
|
|
199
|
+
telephone.telnum as numero,
|
|
200
|
+
telephone.telnumtri as order_num
|
|
201
|
+
from senat.sens_telephone as telephone
|
|
202
|
+
where telephone.poiconid = ${poiconIdSql}
|
|
203
|
+
) as rows
|
|
204
|
+
)
|
|
205
|
+
`;
|
|
206
|
+
}
|
|
207
|
+
function pointsContactSql(senMatSql) {
|
|
208
|
+
return `
|
|
209
|
+
(
|
|
210
|
+
select coalesce(json_agg(rows order by rows.order_num asc nulls last), '[]'::json)
|
|
211
|
+
from (
|
|
212
|
+
select
|
|
213
|
+
poicon.poiconid::text as id,
|
|
214
|
+
poicon.typpoiconcod as type,
|
|
215
|
+
poicon.poiconlib as libelle,
|
|
216
|
+
${addressesSql("poicon.poiconid")} as adresses,
|
|
217
|
+
${phonesSql("poicon.poiconid")} as telephones,
|
|
218
|
+
poicon.poiconnumtri as order_num
|
|
219
|
+
from senat.sens_poicon as poicon
|
|
220
|
+
where poicon.senmat = ${senMatSql}
|
|
221
|
+
) as rows
|
|
222
|
+
)
|
|
223
|
+
`;
|
|
224
|
+
}
|
|
225
|
+
function urlsSql(senMatSql) {
|
|
226
|
+
return `
|
|
227
|
+
(
|
|
228
|
+
select coalesce(json_agg(rows order by rows.order_num asc nulls last), '[]'::json)
|
|
229
|
+
from (
|
|
230
|
+
select
|
|
231
|
+
senurl.typurlcod as code_url,
|
|
232
|
+
senurl.senurlurl as url,
|
|
233
|
+
senurl.senurlnumtri as order_num
|
|
234
|
+
from senat.sens_senurl as senurl
|
|
235
|
+
where senurl.senmat = ${senMatSql}
|
|
236
|
+
) as rows
|
|
237
|
+
)
|
|
238
|
+
`;
|
|
239
|
+
}
|
|
240
|
+
function buildFindAllSenateursQuery() {
|
|
241
|
+
return {
|
|
242
|
+
params: [],
|
|
243
|
+
query: `
|
|
244
|
+
select
|
|
245
|
+
sen.senmat as matricule,
|
|
246
|
+
sen.quacod as qualite,
|
|
247
|
+
sen.sennomuse as nom_usuel,
|
|
248
|
+
sen.senprenomuse as prenom_usuel,
|
|
249
|
+
sen.etasencod as etat,
|
|
250
|
+
to_char(sen.sendatnai, 'YYYY-MM-DD') as date_naissance,
|
|
251
|
+
to_char(sen.sendatdec, 'YYYY-MM-DD') as date_deces,
|
|
252
|
+
sen.sengrppolcodcou as code_groupe_politique,
|
|
253
|
+
sen.sengrppolliccou as groupe_politique,
|
|
254
|
+
sen.sencomcodcou as code_commission_permanente,
|
|
255
|
+
com.comlilmin as commission_permanente,
|
|
256
|
+
sen.sencirnumcou::text as code_circonscription,
|
|
257
|
+
sen.sencircou as circonscription,
|
|
258
|
+
sen.senburliccou as fonction_bureau_senat,
|
|
259
|
+
sen.senema as courrier_electronique,
|
|
260
|
+
pcs.pcslil as "PCS_INSEE",
|
|
261
|
+
pcs42.pcs42lib as "PCS_INSEE_42",
|
|
262
|
+
pcs24.pcs24lib as "PCS_INSEE_24",
|
|
263
|
+
pcs8.pcs8lil as "PCS_INSEE_8",
|
|
264
|
+
sen.sendespro as description_profession,
|
|
265
|
+
sen.sennumsie::text as siege,
|
|
266
|
+
sen.sendaiurl as url_hatvp,
|
|
267
|
+
${urlsSql("sen.senmat")} as urls,
|
|
268
|
+
${senateurMandatesSql("sen.senmat")} as mandats_senateur,
|
|
269
|
+
${commissionMandatesSql("sen.senmat")} as commissions,
|
|
270
|
+
${delegationMandatesSql("sen.senmat")} as delegations,
|
|
271
|
+
${groupMandatesSql("sen.senmat")} as groupes,
|
|
272
|
+
${bureauFunctionsSql("sen.senmat")} as fonctions_bureau,
|
|
273
|
+
${pointsContactSql("sen.senmat")} as points_contact
|
|
274
|
+
from senat.sens_sen as sen
|
|
275
|
+
left join senat.sens_etasen as etasen on sen.etasencod = etasen.etasencod
|
|
276
|
+
left join senat.sens_pcs as pcs on sen.pcscod = pcs.pcscod
|
|
277
|
+
left join senat.sens_pcs42 as pcs42 on pcs.pcs42cod = pcs42.pcs42cod
|
|
278
|
+
left join senat.sens_pcs24 as pcs24 on pcs42.pcs24cod = pcs24.pcs24cod
|
|
279
|
+
left join senat.sens_pcs8 as pcs8 on pcs24.pcs8cod = pcs8.pcs8cod
|
|
280
|
+
left join senat.sens_grppol as grppol on sen.sengrppolcodcou = grppol.grppolcod
|
|
281
|
+
left join senat.sens_com as com on sen.sencomcodcou = com.orgcod
|
|
282
|
+
`,
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
function buildFindAllCirconscriptionsQuery() {
|
|
286
|
+
return {
|
|
287
|
+
params: [],
|
|
288
|
+
query: `
|
|
289
|
+
select
|
|
290
|
+
dpt.dptnum::text as identifiant,
|
|
291
|
+
dpt.dptcod as code,
|
|
292
|
+
dpt.dptlib as libelle_departement,
|
|
293
|
+
dpt.dptart as article,
|
|
294
|
+
reg.reglib as libelle_region,
|
|
295
|
+
dpt.temvalcod as etat,
|
|
296
|
+
to_char(dpt.dptdatdeb, 'YYYY-MM-DD') as date_debut,
|
|
297
|
+
to_char(dpt.dptdatfin, 'YYYY-MM-DD') as date_fin,
|
|
298
|
+
dpt.dptnbrsen::text as nombre_senateurs,
|
|
299
|
+
dpt.dpturlcmp as url
|
|
300
|
+
from senat.sens_dpt as dpt
|
|
301
|
+
left join senat.sens_reg as reg on dpt.regcod = reg.regcod
|
|
302
|
+
`,
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
function buildFindAllOrganismesQuery() {
|
|
306
|
+
return {
|
|
307
|
+
params: [],
|
|
308
|
+
query: `
|
|
309
|
+
select
|
|
310
|
+
all_organismes.orgcod as code,
|
|
311
|
+
all_organismes.evelic as libelle_court,
|
|
312
|
+
all_organismes.evelib as libelle,
|
|
313
|
+
rtrim(all_organismes.evelil) as libelle_long,
|
|
314
|
+
all_organismes.typorgcod as type_code,
|
|
315
|
+
rtrim(typorg.typorglib) as type_libelle,
|
|
316
|
+
'https://www.senat.fr' || all_organismes.orgurlsim as url,
|
|
317
|
+
to_char(all_organismes.orgdatcre, 'YYYY-MM-DD') as date_debut,
|
|
318
|
+
to_char(all_organismes.orgdatfin, 'YYYY-MM-DD') as date_fin,
|
|
319
|
+
all_organismes.temvalcod as etat
|
|
320
|
+
from (
|
|
321
|
+
select orgcod, evelic, evelib, evelil, typorgcod, orgurlsim, orgdatcre, orgdatfin, temvalcod
|
|
322
|
+
from senat.sens_com as com
|
|
323
|
+
union
|
|
324
|
+
select orgcod, evelic, evelib, evelil, typorgcod, orgurlsim, orgdatcre, orgdatfin, temvalcod
|
|
325
|
+
from senat.sens_delega as delega
|
|
326
|
+
union
|
|
327
|
+
select
|
|
328
|
+
grppolcod as orgcod,
|
|
329
|
+
grppolliccou as evelic,
|
|
330
|
+
grppollibcou as evelib,
|
|
331
|
+
grppollilcou as evelil,
|
|
332
|
+
typorgcod,
|
|
333
|
+
grppolurlsim as orgurlsim,
|
|
334
|
+
grppoldatcre as orgdatcre,
|
|
335
|
+
grppoldatfin as orgdatfin,
|
|
336
|
+
temvalcod
|
|
337
|
+
from senat.sens_grppol as grppol
|
|
338
|
+
union
|
|
339
|
+
select orgcod, evelic, evelib, evelil, typorgcod, orgurlsim, orgdatcre, orgdatfin, temvalcod
|
|
340
|
+
from senat.sens_grpsenami as grpsenami
|
|
341
|
+
union
|
|
342
|
+
select orgcod, evelic, evelib, evelil, typorgcod, orgurlsim, orgdatcre, orgdatfin, temvalcod
|
|
343
|
+
from senat.sens_org as org
|
|
344
|
+
) as all_organismes
|
|
345
|
+
left join senat.sens_typorg as typorg on all_organismes.typorgcod = typorg.typorgcod
|
|
346
|
+
`,
|
|
347
|
+
};
|
|
348
|
+
}
|
|
349
|
+
function buildFindActifQuery() {
|
|
350
|
+
return {
|
|
351
|
+
params: [],
|
|
352
|
+
query: `
|
|
353
|
+
select senmat, sennomuse, senprenomuse
|
|
354
|
+
from senat.sens_sen as sen
|
|
355
|
+
where etasencod = 'ACTIF'
|
|
356
|
+
`,
|
|
357
|
+
};
|
|
358
|
+
}
|
|
359
|
+
export async function* findAll() {
|
|
360
|
+
const { query, params } = buildFindAllSenateursQuery();
|
|
361
|
+
for await (const row of streamUnsafeQuery(query, params)) {
|
|
362
|
+
yield {
|
|
363
|
+
...row,
|
|
364
|
+
commissions: row.commissions ?? [],
|
|
365
|
+
delegations: row.delegations ?? [],
|
|
366
|
+
fonctions_bureau: row.fonctions_bureau ?? [],
|
|
367
|
+
groupes: row.groupes ?? [],
|
|
368
|
+
mandats_senateur: row.mandats_senateur ?? [],
|
|
369
|
+
points_contact: row.points_contact ?? [],
|
|
370
|
+
urls: row.urls ?? [],
|
|
371
|
+
};
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
export async function* findAllCirconscriptions() {
|
|
375
|
+
const { query, params } = buildFindAllCirconscriptionsQuery();
|
|
376
|
+
yield* streamUnsafeQuery(query, params);
|
|
377
|
+
}
|
|
378
|
+
export async function* findAllOrganismes() {
|
|
379
|
+
const { query, params } = buildFindAllOrganismesQuery();
|
|
380
|
+
yield* streamUnsafeQuery(query, params);
|
|
381
|
+
}
|
|
382
|
+
export async function* findActif() {
|
|
383
|
+
const { query, params } = buildFindActifQuery();
|
|
384
|
+
yield* streamUnsafeQuery(query, params);
|
|
385
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function toCRDate(dateISO: string, startTime?: string | null): string;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export function toCRDate(dateISO, startTime) {
|
|
2
|
+
const yyyymmdd = dateISO.replace(/-/g, ""); // "20250716"
|
|
3
|
+
let hh = "00", mm = "00", ss = "00", SSS = "000";
|
|
4
|
+
if (startTime) {
|
|
5
|
+
// accepte "HH:MM:SS", "HH:MM:SS.mmm", "HH:MM:SS.mmm+02:00"
|
|
6
|
+
const m = startTime.match(/(\d{2}):(\d{2}):(\d{2})(?:\.(\d{3}))?/);
|
|
7
|
+
if (m) {
|
|
8
|
+
hh = m[1];
|
|
9
|
+
mm = m[2];
|
|
10
|
+
ss = m[3];
|
|
11
|
+
SSS = m[4] || "000";
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return `${yyyymmdd}${hh}${mm}${ss}${SSS}`;
|
|
15
|
+
}
|