From 17ceafb74966cceaf4e8d97f2c2845d30fff5527 Mon Sep 17 00:00:00 2001 From: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> Date: Fri, 6 Sep 2024 09:51:59 +0200 Subject: [PATCH] Prisma fixes (#56) --- .../debat/[compteRenduRef]/DebateSummary.tsx | 36 +- .../debat/[compteRenduRef]/DebateTimeline.tsx | 8 +- .../[id]/debat/[compteRenduRef]/page.tsx | 8 +- .../dossier/[id]/debat/layout.tsx | 2 +- app/depute/[slug]/travaux/page.tsx | 2 +- app/deputes/DeputesView.tsx | 1 - prisma/models/acteur.prisma | 56 +-- prisma/models/agenda.prisma | 25 +- prisma/models/amendement.prisma | 9 +- prisma/models/commune.prisma | 52 +-- prisma/models/debat.prisma | 14 +- prisma/models/document.prisma | 45 +-- prisma/models/dossier.prisma | 65 +++- prisma/models/mandat.prisma | 13 +- prisma/models/organe.prisma | 5 +- prisma/models/question.prisma | 5 +- prisma/models/scrutin.prisma | 25 +- prisma/models/texte_loi.prisma | 123 +++--- prisma/swagger/json-schema.json | 355 ++++++++++-------- 19 files changed, 472 insertions(+), 377 deletions(-) diff --git a/app/[legislature]/dossier/[id]/debat/[compteRenduRef]/DebateSummary.tsx b/app/[legislature]/dossier/[id]/debat/[compteRenduRef]/DebateSummary.tsx index 82d3baa..aab2589 100644 --- a/app/[legislature]/dossier/[id]/debat/[compteRenduRef]/DebateSummary.tsx +++ b/app/[legislature]/dossier/[id]/debat/[compteRenduRef]/DebateSummary.tsx @@ -70,7 +70,7 @@ export const DebateSummary = (props: DebateSummaryProps) => { const { sections, wordsCounts } = props; const theme = useTheme(); - const [activeState, setActiveState] = React.useState(null); + const [activeState, setActiveState] = React.useState(null); const clickedRef = React.useRef(false); const unsetClickedRef = React.useRef(null); const findActiveIndex = React.useCallback(() => { @@ -81,14 +81,14 @@ export const DebateSummary = (props: DebateSummaryProps) => { let active; for (let i = sections.length - 1; i >= 0; i -= 1) { - // No hash if we're near the top of the page + // No id if we're near the top of the page if (document.documentElement.scrollTop < 200) { - active = { hash: null }; + active = { id: null }; break; } const item = sections[i]; - const node = document.getElementById(item.hash); + const node = document.getElementById(item.id.toString()); if (process.env.NODE_ENV !== "production") { if (!node) { @@ -109,8 +109,8 @@ export const DebateSummary = (props: DebateSummaryProps) => { } } - if (active && activeState !== active.hash) { - setActiveState(active.hash); + if (active && activeState !== active.id) { + setActiveState(active.id); } }, [activeState, sections]); @@ -118,7 +118,7 @@ export const DebateSummary = (props: DebateSummaryProps) => { useThrottledOnScroll(sections.length > 0 ? findActiveIndex : null, 166); const handleClick = - (hash: string) => (event: React.MouseEvent) => { + (id: number) => (event: React.MouseEvent) => { // Ignore click events meant for native link handling, for example open in new tab if (samePageLinkNavigation(event)) { return; @@ -130,8 +130,8 @@ export const DebateSummary = (props: DebateSummaryProps) => { clickedRef.current = false; }, 1000); - if (activeState !== hash) { - setActiveState(hash); + if (activeState !== id) { + setActiveState(id); } }; @@ -162,10 +162,10 @@ export const DebateSummary = (props: DebateSummaryProps) => { - {sections.map(({ hash, texte }, index) => - activeState === hash || (activeState === null && index === 0) ? ( + {sections.map(({ id, texte }, index) => + activeState === id || (activeState === null && index === 0) ? ( { @@ -185,19 +185,19 @@ export const DebateSummary = (props: DebateSummaryProps) => { variant="caption" fontWeight="light" > - {getDuration(wordsCounts[hash]) ?? "?"} minute - {getDuration(wordsCounts[hash]) === 1 ? "" : "s"} + {getDuration(wordsCounts[id]) ?? "?"} minute + {getDuration(wordsCounts[id]) === 1 ? "" : "s"} ) : ( ) )} diff --git a/app/[legislature]/dossier/[id]/debat/[compteRenduRef]/DebateTimeline.tsx b/app/[legislature]/dossier/[id]/debat/[compteRenduRef]/DebateTimeline.tsx index 71c6b55..93e1720 100644 --- a/app/[legislature]/dossier/[id]/debat/[compteRenduRef]/DebateTimeline.tsx +++ b/app/[legislature]/dossier/[id]/debat/[compteRenduRef]/DebateTimeline.tsx @@ -21,13 +21,13 @@ export const DebateTimeline = ({ paragraphs }: DebateTimelineProps) => ( }, }} > - {paragraphs.map(({ hash, codeGrammaire, acteurRef, roleDebat, texte }) => { + {paragraphs.map(({ id, codeGrammaire, acteurRef, roleDebat, texte }) => { switch (codeGrammaire) { case "PAROLE_GENERIQUE": case "INTERRUPTION_1_10": return ( ( case "DISC_GENERALE_1": case "MOTION_RP_1_1": case "DISC_ARTICLES_2_4": - return ; + return ; case "TITRE_TEXTE_DISCUSSION": return ( @@ -76,7 +76,7 @@ export const DebateTimeline = ({ paragraphs }: DebateTimelineProps) => ( ) : null; // return ( //
{ // console.log(other); // }} diff --git a/app/[legislature]/dossier/[id]/debat/[compteRenduRef]/page.tsx b/app/[legislature]/dossier/[id]/debat/[compteRenduRef]/page.tsx index 9b88497..f880166 100644 --- a/app/[legislature]/dossier/[id]/debat/[compteRenduRef]/page.tsx +++ b/app/[legislature]/dossier/[id]/debat/[compteRenduRef]/page.tsx @@ -67,22 +67,22 @@ export default async function Page({ params }: any) { return

Aucun debat trouvé pour cette seance.

; } - let lastHash = "init"; + let lastId = 'init'; const wordsCounts: Record = paragraphes.reduce( (acc, paragraphe) => { const { codeGrammaire, texte } = paragraphe; if (SUMMARY_CODES.includes(codeGrammaire!)) { - lastHash = paragraphe.hash; - return { ...acc, [lastHash]: 0 }; + lastId = paragraphe.id.toString(); + return { ...acc, [lastId]: 0 }; } if (["PAROLE_GENERIQUE", "INTERRUPTION_1_10"].includes(codeGrammaire!)) { const texteLength = texte ? texte.split(" ").length : 0; return { ...acc, - [lastHash]: acc[lastHash] + texteLength, + [lastId]: acc[lastId] + texteLength, }; } return acc; diff --git a/app/[legislature]/dossier/[id]/debat/layout.tsx b/app/[legislature]/dossier/[id]/debat/layout.tsx index 31f210d..0f4aacd 100644 --- a/app/[legislature]/dossier/[id]/debat/layout.tsx +++ b/app/[legislature]/dossier/[id]/debat/layout.tsx @@ -50,7 +50,7 @@ async function getReunionsUnCached(uid: string) { const pointIndex = 1 + (act.agendaRef.pointsOdj.findIndex( - (pt) => pt.uid === act.odjRefUid + (pt) => pt.uid === act.pointOdjUid ) ?? -1); const { diff --git a/app/depute/[slug]/travaux/page.tsx b/app/depute/[slug]/travaux/page.tsx index a4c69ea..bd140ac 100644 --- a/app/depute/[slug]/travaux/page.tsx +++ b/app/depute/[slug]/travaux/page.tsx @@ -150,7 +150,7 @@ export default async function Amendements({
    {dossiers.map((dossier) => (
  • -

    {key}

    diff --git a/prisma/models/acteur.prisma b/prisma/models/acteur.prisma index 0536b1b..4c46612 100644 --- a/prisma/models/acteur.prisma +++ b/prisma/models/acteur.prisma @@ -1,45 +1,46 @@ /// Personne physique ayant été élue ou nommée dans un organe. model Acteur { /// Identifiant unique. - uid String @id - /// Hachage de l'objet. - hash String @unique + uid String @id + /// Jeu de données de provenance (numéro de législature) + dataset Int /// Prénom. - prenom String + prenom String /// Nom. - nom String + nom String /// Civilité. - civ String + civ String /// Date de naissance. - dateNais DateTime? + dateNais DateTime? /// Date de décès. - dateDeces DateTime? + dateDeces DateTime? /// Ville de naissance. - villeNais String? + villeNais String? /// Département de naissance. - depNais String? + depNais String? /// Pays de naissance. - paysNais String? + paysNais String? /// Profession. - profession String? + profession String? /// Catégorie socio professionelle de l'INSEE. - catSocPro String? + catSocPro String? /// Famille socio professionelle de l'INSEE. - famSocPro String? - slug String + famSocPro String? + slug String /// URL de la déclaration d'intérêt de l'acteur sur le site de la Haute Autorité pour la Transparence dans la Vie Publique. - uriHatvp String? + uriHatvp String? /// Deputé en poste actuellement. - actif Boolean? @default(false) + actif Boolean? @default(false) /// Groupe parlementaire du député. - groupeParlementaireUid String? + groupeParlementaireUid String? /// Mandat principal du député, c'est à dire s'il est actif ou non. - mandatPrincipalUid String? @unique + mandatPrincipalUid String? @unique /// Organe de circonscription - circonscriptionUid String? + circonscriptionUid String? /// Chambre du parlementaire (assemblée ou sénat) - chambre String? - compteTwitter String? + chambre String? + compteTwitter String? + groupeParlementaire Organe? @relation("Acteur_GroupeParlementaire", fields: [groupeParlementaireUid], references: [uid]) mandatPrincipal Mandat? @relation("Acteur_MandatPrincipal", fields: [mandatPrincipalUid], references: [uid]) circonscription Organe? @relation("Acteur_Circonscription", fields: [circonscriptionUid], references: [uid]) @@ -74,6 +75,7 @@ model Acteur { /// Lois signées par cet acteur. loisSignees TexteLoi[] @relation("loisSignees") + @@index([dataset]) @@index([vecteurRecherche], type: Gin) @@index([actif]) @@index([groupeParlementaireUid]) @@ -85,8 +87,8 @@ model Acteur { model AdresseElectronique { /// Identifiant unique. uid String @id - /// Hachage de l'objet - hash String @unique + /// Jeu de données de provenance (numéro de législature) + dataset Int type String typeLibelle String poids String? @@ -96,14 +98,15 @@ model AdresseElectronique { acteurRefUid String acteurRef Acteur @relation(fields: [acteurRefUid], references: [uid], onDelete: Cascade) + @@index([dataset]) @@index([acteurRefUid]) } model AdressePostale { /// Identifiant unique. uid String @id - /// Hachage de l'objet - hash String @unique + /// Jeu de données de provenance (numéro de législature) + dataset Int type String typeLibelle String poids String? @@ -117,5 +120,6 @@ model AdressePostale { acteurRefUid String acteurRef Acteur @relation(fields: [acteurRefUid], references: [uid], onDelete: Cascade) + @@index([dataset]) @@index([acteurRefUid]) } diff --git a/prisma/models/agenda.prisma b/prisma/models/agenda.prisma index a73ee9c..2b0256c 100644 --- a/prisma/models/agenda.prisma +++ b/prisma/models/agenda.prisma @@ -2,8 +2,8 @@ model Agenda { /// Identifiant unique. uid String @id - /// Hachage de l'objet - hash String @unique + /// Jeu de données de provenance (numéro de législature) + dataset Int /// Type de la réunion xsiType String? /// Date et heure du début de la réunion. @@ -70,6 +70,7 @@ model Agenda { amendements Amendement[] debats Debat[] + @@index([dataset]) @@index([vecteurRecherche], type: Gin) @@index([organeDemandeurRefUid]) @@index([organeReunionRefUid]) @@ -79,8 +80,8 @@ model Agenda { model PointOdj { /// Identifiant unique. uid String @id - /// Hachage de l'objet - hash String @unique + /// Jeu de données de provenance (numéro de législature) + dataset Int /// Identifiant unique de la réunion associée. agendaRefUid String? /// Le contenu de ce champ n'est pas défini. @@ -110,14 +111,15 @@ model PointOdj { dossierLegislatif Dossier? @relation(fields: [dossierLegislatifUid], references: [uid]) agendaRef Agenda? @relation(fields: [agendaRefUid], references: [uid], onDelete: Cascade) + @@index([dataset]) @@index([agendaRefUid]) } model ActeurDemandeur { /// Clé primaire. id Int @id @default(autoincrement()) - /// Identifiant unique. - slug String @unique + /// Jeu de données de provenance (numéro de législature) + dataset Int /// Acteur référent. acteurRefUid String /// Agenda référent. @@ -125,6 +127,7 @@ model ActeurDemandeur { acteurRef Acteur @relation(fields: [acteurRefUid], references: [uid], onDelete: Cascade) agendaRef Agenda @relation(fields: [agendaRefUid], references: [uid], onDelete: Cascade) + @@index([dataset]) @@index([acteurRefUid]) @@index([agendaRefUid]) } @@ -132,8 +135,8 @@ model ActeurDemandeur { model ParticipantReunion { /// Clé primaire. id Int @id @default(autoincrement()) - /// Identifiant unique. - slug String @unique + /// Jeu de données de provenance (numéro de législature) + dataset Int /// La valeur est 'absent' ou 'excusé' si la personne n'a pas participé à la réunion, 'présent' sinon. presence String? /// Acteur référent. @@ -143,6 +146,7 @@ model ParticipantReunion { acteurRef Acteur? @relation(fields: [acteurRefUid], references: [uid]) agendaRef Agenda @relation(fields: [agendaRefUid], references: [uid], onDelete: Cascade) + @@index([dataset]) @@index([acteurRefUid]) @@index([agendaRefUid]) } @@ -150,8 +154,8 @@ model ParticipantReunion { model PersonneAuditionneeReunion { /// Clé primaire. id Int @id @default(autoincrement()) - /// Hachage de l'objet - hash String @unique + /// Jeu de données de provenance (numéro de législature) + dataset Int /// Identifiant unique de l'acteur ou bien, dans le cas ou il ne s'agit pas d'un acteur, un identifiant unique de personne externe débutant par PE qui est utilisé uniquement dans ce contexte. uid String /// Acteur référent. @@ -171,6 +175,7 @@ model PersonneAuditionneeReunion { acteurRef Acteur? @relation(fields: [acteurRefUid], references: [uid], onDelete: Cascade) agendaRef Agenda @relation(fields: [agendaRefUid], references: [uid], onDelete: Cascade) + @@index([dataset]) @@index([acteurRefUid]) @@index([agendaRefUid]) } diff --git a/prisma/models/amendement.prisma b/prisma/models/amendement.prisma index 25cb8a6..463730c 100644 --- a/prisma/models/amendement.prisma +++ b/prisma/models/amendement.prisma @@ -1,8 +1,8 @@ model Amendement { /// Identifiant unique. uid String @id - /// Hachage de l'objet - hash String @unique + /// Jeu de données de provenance (numéro de législature) + dataset Int chronotag String? /// Numéro de la législature sous laquelle a été créé l'amendement. Nombre entier. legislature String? @@ -127,6 +127,7 @@ model Amendement { seanceRef Agenda? @relation(fields: [seanceRefUid], references: [uid]) coSignataires CoSignataireAmendement[] + @@index([dataset]) @@index([vecteurRecherche], type: Gin) @@index([acteurRefUid]) @@index([seanceRefUid]) @@ -142,7 +143,8 @@ model Amendement { model CoSignataireAmendement { /// Identifiant unique. id Int @id @default(autoincrement()) - slug String @unique + /// Jeu de données de provenance (numéro de législature) + dataset Int /// Identifiants uniques (uid) des acteurs. acteurRefUid String? amendementRefUid String? @@ -150,6 +152,7 @@ model CoSignataireAmendement { acteurRef Acteur? @relation(fields: [acteurRefUid], references: [uid]) amendementRef Amendement? @relation(fields: [amendementRefUid], references: [uid], onDelete: Restrict, onUpdate: Restrict) + @@index([dataset]) @@index([acteurRefUid]) @@index([amendementRefUid]) } diff --git a/prisma/models/commune.prisma b/prisma/models/commune.prisma index 97d2192..b0d8d94 100644 --- a/prisma/models/commune.prisma +++ b/prisma/models/commune.prisma @@ -1,30 +1,30 @@ /// L'ensemble des communes de France et leur circonscription associée model Commune { - /// Identifiant unique. - id Int @id @default(autoincrement()) - /// Hachage de l'objet - hash String @unique - /// Nom de la commune - libelle String - /// Numéro de la région où se trouve la commune - codeRegion Int - /// Nom de la région où se trouve la commune - libelleRegion String - /// Numéro du département où se trouve la commune - codeDepartement Int - /// Nom du département où se trouve la commune - libelleDepartement String - /// Code INSEE - codeInsee String? - /// Code postal - codePostal String - /// Vrai si la commune est sur plusieurs circonscriptions - circoPartielle Boolean @default(false) - /// Numéro de la cirsconscription - numCirco Int? - /// Identifiant unique de la cirsconscription liée à la commune - circonscriptionUid String? - circonscription Organe? @relation(fields: [circonscriptionUid], references: [uid]) + /// Identifiant unique. + id Int @id @default(autoincrement()) + /// Hachage de l'objet + hash String @unique + /// Nom de la commune + libelle String + /// Numéro de la région où se trouve la commune + codeRegion Int + /// Nom de la région où se trouve la commune + libelleRegion String + /// Numéro du département où se trouve la commune + codeDepartement Int + /// Nom du département où se trouve la commune + libelleDepartement String + /// Code INSEE + codeInsee String? + /// Code postal + codePostal String + /// Vrai si la commune est sur plusieurs circonscriptions + circoPartielle Boolean @default(false) + /// Numéro de la cirsconscription + numCirco Int? + /// Identifiant unique de la cirsconscription liée à la commune + circonscriptionUid String? + circonscription Organe? @relation(fields: [circonscriptionUid], references: [uid]) - @@index([circonscriptionUid]) + @@index([circonscriptionUid]) } diff --git a/prisma/models/debat.prisma b/prisma/models/debat.prisma index 49a028a..62c8486 100644 --- a/prisma/models/debat.prisma +++ b/prisma/models/debat.prisma @@ -2,8 +2,8 @@ model Debat { /// Identifiant unique. uid String @id - /// Hachage de l'obejt. - hash String @unique + /// Jeu de données de provenance (numéro de législature) + dataset Int typeAssemblee String legislature String reunionRefUid String? @@ -27,12 +27,15 @@ model Debat { paragraphes Paragraphe[] sommaires SommaireDebat[] + @@index([dataset]) @@index([reunionRefUid]) } /// Sommaire d'une séance de débat. model SommaireDebat { id String @id + /// Jeu de données de provenance (numéro de législature) + dataset Int debatRefUid String valeurPtsOdj String typeDebat String @@ -42,12 +45,14 @@ model SommaireDebat { presidentSeance String debatRef Debat @relation(fields: [debatRefUid], references: [uid]) + @@index([dataset]) @@index([debatRefUid]) } model Paragraphe { - /// Hachage de l'objet. - hash String @unique + id Int @id @default(autoincrement()) + /// Jeu de données de provenance (numéro de législature) + dataset Int debatRefUid String adt String? art String? @@ -80,6 +85,7 @@ model Paragraphe { mandatRef Mandat? @relation(fields: [mandatRefUid], references: [uid]) debatRef Debat @relation(fields: [debatRefUid], references: [uid]) + @@index([dataset]) @@index([vecteurRecherche], type: Gin) @@index([debatRefUid]) @@index([acteurRefUid]) diff --git a/prisma/models/document.prisma b/prisma/models/document.prisma index 967e691..2f61800 100644 --- a/prisma/models/document.prisma +++ b/prisma/models/document.prisma @@ -1,29 +1,6 @@ -enum ClasseCode { - /// Projet de loi (initiative du gouvernement) - PRJLOI - /// Proposition de loi (initiative du parlement) - PIONLOI - /// Proposition de Resolution - PIONRES - // Avis - AVIS - /// Motion (motion de censure article 49-2 de la consitution) - MOTION - /// Allocution - ALLOCUTION - /// Declaration du gouvernement (souvent utilisation de l'article 49-3) - DECLARATION - /// Rapport d'une commission - RAPPORT - /// Rapport d'information - RAPINF - /// Resolution (positionnement pris par l'assemblée sans impact legislatif) - RES -} - model Document { - /// Hachage de l'objet - hash String @unique + /// Jeu de données de provenance (numéro de législature) + dataset Int /// Titre du document. Dans le cas d'un projet ou d'une proposition de loi, tel qu'il apparait au début du texte de loi. titrePrincipal String /// Version abrégée du titre du document. Dans le cas d'un projet ou d'une proposition de loi il peut être ambigu. @@ -31,7 +8,7 @@ model Document { /// Identifiant unique du document. uid String @id /// Code unique pour traitement automatisé. - classeCode ClasseCode + classeCode String /// Signification du code. classeLibelle String /// True si le document est un projet ou une proposition de loi. @@ -99,6 +76,7 @@ model Document { etudesPlf EtudePlf[] textesAssocies TexteAssocie[] + @@index([dataset]) @@index([vecteurRecherche], type: Gin) @@index([auteurPrincipalUid]) @@index([dossierRefUid]) @@ -108,8 +86,8 @@ model Document { model Auteur { /// Identifiant unique. id Int @id @default(autoincrement()) - /// Hachage de l'objet - hash String @unique + /// Jeu de données de provenance (numéro de législature) + dataset Int /// Identifiant unique (uid) de l'organe correspondant au groupe politique. organeRefUid String? /// Identifiant unique (uid) de l'acteur. @@ -123,6 +101,7 @@ model Auteur { documentRef Document? @relation(fields: [documentRefUid], references: [uid]) organeRef Organe? @relation(fields: [organeRefUid], references: [uid]) + @@index([dataset]) @@index([organeRefUid]) @@index([acteurRefUid]) @@index([documentRefUid]) @@ -131,8 +110,8 @@ model Auteur { model CoSignataireDocument { /// Identifiant unique. id Int @id @default(autoincrement()) - /// Hachage de l'objet - hash String @unique + /// Jeu de données de provenance (numéro de législature) + dataset Int /// Identifiant unique (uid) de l'acteur. acteurRefUid String? /// Date de la co-signature. @@ -152,6 +131,7 @@ model CoSignataireDocument { documentRef Document? @relation(fields: [documentRefUid], references: [uid]) organeRef Organe? @relation(fields: [organeRefUid], references: [uid]) + @@index([dataset]) @@index([organeRefUid]) @@index([acteurRefUid]) @@index([documentRefUid]) @@ -160,8 +140,8 @@ model CoSignataireDocument { model AmendementCommission { /// Identifiant unique. id Int @id @default(autoincrement()) - /// Hachage de l'objet - hash String @unique + /// Jeu de données de provenance (numéro de législature) + dataset Int /// Identifiant unique (uid) de l'organe correspondant au groupe politique. organeRefUid String? /// Toujours égal à true. @@ -171,6 +151,7 @@ model AmendementCommission { documentRef Document? @relation(fields: [documentRefUid], references: [uid]) organeRef Organe? @relation(fields: [organeRefUid], references: [uid]) + @@index([dataset]) @@index([organeRefUid]) @@index([documentRefUid]) } diff --git a/prisma/models/dossier.prisma b/prisma/models/dossier.prisma index 4a0040c..72760cd 100644 --- a/prisma/models/dossier.prisma +++ b/prisma/models/dossier.prisma @@ -2,8 +2,8 @@ model Dossier { /// Identifiant unique. uid String @id - /// Hachage de l'objet - hash String @unique + /// Jeu de données de provenance (numéro de législature) + dataset Int /// Type du dossier xsiType String? /// Numéro de la législature. @@ -45,6 +45,11 @@ model Dossier { documents Document[] pointsOdj PointOdj[] + /// Type de dossier législatif + /// (e.g. Projet de ratification, Motion de censure, Proposition de loi). + type String @default("") + + @@index([dataset]) @@index([vecteurRecherche], type: Gin) @@index([organeRefUid]) @@index([dossierAbsorbantRefUid]) @@ -53,8 +58,10 @@ model Dossier { model ActeLegislatif { /// Identifiant unique. uid String @id - /// Hachage de l'objet - hash String @unique + /// Jeu de données de provenance (numéro de législature) + dataset Int + /// Identifiant de l'acte législatif parent. + parentUid String? /// Code de l'acte législatif dont la valeur dépend de sa place dans la hiérarchie. codeActe String /// Nom de l'acte législatif. @@ -128,16 +135,14 @@ model ActeLegislatif { titreTexteEuropeen String? /// Type du texte européen (par exemple: Règlement de la Commission). typeTexteEuropeen String? - /// Identifiant unique de l'ordre du jour de la réunion dans l'agenda. - odjRefUid String? - /// Identifiant unique de la réunion dans l'agenda. + /// Identifiant unique de la réunion dans l'agenda. reunionRefUid String? /// Code unique pour traitement automatisé du statut de l'adoption. famCodeStatutAdoption String? /// Signification du code de statut de l'adoption. libelleStatutAdoption String? /// Identifiant unique (uid) d'un rapport. - texteAdopteRefUid String? @unique + texteAdopteRefUid String? /// Identifiant unique (uid) d'un rapport. texteAssocieRefUid String? /// Code unique pour traitement automatisé du type de déclaration. @@ -145,6 +150,7 @@ model ActeLegislatif { /// Signification du code du type de déclaration. libelleStatutTypeDeclaration String? dossierRefUid String? + /// Identifiant unique de l'ordre du jour de la réunion dans l'agenda. pointOdjUid String? agendaRef Agenda? @relation(fields: [reunionRefUid], references: [uid]) auteurMotionRef Acteur? @relation("ActeLegislatif_auteurMotion", fields: [auteurMotionRefUid], references: [uid]) @@ -158,6 +164,7 @@ model ActeLegislatif { textesAssocies TexteAssocie[] voteRefs VoteActeLegislatif[] + @@index([dataset]) @@index([reunionRefUid]) @@index([auteurMotionRefUid]) @@index([dossierRefUid]) @@ -167,7 +174,9 @@ model ActeLegislatif { /// Acteur à l'initiative d'un dossier. model InitiateurDossier { /// Identifiant unique. - slug String @id + id Int @id @default(autoincrement()) + /// Jeu de données de provenance (numéro de législature) + dataset Int /// Dossier référent. dossierRefUid String? /// Acteur référent. @@ -178,6 +187,7 @@ model InitiateurDossier { dossierRef Dossier? @relation(fields: [dossierRefUid], references: [uid]) mandatRef Mandat? @relation(fields: [mandatRefUid], references: [uid]) + @@index([dataset]) @@index([dossierRefUid]) @@index([acteurRefUid]) @@index([mandatRefUid]) @@ -186,21 +196,26 @@ model InitiateurDossier { /// Acteur auteur de la motion de censure ou de la motion référendaire. model AuteurMotion { /// Identifiant unique. - slug String @id + id Int @id @default(autoincrement()) + /// Jeu de données de provenance (numéro de législature) + dataset Int /// Identifiant unique (uid) de l'acteur auteur de la motion. auteurMotionRefUid String? acteLegislatifRefUid String? acteLegislatifRef ActeLegislatif? @relation(fields: [acteLegislatifRefUid], references: [uid]) auteurMotionRef Acteur? @relation(fields: [auteurMotionRefUid], references: [uid]) + @@index([dataset]) @@index([acteLegislatifRefUid]) @@index([auteurMotionRefUid]) } /// Informations relatives à la publication d'une lettre rectificative au journal officiel. model InfoJoRect { - /// Hachage de l'objet - hash String @id + /// Identifiant unique. + id Int @id @default(autoincrement()) + /// Jeu de données de provenance (numéro de législature) + dataset Int /// Date de publication d'une lettre rectificative au journal officiel. dateJo String? /// Numéro du journal officiel. @@ -213,12 +228,15 @@ model InfoJoRect { acteLegislatifRefUid String? acteLegislatifRef ActeLegislatif? @relation(fields: [acteLegislatifRefUid], references: [uid]) + @@index([dataset]) @@index([acteLegislatifRefUid]) } model InitiateurActeLegislatif { /// Identifiant unique. - slug String @id + id Int @id @default(autoincrement()) + /// Jeu de données de provenance (numéro de législature) + dataset Int /// Identifiant unique (uid) de l'acteur. acteurRefUid String? /// Identifiant unique (uid) du mandat. @@ -228,6 +246,7 @@ model InitiateurActeLegislatif { acteurRef Acteur? @relation(fields: [acteurRefUid], references: [uid]) mandatRef Mandat? @relation(fields: [mandatRefUid], references: [uid]) + @@index([dataset]) @@index([acteLegislatifRefUid]) @@index([acteurRefUid]) @@index([mandatRefUid]) @@ -235,7 +254,9 @@ model InitiateurActeLegislatif { model Rapporteur { /// Identifiant unique. - slug String @id + id Int @id @default(autoincrement()) + /// Jeu de données de provenance (numéro de législature) + dataset Int /// Identifiant unique (uid) du rapporteur. acteurRefUid String /// Identifiant unique (uid) de l'étude relative à un projet de loi de finance. @@ -247,6 +268,7 @@ model Rapporteur { acteurRef Acteur? @relation(fields: [acteurRefUid], references: [uid]) etudePlfRef EtudePlf? @relation(fields: [etudePlfRefUid], references: [uid]) + @@index([dataset]) @@index([acteLegislatifRefUid]) @@index([acteurRefUid]) @@index([etudePlfRefUid]) @@ -255,8 +277,8 @@ model Rapporteur { model EtudePlf { /// Identifiant unique. uid String @id - /// Hachage de l'objet - hash String @unique + /// Jeu de données de provenance (numéro de législature) + dataset Int /// Nom de la mission de l'état à laquelle se rapporte l'étude. libelleCourt String? /// Des missions secondaires (ou partie de mission) peuvent subsdiviser une mission principale. Par exemple la mission principale Action extérieure de l'État peut contenir une partie de mission Tourisme qui dispose de son propre budget. @@ -276,6 +298,7 @@ model EtudePlf { organeRef Organe? @relation(fields: [organeRefUid], references: [uid]) rapporteurs Rapporteur[] + @@index([dataset]) @@index([organeRefUid]) @@index([documentUid]) @@index([dossierRefUid]) @@ -284,19 +307,24 @@ model EtudePlf { model VoteActeLegislatif { /// Identifiant unique. - slug String @id + id Int @id @default(autoincrement()) + /// Jeu de données de provenance (numéro de législature) + dataset Int voteRefUid String? acteLegislatifRefUid String? acteLegislatifRef ActeLegislatif? @relation(fields: [acteLegislatifRefUid], references: [uid]) voteRef Scrutin? @relation(fields: [voteRefUid], references: [uid]) + @@index([dataset]) @@index([acteLegislatifRefUid]) @@index([voteRefUid]) } model TexteAssocie { /// Identifiant unique. - slug String @id + id Int @id @default(autoincrement()) + /// Jeu de données de provenance (numéro de législature) + dataset Int /// Identifiant unique du texte adopté. texteAssocieRefUid String? /// BTA pour Bibard du Texte Adopté ou TAP pour Texte Adopté Provisoire. @@ -305,6 +333,7 @@ model TexteAssocie { acteLegislatifRef ActeLegislatif? @relation(fields: [acteLegislatifRefUid], references: [uid]) texteAssocieRef Document? @relation(fields: [texteAssocieRefUid], references: [uid], onDelete: Restrict, onUpdate: Restrict) + @@index([dataset]) @@index([acteLegislatifRefUid]) @@index([texteAssocieRefUid]) } diff --git a/prisma/models/mandat.prisma b/prisma/models/mandat.prisma index 7062319..d45ed5f 100644 --- a/prisma/models/mandat.prisma +++ b/prisma/models/mandat.prisma @@ -1,8 +1,8 @@ /// Une personne physique peut être mandataire d'un mandat représentatif ou bien d'un mandat dit simple, comme par exemple être membre d'une commission. Un `mandat représentatif `__ est \"une forme de mandat politique qui possède la caractéristique d'être général, libre et non révocable\". model Mandat { uid String @id - /// Hachage de l'objet - hash String @unique + /// Jeu de données de provenance (numéro de législature) + dataset Int /// Identifiant de l'acteur qui détient le mandat acteurRefUid String? /// Identifiant de l'organe référente @@ -50,6 +50,7 @@ model Mandat { suppleantRef Suppleant? votes Vote[] + @@index([dataset]) @@index([vecteurRecherche], type: Gin) @@index([acteurRefUid]) @@index([organeRefUid]) @@ -57,8 +58,8 @@ model Mandat { model Collaborateur { id Int @id @default(autoincrement()) - /// Hachage de l'objet - hash String @unique + /// Jeu de données de provenance (numéro de législature) + dataset Int qualite String nom String prenom String @@ -66,12 +67,15 @@ model Collaborateur { vecteurRecherche Unsupported("tsvector")? @default(dbgenerated("to_tsvector('french'::regconfig, ((immutable_unaccent((COALESCE(nom, ''::text))::character varying) || ' '::text) || immutable_unaccent((COALESCE(prenom, ''::text))::character varying)))")) mandatRef Mandat @relation(fields: [mandatRefUid], references: [uid], onDelete: Restrict, onUpdate: Restrict) + @@index([dataset]) @@index([vecteurRecherche], type: Gin) @@index([mandatRefUid]) } model Suppleant { id Int @id @default(autoincrement()) + /// Jeu de données de provenance (numéro de législature) + dataset Int dateDebut DateTime dateFin DateTime? acteurRefUid String @@ -79,6 +83,7 @@ model Suppleant { acteurRef Acteur @relation(fields: [acteurRefUid], references: [uid], onDelete: Cascade) mandatRef Mandat @relation(fields: [mandatRefUid], references: [uid], onDelete: Restrict, onUpdate: Restrict) + @@index([dataset]) @@index([acteurRefUid]) @@index([mandatRefUid]) } diff --git a/prisma/models/organe.prisma b/prisma/models/organe.prisma index a5e5ef0..29e4699 100644 --- a/prisma/models/organe.prisma +++ b/prisma/models/organe.prisma @@ -2,8 +2,8 @@ model Organe { /// Identifiant unique. uid String @id - /// Hachage de l'objet - hash String @unique + /// Jeu de données de provenance (numéro de législature) + dataset Int codeType String libelle String libelleEdition String? @@ -48,6 +48,7 @@ model Organe { communes Commune[] textesLoi TexteLoi[] + @@index([dataset]) @@index([vecteurRecherche], type: Gin) @@index([organeParentRefUid]) } diff --git a/prisma/models/question.prisma b/prisma/models/question.prisma index 4b740ea..5fe62cc 100644 --- a/prisma/models/question.prisma +++ b/prisma/models/question.prisma @@ -2,8 +2,8 @@ model Question { /// Identifiant unique. uid String @id - /// Hachage de l'objet - hash String @unique + /// Jeu de données de provenance (numéro de législature) + dataset Int legislature String numero String regime String @@ -36,6 +36,7 @@ model Question { mandatRef Mandat @relation(fields: [mandatRefUid], references: [uid]) minIntRef Organe? @relation("Question_MinInt", fields: [minIntRefUid], references: [uid]) + @@index([dataset]) @@index([vecteurRecherche], type: Gin) @@index([acteurRefUid]) @@index([groupeRefUid]) diff --git a/prisma/models/scrutin.prisma b/prisma/models/scrutin.prisma index 1708796..5b7db37 100644 --- a/prisma/models/scrutin.prisma +++ b/prisma/models/scrutin.prisma @@ -2,8 +2,8 @@ model Scrutin { /// Identifiant unique. uid String @id - /// Hachage de l'objet - hash String @unique + /// Jeu de données de provenance (numéro de législature) + dataset Int /// Date à laquelle le vote a eu lieu. dateScrutin DateTime? /// L'acteur ou l'organe qui demande le vote. @@ -63,6 +63,7 @@ model Scrutin { votes Vote[] votesActesLegislatifs VoteActeLegislatif[] + @@index([dataset]) @@index([organeRefUid]) @@index([seanceRefUid]) @@index([acteLegislatifsRefUid]) @@ -71,6 +72,8 @@ model Scrutin { model GroupeVotant { /// Identifiant unique. id Int @id @default(autoincrement()) + /// Jeu de données de provenance (numéro de législature) + dataset Int /// Hachage de l'objet hash String @unique /// Le nombre total de membres du groupe politique et non pas le nombre de membres présents au moment du vote. @@ -95,6 +98,7 @@ model GroupeVotant { scrutinRef Scrutin? @relation(fields: [scrutinRefUid], references: [uid]) votes Vote[] + @@index([dataset]) @@index([organeRefUid]) @@index([scrutinRefUid]) } @@ -108,9 +112,9 @@ enum PositionVote { model Vote { /// Identifiant unique. - id Int @id @default(autoincrement()) - /// Hachage de l'objet - hash String @unique + id Int @id @default(autoincrement()) + /// Jeu de données de provenance (numéro de législature) + dataset Int /// Identifiant unique (uid) de l'acteur. acteurRefUid String positionVote PositionVote? @@ -130,6 +134,7 @@ model Vote { mandatRef Mandat? @relation(fields: [mandatRefUid], references: [uid]) scrutinRef Scrutin? @relation(fields: [scrutinRefUid], references: [uid]) + @@index([dataset]) @@index([acteurRefUid]) @@index([groupeVotantRefId]) @@index([mandatRefUid]) @@ -139,14 +144,15 @@ model Vote { model MiseAuPoint { /// Identifiant unique. id Int @id @default(autoincrement()) - /// Hachage de l'objet - hash String @unique + /// Jeu de données de provenance (numéro de législature) + dataset Int acteurRefUid String? position String? scrutinRefUid String? acteurRef Acteur? @relation(fields: [acteurRefUid], references: [uid], onDelete: Cascade) scrutinRef Scrutin? @relation(fields: [scrutinRefUid], references: [uid]) + @@index([dataset]) @@index([acteurRefUid]) @@index([scrutinRefUid]) } @@ -154,14 +160,15 @@ model MiseAuPoint { model Dysfonctionnement { /// Identifiant unique. id Int @id @default(autoincrement()) - /// Hachage de l'objet - hash String @unique + /// Jeu de données de provenance (numéro de législature) + dataset Int acteurRefUid String? position String? scrutinRefUid String? acteurRef Acteur? @relation(fields: [acteurRefUid], references: [uid], onDelete: Cascade) scrutinRef Scrutin? @relation(fields: [scrutinRefUid], references: [uid]) + @@index([dataset]) @@index([acteurRefUid]) @@index([scrutinRefUid]) } diff --git a/prisma/models/texte_loi.prisma b/prisma/models/texte_loi.prisma index c937c95..cb54da9 100644 --- a/prisma/models/texte_loi.prisma +++ b/prisma/models/texte_loi.prisma @@ -1,72 +1,61 @@ /// Texte de loi rédigé par des acteurs. model TexteLoi { - /// Identifiant unique. - uid String @id - /// Hachage de l'objet - hash String @unique - + /// Identifiant unique d'un texte de loi. + uid String @id @unique + /// Jeu de données de provenance (numéro de législature) + dataset Int /// Titre du texte de loi - titre String + titre String /// Chambre du parlementaire (assemblée ou sénat) - chambre String? - + chambre String? /// Numéro de législature. - legislature String - + legislature String /// Identifiant de la commission associée à ce texte. - commissionRefUid String + commissionRefUid String /// `true` si la procédure est accélérée ; `false` sinon. - procedureAcceleree Boolean @default(false) - + procedureAcceleree Boolean @default(false) /// Date de la constitution associée. - dateConstitution DateTime? + dateConstitution DateTime? /// Date de dépôt à l'Assemblée Nationale - dateDepot DateTime? - + dateDepot DateTime? /// Numéro du texte - numero String - + numero String /// Commission chargée du texte de loi. - commission Organe @relation(fields: [commissionRefUid], references: [uid]) - + commission Organe @relation(fields: [commissionRefUid], references: [uid]) /// Texte de loi présenté au nom de... (e.g. nom du Premier ministre) - presenteeAuNomDe Acteur[] @relation("loisPortees") - + presenteeAuNomDe Acteur[] @relation("loisPortees") /// Texte de loi présenté par un ensemble de députés. - presenteePar Acteur[] @relation("loisPresentees") - + presenteePar Acteur[] @relation("loisPresentees") /// Signataires de cette loi. - signataires Acteur[] @relation("loisSignees") - + signataires Acteur[] @relation("loisSignees") /// Sommaire du texte de loi. - sommaire SommaireLoi[] - + sommaire SommaireLoi[] /// Citation de l'exposé des motifs, si elle existe. - exposeMotifsCitation String? - + exposeMotifsCitation String? /// Description des articles de l'exposé des motifs, si elle existe. exposeMotifsDescriptionArticles String? - /// Contenu de l'exposé des motifs comprenant la description des articles. - exposeMotifsContenu String? - + exposeMotifsContenu String? /// Liste des articles du texte de loi. - articles Article[] + articles Article[] + @@index([dataset]) @@index([commissionRefUid]) } /// Sommaire d'un texte de loi. model SommaireLoi { - /// Identifiant unique d'un sommaire. - uid String @id - /// Hachage de l'objet. - hash String @unique + /// Id unique d'un sommaire d'un texte de loi. + id Int @id @default(autoincrement()) + /// Jeu de données de provenance (numéro de législature). + dataset Int + + /// Type de division. division DivisionType /// Numéro de la division. - numeroDivision Int + numeroDivision String /// Ordre de la division dans le document. sequence String @@ -83,6 +72,7 @@ model SommaireLoi { /// Référence du texte de loi associé. texteLoiRef TexteLoi @relation(fields: [texteLoiRefUid], references: [uid]) + @@index([dataset]) @@index([texteLoiRefUid]) } @@ -95,54 +85,67 @@ enum DivisionType { /// Article d'un texte de loi. model Article { - /// Identifiant unique d'un article. - uid String @id + /// Id unique d'un article. + id Int @id @default(autoincrement()) + + /// Jeu de données de provenance (numéro de législature) + dataset Int /// Hachage de l'objet. + /// Utilisé comme référence aux alinéas. hash String @unique + /// Liste des alinéas composant l'article. + alineas Alinea[] + + /// Cardinal de l'article (e.g. er, bis). + cardinal String? + + /// Mention spécifiée pour certains articles. + nouveau Boolean @default(false) + /// Numéro de l'article. numero Int? /// Numéro des articles (dans de rare cas, il y a un groupement d'articles). numeros Int[] - /// Cardinal de l'article (e.g. er, bis). - cardinal String? - /// Section parente (e.g. Chapitre Ier BIS). parent String? - /// Titre de l'article - titre String - - /// Liste des alinéas composant l'article. - alineas Alinea[] + /// Rréférence du texte de loi associé à cet article. + texteLoiRef TexteLoi @relation(fields: [texteLoiRefUid], references: [uid]) /// Identifiant unique de référence du texte de loi associé à cet article. texteLoiRefUid String - /// Rréférence du texte de loi associé à cet article. - texteLoiRef TexteLoi @relation(fields: [texteLoiRefUid], references: [uid]) + /// Titre de l'article + titre String + + @@index([dataset]) @@index([texteLoiRefUid]) } /// Alinéa d'un texte de loi. model Alinea { + /// Id unique d'un alinéa. + id Int @id @default(autoincrement()) + /// Numéro de l'alinéa. - id Int @id + numero Int - /// Hachage de l'objet. - hash String @unique + /// Jeu de données de provenance (numéro de législature) + dataset Int - /// Contenu de l'alinéa. - contenu String + /// Texte de l'alinéa. + texte String - /// Identifiant de référence de l'article parent. - articleRefUid String + /// Identifiant (string) de référence de l'article parent. + articleRefHash String /// Référence de l'article parent. - articleRef Article @relation(fields: [articleRefUid], references: [uid]) + articleRef Article @relation(fields: [articleRefHash], references: [hash]) - @@index([articleRefUid]) + @@index([dataset]) + @@index([articleRefHash]) } diff --git a/prisma/swagger/json-schema.json b/prisma/swagger/json-schema.json index 8693d1f..25f8880 100644 --- a/prisma/swagger/json-schema.json +++ b/prisma/swagger/json-schema.json @@ -8,9 +8,9 @@ "type": "string", "description": "Identifiant unique." }, - "hash": { - "type": "string", - "description": "Hachage de l'objet." + "dataset": { + "type": "integer", + "description": "Jeu de données de provenance (numéro de législature)" }, "prenom": { "type": "string", @@ -305,9 +305,9 @@ "type": "string", "description": "Identifiant unique." }, - "hash": { - "type": "string", - "description": "Hachage de l'objet" + "dataset": { + "type": "integer", + "description": "Jeu de données de provenance (numéro de législature)" }, "type": { "type": "string" @@ -351,9 +351,9 @@ "type": "string", "description": "Identifiant unique." }, - "hash": { - "type": "string", - "description": "Hachage de l'objet" + "dataset": { + "type": "integer", + "description": "Jeu de données de provenance (numéro de législature)" }, "type": { "type": "string" @@ -421,9 +421,9 @@ "type": "string", "description": "Identifiant unique." }, - "hash": { - "type": "string", - "description": "Hachage de l'objet" + "dataset": { + "type": "integer", + "description": "Jeu de données de provenance (numéro de législature)" }, "xsiType": { "type": [ @@ -691,9 +691,9 @@ "type": "string", "description": "Identifiant unique." }, - "hash": { - "type": "string", - "description": "Hachage de l'objet" + "dataset": { + "type": "integer", + "description": "Jeu de données de provenance (numéro de législature)" }, "comiteSecret": { "type": [ @@ -808,9 +808,9 @@ "type": "integer", "description": "Clé primaire." }, - "slug": { - "type": "string", - "description": "Identifiant unique." + "dataset": { + "type": "integer", + "description": "Jeu de données de provenance (numéro de législature)" }, "acteurRef": { "$ref": "#/definitions/Acteur" @@ -827,9 +827,9 @@ "type": "integer", "description": "Clé primaire." }, - "slug": { - "type": "string", - "description": "Identifiant unique." + "dataset": { + "type": "integer", + "description": "Jeu de données de provenance (numéro de législature)" }, "presence": { "type": [ @@ -860,9 +860,9 @@ "type": "integer", "description": "Clé primaire." }, - "hash": { - "type": "string", - "description": "Hachage de l'objet" + "dataset": { + "type": "integer", + "description": "Jeu de données de provenance (numéro de législature)" }, "uid": { "type": "string", @@ -926,9 +926,9 @@ "type": "string", "description": "Identifiant unique." }, - "hash": { - "type": "string", - "description": "Hachage de l'objet" + "dataset": { + "type": "integer", + "description": "Jeu de données de provenance (numéro de législature)" }, "chronotag": { "type": [ @@ -1497,8 +1497,9 @@ "type": "integer", "description": "Identifiant unique." }, - "slug": { - "type": "string" + "dataset": { + "type": "integer", + "description": "Jeu de données de provenance (numéro de législature)" }, "acteurRef": { "anyOf": [ @@ -1595,9 +1596,9 @@ "type": "string", "description": "Identifiant unique." }, - "hash": { - "type": "string", - "description": "Hachage de l'obejt." + "dataset": { + "type": "integer", + "description": "Jeu de données de provenance (numéro de législature)" }, "typeAssemblee": { "type": "string" @@ -1685,6 +1686,10 @@ "id": { "type": "string" }, + "dataset": { + "type": "integer", + "description": "Jeu de données de provenance (numéro de législature)" + }, "valeurPtsOdj": { "type": "string" }, @@ -1717,9 +1722,12 @@ "Paragraphe": { "type": "object", "properties": { - "hash": { - "type": "string", - "description": "Hachage de l'objet." + "id": { + "type": "integer" + }, + "dataset": { + "type": "integer", + "description": "Jeu de données de provenance (numéro de législature)" }, "adt": { "type": [ @@ -1893,9 +1901,9 @@ "Document": { "type": "object", "properties": { - "hash": { - "type": "string", - "description": "Hachage de l'objet" + "dataset": { + "type": "integer", + "description": "Jeu de données de provenance (numéro de législature)" }, "titrePrincipal": { "type": "string", @@ -1911,18 +1919,6 @@ }, "classeCode": { "type": "string", - "enum": [ - "PRJLOI", - "PIONLOI", - "PIONRES", - "AVIS", - "MOTION", - "ALLOCUTION", - "DECLARATION", - "RAPPORT", - "RAPINF", - "RES" - ], "description": "Code unique pour traitement automatisé." }, "classeLibelle": { @@ -2197,9 +2193,9 @@ "type": "integer", "description": "Identifiant unique." }, - "hash": { - "type": "string", - "description": "Hachage de l'objet" + "dataset": { + "type": "integer", + "description": "Jeu de données de provenance (numéro de législature)" }, "qualite": { "type": [ @@ -2247,9 +2243,9 @@ "type": "integer", "description": "Identifiant unique." }, - "hash": { - "type": "string", - "description": "Hachage de l'objet" + "dataset": { + "type": "integer", + "description": "Jeu de données de provenance (numéro de législature)" }, "dateCosignature": { "type": [ @@ -2317,9 +2313,9 @@ "type": "integer", "description": "Identifiant unique." }, - "hash": { - "type": "string", - "description": "Hachage de l'objet" + "dataset": { + "type": "integer", + "description": "Jeu de données de provenance (numéro de législature)" }, "amendable": { "type": [ @@ -2357,9 +2353,9 @@ "type": "string", "description": "Identifiant unique." }, - "hash": { - "type": "string", - "description": "Hachage de l'objet" + "dataset": { + "type": "integer", + "description": "Jeu de données de provenance (numéro de législature)" }, "xsiType": { "type": [ @@ -2510,6 +2506,11 @@ "items": { "$ref": "#/definitions/PointOdj" } + }, + "type": { + "type": "string", + "default": "", + "description": "Type de dossier législatif \n(e.g. Projet de ratification, Motion de censure, Proposition de loi)." } } }, @@ -2520,9 +2521,16 @@ "type": "string", "description": "Identifiant unique." }, - "hash": { - "type": "string", - "description": "Hachage de l'objet" + "dataset": { + "type": "integer", + "description": "Jeu de données de provenance (numéro de législature)" + }, + "parentUid": { + "type": [ + "string", + "null" + ], + "description": "Identifiant de l'acte législatif parent." }, "codeActe": { "type": "string", @@ -2770,13 +2778,6 @@ ], "description": "Type du texte européen (par exemple: Règlement de la Commission)." }, - "odjRefUid": { - "type": [ - "string", - "null" - ], - "description": "Identifiant unique de l'ordre du jour de la réunion dans l'agenda." - }, "famCodeStatutAdoption": { "type": [ "string", @@ -2906,10 +2907,14 @@ "InitiateurDossier": { "type": "object", "properties": { - "slug": { - "type": "string", + "id": { + "type": "integer", "description": "Identifiant unique." }, + "dataset": { + "type": "integer", + "description": "Jeu de données de provenance (numéro de législature)" + }, "acteurRef": { "anyOf": [ { @@ -2945,10 +2950,14 @@ "AuteurMotion": { "type": "object", "properties": { - "slug": { - "type": "string", + "id": { + "type": "integer", "description": "Identifiant unique." }, + "dataset": { + "type": "integer", + "description": "Jeu de données de provenance (numéro de législature)" + }, "acteLegislatifRef": { "anyOf": [ { @@ -2974,9 +2983,13 @@ "InfoJoRect": { "type": "object", "properties": { - "hash": { - "type": "string", - "description": "Hachage de l'objet" + "id": { + "type": "integer", + "description": "Identifiant unique." + }, + "dataset": { + "type": "integer", + "description": "Jeu de données de provenance (numéro de législature)" }, "dateJo": { "type": [ @@ -3027,10 +3040,14 @@ "InitiateurActeLegislatif": { "type": "object", "properties": { - "slug": { - "type": "string", + "id": { + "type": "integer", "description": "Identifiant unique." }, + "dataset": { + "type": "integer", + "description": "Jeu de données de provenance (numéro de législature)" + }, "acteLegislatifRef": { "anyOf": [ { @@ -3066,10 +3083,14 @@ "Rapporteur": { "type": "object", "properties": { - "slug": { - "type": "string", + "id": { + "type": "integer", "description": "Identifiant unique." }, + "dataset": { + "type": "integer", + "description": "Jeu de données de provenance (numéro de législature)" + }, "typeRapporteur": { "type": "string", "description": "Un 'rapporteur spécial' produit un rapport (texteAssocie débute par RAPP) ou une étude (texteAssocie débute par ETDR) alors qu'un 'rapporteur pour avis' produit un avis (texteAssocie débute par AVIS)." @@ -3113,9 +3134,9 @@ "type": "string", "description": "Identifiant unique." }, - "hash": { - "type": "string", - "description": "Hachage de l'objet" + "dataset": { + "type": "integer", + "description": "Jeu de données de provenance (numéro de législature)" }, "libelleCourt": { "type": [ @@ -3195,10 +3216,14 @@ "VoteActeLegislatif": { "type": "object", "properties": { - "slug": { - "type": "string", + "id": { + "type": "integer", "description": "Identifiant unique." }, + "dataset": { + "type": "integer", + "description": "Jeu de données de provenance (numéro de législature)" + }, "acteLegislatifRef": { "anyOf": [ { @@ -3224,10 +3249,14 @@ "TexteAssocie": { "type": "object", "properties": { - "slug": { - "type": "string", + "id": { + "type": "integer", "description": "Identifiant unique." }, + "dataset": { + "type": "integer", + "description": "Jeu de données de provenance (numéro de législature)" + }, "typeTexte": { "type": [ "string", @@ -3263,9 +3292,9 @@ "uid": { "type": "string" }, - "hash": { - "type": "string", - "description": "Hachage de l'objet" + "dataset": { + "type": "integer", + "description": "Jeu de données de provenance (numéro de législature)" }, "legislature": { "type": [ @@ -3528,9 +3557,9 @@ "id": { "type": "integer" }, - "hash": { - "type": "string", - "description": "Hachage de l'objet" + "dataset": { + "type": "integer", + "description": "Jeu de données de provenance (numéro de législature)" }, "qualite": { "type": "string" @@ -3552,6 +3581,10 @@ "id": { "type": "integer" }, + "dataset": { + "type": "integer", + "description": "Jeu de données de provenance (numéro de législature)" + }, "dateDebut": { "type": "string", "format": "date-time" @@ -3578,9 +3611,9 @@ "type": "string", "description": "Identifiant unique." }, - "hash": { - "type": "string", - "description": "Hachage de l'objet" + "dataset": { + "type": "integer", + "description": "Jeu de données de provenance (numéro de législature)" }, "codeType": { "type": "string" @@ -3833,9 +3866,9 @@ "type": "string", "description": "Identifiant unique." }, - "hash": { - "type": "string", - "description": "Hachage de l'objet" + "dataset": { + "type": "integer", + "description": "Jeu de données de provenance (numéro de législature)" }, "legislature": { "type": "string" @@ -3955,9 +3988,9 @@ "type": "string", "description": "Identifiant unique." }, - "hash": { - "type": "string", - "description": "Hachage de l'objet" + "dataset": { + "type": "integer", + "description": "Jeu de données de provenance (numéro de législature)" }, "dateScrutin": { "type": [ @@ -4193,6 +4226,10 @@ "type": "integer", "description": "Identifiant unique." }, + "dataset": { + "type": "integer", + "description": "Jeu de données de provenance (numéro de législature)" + }, "hash": { "type": "string", "description": "Hachage de l'objet" @@ -4287,9 +4324,9 @@ "type": "integer", "description": "Identifiant unique." }, - "hash": { - "type": "string", - "description": "Hachage de l'objet" + "dataset": { + "type": "integer", + "description": "Jeu de données de provenance (numéro de législature)" }, "positionVote": { "type": [ @@ -4371,9 +4408,9 @@ "type": "integer", "description": "Identifiant unique." }, - "hash": { - "type": "string", - "description": "Hachage de l'objet" + "dataset": { + "type": "integer", + "description": "Jeu de données de provenance (numéro de législature)" }, "position": { "type": [ @@ -4410,9 +4447,9 @@ "type": "integer", "description": "Identifiant unique." }, - "hash": { - "type": "string", - "description": "Hachage de l'objet" + "dataset": { + "type": "integer", + "description": "Jeu de données de provenance (numéro de législature)" }, "position": { "type": [ @@ -4447,11 +4484,11 @@ "properties": { "uid": { "type": "string", - "description": "Identifiant unique." + "description": "Identifiant unique d'un texte de loi." }, - "hash": { - "type": "string", - "description": "Hachage de l'objet" + "dataset": { + "type": "integer", + "description": "Jeu de données de provenance (numéro de législature)" }, "titre": { "type": "string", @@ -4557,13 +4594,13 @@ "SommaireLoi": { "type": "object", "properties": { - "uid": { - "type": "string", - "description": "Identifiant unique d'un sommaire." + "id": { + "type": "integer", + "description": "Id unique d'un sommaire d'un texte de loi." }, - "hash": { - "type": "string", - "description": "Hachage de l'objet." + "dataset": { + "type": "integer", + "description": "Jeu de données de provenance (numéro de législature)." }, "division": { "type": "string", @@ -4572,10 +4609,11 @@ "Chapitre", "Section", "SousSection" - ] + ], + "description": "Type de division." }, "numeroDivision": { - "type": "integer", + "type": "string", "description": "Numéro de la division." }, "sequence": { @@ -4601,13 +4639,36 @@ "Article": { "type": "object", "properties": { - "uid": { - "type": "string", - "description": "Identifiant unique d'un article." + "id": { + "type": "integer", + "description": "Id unique d'un article." + }, + "dataset": { + "type": "integer", + "description": "Jeu de données de provenance (numéro de législature)" }, "hash": { "type": "string", - "description": "Hachage de l'objet." + "description": "Hachage de l'objet.\nUtilisé comme référence aux alinéas." + }, + "alineas": { + "type": "array", + "items": { + "$ref": "#/definitions/Alinea" + }, + "description": "Liste des alinéas composant l'article." + }, + "cardinal": { + "type": [ + "string", + "null" + ], + "description": "Cardinal de l'article (e.g. er, bis)." + }, + "nouveau": { + "type": "boolean", + "default": false, + "description": "Mention spécifiée pour certains articles." }, "numero": { "type": [ @@ -4623,13 +4684,6 @@ }, "description": "Numéro des articles (dans de rare cas, il y a un groupement d'articles)." }, - "cardinal": { - "type": [ - "string", - "null" - ], - "description": "Cardinal de l'article (e.g. er, bis)." - }, "parent": { "type": [ "string", @@ -4637,19 +4691,12 @@ ], "description": "Section parente (e.g. Chapitre Ier BIS)." }, + "texteLoiRef": { + "$ref": "#/definitions/TexteLoi" + }, "titre": { "type": "string", "description": "Titre de l'article" - }, - "alineas": { - "type": "array", - "items": { - "$ref": "#/definitions/Alinea" - }, - "description": "Liste des alinéas composant l'article." - }, - "texteLoiRef": { - "$ref": "#/definitions/TexteLoi" } } }, @@ -4657,16 +4704,20 @@ "type": "object", "properties": { "id": { + "type": "integer", + "description": "Id unique d'un alinéa." + }, + "numero": { "type": "integer", "description": "Numéro de l'alinéa." }, - "hash": { - "type": "string", - "description": "Hachage de l'objet." + "dataset": { + "type": "integer", + "description": "Jeu de données de provenance (numéro de législature)" }, - "contenu": { + "texte": { "type": "string", - "description": "Contenu de l'alinéa." + "description": "Texte de l'alinéa." }, "articleRef": { "$ref": "#/definitions/Article"