@tricoteuses/senat 1.3.4 → 1.4.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.
- package/README.md +1 -3
- package/lib/config.js +4 -6
- package/lib/databases.js +34 -75
- package/lib/datasets.js +20 -28
- package/lib/index.d.ts +0 -3
- package/lib/index.js +1 -43
- package/lib/loaders.js +56 -74
- package/lib/model/ameli.d.ts +2 -2
- package/lib/model/ameli.js +22 -17
- 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.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.d.ts +0 -5
- package/lib/types/ameli.js +1 -16
- package/lib/types/debats.d.ts +0 -2
- package/lib/types/debats.js +1 -5
- package/lib/types/dosleg.d.ts +0 -28
- package/lib/types/dosleg.js +1 -154
- 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 +2 -2
package/lib/model/dosleg.js
CHANGED
|
@@ -1,32 +1,27 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
exports.findSenatRapportUrls = findSenatRapportUrls;
|
|
6
|
-
const kysely_1 = require("kysely");
|
|
7
|
-
const postgres_1 = require("kysely/helpers/postgres");
|
|
8
|
-
const databases_1 = require("../databases");
|
|
9
|
-
const util_1 = require("./util");
|
|
1
|
+
import { sql } from "kysely";
|
|
2
|
+
import { jsonArrayFrom } from "kysely/helpers/postgres";
|
|
3
|
+
import { dbDosleg } from "../databases";
|
|
4
|
+
import { concat, removeSubstring, rtrim, toDateString } from "./util";
|
|
10
5
|
function orderOrdreOrigineTexte(expr) {
|
|
11
|
-
return
|
|
6
|
+
return sql `array_position(array['0','2','1'], ${expr})`;
|
|
12
7
|
}
|
|
13
8
|
function datesSeances(lectureAssembleeId) {
|
|
14
|
-
return
|
|
9
|
+
return jsonArrayFrom(dbDosleg
|
|
15
10
|
.selectFrom("date_seance")
|
|
16
11
|
.where("date_seance.lecidt", "=", lectureAssembleeId)
|
|
17
12
|
.select(({ ref }) => [
|
|
18
|
-
|
|
13
|
+
toDateString(ref("date_seance.date_s")).as("date"),
|
|
19
14
|
]));
|
|
20
15
|
}
|
|
21
16
|
function organismesRapport(rapportId) {
|
|
22
|
-
return
|
|
17
|
+
return jsonArrayFrom(dbDosleg
|
|
23
18
|
.selectFrom("org")
|
|
24
19
|
.leftJoin("raporg", "raporg.orgcod", "org.orgcod")
|
|
25
20
|
.where("raporg.rapcod", "=", rapportId)
|
|
26
21
|
.select(["org.orgnom as libelle"]));
|
|
27
22
|
}
|
|
28
23
|
function auteursRapport(rapportId) {
|
|
29
|
-
return
|
|
24
|
+
return jsonArrayFrom(dbDosleg
|
|
30
25
|
.selectFrom("auteur")
|
|
31
26
|
.leftJoin("ecr", "ecr.autcod", "auteur.autcod")
|
|
32
27
|
.where("ecr.rapcod", "=", rapportId)
|
|
@@ -38,28 +33,28 @@ function auteursRapport(rapportId) {
|
|
|
38
33
|
.orderBy("ecr.ecrnumtri", "asc"));
|
|
39
34
|
}
|
|
40
35
|
function rapports(lectureAssembleeId) {
|
|
41
|
-
return
|
|
36
|
+
return jsonArrayFrom(dbDosleg
|
|
42
37
|
.selectFrom("rap")
|
|
43
38
|
.leftJoin("lecassrap", "lecassrap.rapcod", "rap.rapcod")
|
|
44
39
|
.leftJoin("denrap", "denrap.coddenrap", "rap.coddenrap")
|
|
45
40
|
.where("lecassrap.lecassidt", "=", lectureAssembleeId)
|
|
46
41
|
.select(({ eb, ref, val }) => [
|
|
47
42
|
"rap.rapnum as numero",
|
|
48
|
-
|
|
43
|
+
rtrim(ref("denrap.libdenrap")).as("type_rapport"),
|
|
49
44
|
eb
|
|
50
45
|
.case()
|
|
51
46
|
.when("rap.typurl", "=", "I")
|
|
52
|
-
.then(
|
|
53
|
-
.else(
|
|
47
|
+
.then(concat(val("https://www.senat.fr/rap/"), rtrim(ref("rap.rapurl"))))
|
|
48
|
+
.else(rtrim(ref("rap.rapurl")))
|
|
54
49
|
.end()
|
|
55
50
|
.as("url"),
|
|
56
|
-
|
|
51
|
+
toDateString(ref("rap.date_depot")).as("date_depot"),
|
|
57
52
|
auteursRapport(ref("rap.rapcod")).as("auteurs"),
|
|
58
53
|
organismesRapport(ref("rap.rapcod")).as("organismes"),
|
|
59
54
|
]));
|
|
60
55
|
}
|
|
61
56
|
function auteursTexte(texteId) {
|
|
62
|
-
return
|
|
57
|
+
return jsonArrayFrom(dbDosleg
|
|
63
58
|
.selectFrom("auteur")
|
|
64
59
|
.leftJoin("ecr", "ecr.autcod", "auteur.autcod")
|
|
65
60
|
.where("ecr.texcod", "=", texteId)
|
|
@@ -71,7 +66,7 @@ function auteursTexte(texteId) {
|
|
|
71
66
|
.orderBy("ecr.ecrnumtri", "asc"));
|
|
72
67
|
}
|
|
73
68
|
function textes(lectureAssembleeId) {
|
|
74
|
-
return
|
|
69
|
+
return jsonArrayFrom(dbDosleg
|
|
75
70
|
.selectFrom("texte")
|
|
76
71
|
.leftJoin("oritxt", "oritxt.oritxtcod", "texte.oritxtcod")
|
|
77
72
|
.leftJoin("typtxt", "typtxt.typtxtcod", "texte.typtxtcod")
|
|
@@ -81,33 +76,33 @@ function textes(lectureAssembleeId) {
|
|
|
81
76
|
eb
|
|
82
77
|
.case()
|
|
83
78
|
.when("texte.typurl", "=", "I")
|
|
84
|
-
.then(
|
|
79
|
+
.then(removeSubstring(ref("texte.texurl"), val(".html")))
|
|
85
80
|
.else(null)
|
|
86
81
|
.end()
|
|
87
82
|
.as("id"),
|
|
88
83
|
eb
|
|
89
84
|
.case()
|
|
90
85
|
.when("texte.typurl", "=", "I")
|
|
91
|
-
.then(
|
|
92
|
-
.else(
|
|
86
|
+
.then(concat(val("https://www.senat.fr/leg/"), rtrim(ref("texte.texurl"))))
|
|
87
|
+
.else(rtrim(ref("texte.texurl")))
|
|
93
88
|
.end()
|
|
94
89
|
.as("url"),
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
90
|
+
rtrim(ref("oritxt.oritxtlib")).as("origine_texte"),
|
|
91
|
+
rtrim(ref("typtxt.typtxtlib")).as("type_texte"),
|
|
92
|
+
toDateString(ref("texte.txtoritxtdat")).as("date"),
|
|
98
93
|
"sesann as session",
|
|
99
94
|
auteursTexte(ref("texte.texcod")).as("auteurs"),
|
|
100
95
|
])
|
|
101
96
|
.orderBy(({ ref }) => orderOrdreOrigineTexte(ref("oritxt.oriordre"))));
|
|
102
97
|
}
|
|
103
98
|
function lecturesAssemblee(lectureId) {
|
|
104
|
-
return
|
|
99
|
+
return jsonArrayFrom(dbDosleg
|
|
105
100
|
.selectFrom("lecass")
|
|
106
101
|
.where("lecass.lecidt", "=", lectureId)
|
|
107
102
|
.leftJoin("ass", "ass.codass", "lecass.codass")
|
|
108
103
|
.leftJoin("org", "org.orgcod", "lecass.orgcod")
|
|
109
104
|
.select(({ ref }) => [
|
|
110
|
-
|
|
105
|
+
rtrim(ref("ass.libass")).as("assemblee"),
|
|
111
106
|
"org.orgnom as libelle_organisme",
|
|
112
107
|
"org.orgcod as code_organisme",
|
|
113
108
|
"lecass.ordreass as ordre_lecture_assemblee",
|
|
@@ -118,71 +113,71 @@ function lecturesAssemblee(lectureId) {
|
|
|
118
113
|
.orderBy("lecass.ordreass", "asc"));
|
|
119
114
|
}
|
|
120
115
|
function lectures(loiId) {
|
|
121
|
-
return
|
|
116
|
+
return jsonArrayFrom(dbDosleg
|
|
122
117
|
.selectFrom("lecture")
|
|
123
118
|
.leftJoin("typlec", "typlec.typleccod", "lecture.typleccod")
|
|
124
119
|
.where("lecture.loicod", "=", loiId)
|
|
125
120
|
.select(({ ref }) => [
|
|
126
|
-
|
|
127
|
-
|
|
121
|
+
rtrim(ref("typlec.typleclib")).as("type_lecture"),
|
|
122
|
+
rtrim(ref("lecture.leccom")).as("libelle"),
|
|
128
123
|
"typlec.typlecord as ordre_lecture",
|
|
129
124
|
lecturesAssemblee(ref("lecture.lecidt")).as("lectures_assemblee"),
|
|
130
125
|
])
|
|
131
126
|
.orderBy("typlec.typlecord", "asc"));
|
|
132
127
|
}
|
|
133
128
|
function themes(loiId) {
|
|
134
|
-
return
|
|
129
|
+
return jsonArrayFrom(dbDosleg
|
|
135
130
|
.selectFrom("the")
|
|
136
131
|
.leftJoin("loithe", "loithe.thecle", "the.thecle")
|
|
137
132
|
.where("loithe.loicod", "=", loiId)
|
|
138
133
|
.select(["the.thelib as libelle"]));
|
|
139
134
|
}
|
|
140
|
-
const findAllQuery =
|
|
135
|
+
const findAllQuery = dbDosleg
|
|
141
136
|
.selectFrom("loi")
|
|
142
137
|
.leftJoin("typloi", "typloi.typloicod", "loi.typloicod")
|
|
143
138
|
.leftJoin("etaloi", "etaloi.etaloicod", "loi.etaloicod")
|
|
144
139
|
.select(({ eb, ref, val }) => [
|
|
145
140
|
"loi.signet as signet",
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
141
|
+
concat(val("https://www.senat.fr/dossier-legislatif/"), ref("loi.signet"), val(".html")).as("url"),
|
|
142
|
+
concat(rtrim(ref("typloi.typloiden")), val(" "), rtrim(ref("loi.loitit"))).as("titre"),
|
|
143
|
+
rtrim(ref("loi.loient")).as("titre_court"),
|
|
144
|
+
rtrim(ref("typloi.groupe")).as("code_nature_dossier"),
|
|
145
|
+
rtrim(ref("typloi.typloilib")).as("libelle_type_dossier"),
|
|
146
|
+
rtrim(ref("etaloi.etaloilib")).as("etat_dossier"),
|
|
152
147
|
"loi.url_an as url_dossier_assemblee_nationale",
|
|
153
|
-
|
|
148
|
+
toDateString(ref("loi.date_decision")).as("date_decision_CoC"),
|
|
154
149
|
"loi.num_decision as num_decision_CoC",
|
|
155
150
|
"loi.deccocurl as url_decision_CoC",
|
|
156
|
-
|
|
151
|
+
toDateString(ref("loi.saisine_date")).as("date_saisine_CoC"),
|
|
157
152
|
"loi.saisine_par as condition_saisine_CoC",
|
|
158
|
-
|
|
153
|
+
toDateString(ref("loi.date_loi")).as("date_promulgation"),
|
|
159
154
|
"loi.numero as numero_loi",
|
|
160
155
|
eb
|
|
161
156
|
.case()
|
|
162
157
|
.when("loi.loititjo", "is not", null)
|
|
163
|
-
.then(
|
|
158
|
+
.then(concat(rtrim(ref("typloi.typloiden")), val(" "), rtrim(ref("loi.loititjo"))))
|
|
164
159
|
.else("")
|
|
165
160
|
.end()
|
|
166
161
|
.as("titre_JO"),
|
|
167
|
-
|
|
162
|
+
toDateString(ref("loi.loidatjo")).as("date_publication_JO"),
|
|
168
163
|
"loi.loinumjo as numero_JO",
|
|
169
164
|
"loi.url_jo as url_JO",
|
|
170
165
|
lectures(ref("loi.loicod")).as("lectures"),
|
|
171
166
|
themes(ref("loi.loicod")).as("themes"),
|
|
172
167
|
])
|
|
173
168
|
.$narrowType();
|
|
174
|
-
function findAll() {
|
|
169
|
+
export function findAll() {
|
|
175
170
|
return findAllQuery.stream();
|
|
176
171
|
}
|
|
177
|
-
function findSenatTexteUrls(sessions = []) {
|
|
178
|
-
return
|
|
172
|
+
export function findSenatTexteUrls(sessions = []) {
|
|
173
|
+
return dbDosleg
|
|
179
174
|
.selectFrom("texte")
|
|
180
175
|
.where("texurl", "is not", null)
|
|
181
176
|
.where("typurl", "=", "I")
|
|
182
177
|
.$if(sessions.length > 0, (qb) => qb.where("sesann", "in", sessions))
|
|
183
178
|
.select(({ eb, ref }) => [
|
|
184
179
|
"sesann as session",
|
|
185
|
-
|
|
180
|
+
rtrim(ref("texurl")).as("url"),
|
|
186
181
|
eb
|
|
187
182
|
.case()
|
|
188
183
|
.when("oritxtcod", "=", "1")
|
|
@@ -194,13 +189,13 @@ function findSenatTexteUrls(sessions = []) {
|
|
|
194
189
|
.$narrowType()
|
|
195
190
|
.stream();
|
|
196
191
|
}
|
|
197
|
-
function findSenatRapportUrls(sessions = []) {
|
|
198
|
-
return
|
|
192
|
+
export function findSenatRapportUrls(sessions = []) {
|
|
193
|
+
return dbDosleg
|
|
199
194
|
.selectFrom("rap")
|
|
200
195
|
.where("rapurl", "is not", null)
|
|
201
196
|
.where("typurl", "=", "I")
|
|
202
197
|
.$if(sessions.length > 0, (qb) => qb.where("sesann", "in", sessions))
|
|
203
|
-
.select(({ ref }) => [
|
|
198
|
+
.select(({ ref }) => [rtrim(ref("rapurl")).as("url"), "sesann as session"])
|
|
204
199
|
.$narrowType()
|
|
205
200
|
.stream();
|
|
206
201
|
}
|
package/lib/model/index.js
CHANGED
|
@@ -1,13 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "findAllAmendements", { enumerable: true, get: function () { return ameli_1.findAll; } });
|
|
6
|
-
var dosleg_1 = require("./dosleg");
|
|
7
|
-
Object.defineProperty(exports, "findAllLois", { enumerable: true, get: function () { return dosleg_1.findAll; } });
|
|
8
|
-
var questions_1 = require("./questions");
|
|
9
|
-
Object.defineProperty(exports, "findAllQuestions", { enumerable: true, get: function () { return questions_1.findAll; } });
|
|
10
|
-
var sens_1 = require("./sens");
|
|
11
|
-
Object.defineProperty(exports, "findAllSens", { enumerable: true, get: function () { return sens_1.findAll; } });
|
|
12
|
-
Object.defineProperty(exports, "findAllCirconscriptions", { enumerable: true, get: function () { return sens_1.findAllCirconscriptions; } });
|
|
13
|
-
Object.defineProperty(exports, "findAllOrganismes", { enumerable: true, get: function () { return sens_1.findAllOrganismes; } });
|
|
1
|
+
export { findAll as findAllAmendements } from "./ameli";
|
|
2
|
+
export { findAll as findAllLois } from "./dosleg";
|
|
3
|
+
export { findAll as findAllQuestions } from "./questions";
|
|
4
|
+
export { findAll as findAllSens, findAllCirconscriptions, findAllOrganismes, } from "./sens";
|
package/lib/model/questions.js
CHANGED
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const postgres_1 = require("kysely/helpers/postgres");
|
|
5
|
-
const databases_1 = require("../databases");
|
|
6
|
-
const util_1 = require("./util");
|
|
1
|
+
import { jsonArrayFrom } from "kysely/helpers/postgres";
|
|
2
|
+
import { dbQuestions } from "../databases";
|
|
3
|
+
import { expandToRows, rtrim, toDateString } from "./util";
|
|
7
4
|
function reponses(questionId) {
|
|
8
|
-
return
|
|
5
|
+
return jsonArrayFrom(dbQuestions
|
|
9
6
|
.selectFrom("tam_reponses")
|
|
10
7
|
.where("tam_reponses.idque", "=", questionId)
|
|
11
8
|
.select(({ ref }) => [
|
|
12
|
-
|
|
9
|
+
toDateString(ref("tam_reponses.datejorep")).as("date_reponse_JO"),
|
|
13
10
|
"tam_reponses.minreplib as ministere_reponse",
|
|
14
11
|
"tam_reponses.txtrep as texte",
|
|
15
12
|
"tam_reponses.txterrrep as texte_erratum",
|
|
@@ -17,13 +14,13 @@ function reponses(questionId) {
|
|
|
17
14
|
.orderBy("tam_reponses.datejorep asc"));
|
|
18
15
|
}
|
|
19
16
|
function themes(questionId) {
|
|
20
|
-
return
|
|
17
|
+
return jsonArrayFrom(dbQuestions
|
|
21
18
|
.with("question_theme", (db) => db
|
|
22
19
|
.selectFrom("tam_questions")
|
|
23
20
|
.select(({ eb, ref, val }) => [
|
|
24
21
|
"id as question_id",
|
|
25
22
|
eb
|
|
26
|
-
.cast(
|
|
23
|
+
.cast(expandToRows(ref("tam_questions.themes"), val("#(\\d+)")), "smallint")
|
|
27
24
|
.as("theme_id"),
|
|
28
25
|
]))
|
|
29
26
|
.selectFrom("the")
|
|
@@ -32,7 +29,7 @@ function themes(questionId) {
|
|
|
32
29
|
.select("the.thelib as libelle")
|
|
33
30
|
.orderBy("the.thenouidt asc"));
|
|
34
31
|
}
|
|
35
|
-
const findAllQuery =
|
|
32
|
+
const findAllQuery = dbQuestions
|
|
36
33
|
.selectFrom("tam_questions")
|
|
37
34
|
.leftJoin("tam_ministeres", "tam_questions.mindepotid", "tam_ministeres.minid")
|
|
38
35
|
.leftJoin("sortquestion", (join) => join.onRef("tam_questions.sorquecod", "=", (eb) => eb.cast("sortquestion.sorquecod", "bigint")))
|
|
@@ -53,14 +50,14 @@ const findAllQuery = databases_1.dbQuestions
|
|
|
53
50
|
"tam_questions.circonscription as circonscription",
|
|
54
51
|
"tam_questions.groupe as groupe",
|
|
55
52
|
"tam_questions.ratgrp as type_appartenance",
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
53
|
+
toDateString(ref("tam_questions.datejodepot")).as("date_publication_JO"),
|
|
54
|
+
rtrim(ref("tam_questions.mindepotlib")).as("ministere_depot"),
|
|
55
|
+
toDateString(ref("tam_ministeres.datedebut")).as("ministere_depot_date_debut"),
|
|
56
|
+
toDateString(ref("tam_questions.datejotran")).as("date_transmission"),
|
|
60
57
|
"tam_questions.mintranlib as ministere_transmission",
|
|
61
|
-
|
|
58
|
+
toDateString(ref("tam_questions.datejorep1")).as("date_reponse_JO"),
|
|
62
59
|
"tam_questions.minreplib1 as ministere_reponse",
|
|
63
|
-
|
|
60
|
+
toDateString(ref("tam_questions.datecloture")).as("date_cloture"),
|
|
64
61
|
"tam_questions.refquerappelee as reference_question_rappelee",
|
|
65
62
|
//"tam_questions.url as url", // TODO ?
|
|
66
63
|
"tam_questions.txtque as texte",
|
|
@@ -71,6 +68,6 @@ const findAllQuery = databases_1.dbQuestions
|
|
|
71
68
|
themes(ref("tam_questions.id")).as("themes"),
|
|
72
69
|
reponses(ref("tam_questions.id")).as("reponses"),
|
|
73
70
|
]);
|
|
74
|
-
function findAll() {
|
|
71
|
+
export function findAll() {
|
|
75
72
|
return findAllQuery.stream();
|
|
76
73
|
}
|