4.4. Personnalisation du modèle de données

Ce chapître décrit les personnalisations possibles du modèle de données.

4.4.1. Introduction

Le modèle de données est versionné et mis à jour à l’aide du Postgres Updates Manager (abr. PUM). Les vues requises pour l’édition des données sont générées automatiquement en utilisant la librairie Pirogue.

La combinaison des deux rend possible l’introduction de petites personnalisations du modèle de données comme l’ajout de champs aux tables existantes ou l’extension de vues par jointure de tables additionnelles.

Avant d’aller plus loin, nous recommandons fortement de soumettre la question à la communauté si des doutes apparaissent sur la manière de sauvegarder n’importe quelle information dans la base de données. QGEP est compatible avec la SIA 405 Eaux usées ainsi qu’avec le modèle de données VSA-DSS.

Dans le cas ou QGEP n’est actuellement pas en mesure de stocker certaines de vos données, merci de nous le faire savoir et de nous faire connaître l’utilisation qui y est associée. Le modèle de données QGEP est un modèle standard adaptatif qui devrait pouvoir suivre vos besoins.

Dans le cas où une personnalisation est inévitable, les explications et règles suivantes expliquent comment adapter le modèle de données QGEP à vos besoins spécifiques.

4.4.2. Ajouter des champs

Il est autorisé d’ajouter des champs additionnels aux tables en les nommant avec le préfixe usr_….

If added in base tables, these additional fields will be automatically added to the views, being an editable field. The views can be re-generated any time using the following command:

./view/create_views.py --pg_service pg_qgep --srid 2056

Note

When running data model upgrades using PUM, it will be required to use the additional option --exclude-field-pattern 'usr_%'

4.4.3. Joindre des tables additionnelles

Il est possible de joindre des tables supplémentaires aux deux vues principales (vw_qgep_wastewater_structure et vw_qgep_reach). Ceci est possible à l’aide du fichier de définition YAML pour chaque vue en définissant une liste des tables jointes. Les champs de ces tables sont joints en lecture seule étant donné que ces derniers ne sont pas pris en compte par les triggers d’édition. Dans le but de joindre une table à qgep_od.wastewater_structure, voici un exemple :

joins:
  my_extra_join:
    table: qgep_od.my_table
    alias: mt
    prefix: mt_
    skip_columns:
      - field_1
      - field_2
    remap_columns:
      field_3: my_renamed_field
    join_on: mt.fk_ws = ws.obj_id

table et join_on sont les clés obligatoires, les autres sont optionnelles.

Ce fichier YAML doit recevoir le chemin du fichier au lancement du script :

./view/create_views.py --pg_service pg_qgep --srid 2056 --qgep_wastewater_structure_extra /path_to/extra_ws.yaml

De la même manière pour la vue vw_qgep_reach, en spécifiant la variable qgep_reach_extra correspondant au chemin du fichier YAML.

4.4.4. Créer des vues personnalisées

Il est possible de créer des vues personnalisées et de les ajouter au modèle de données.

Afin de permettre les mises à niveau du modèle de données, un script de création et un script de suppression de la vue doivent être fournis. Ces scripts (SQL ou Python) doivent être placés dans un endroit spécifique et être nommés pre-all.{py,sql} et post-all.{py,sql}. Le chemin sera donné comme paramètre à PUM lors de la mise à niveau (voir PUM documentation).

Si quelqu’un souhaite avoir ces vues mises à jour automatiquement lors d’une mise à jour du modèle, Pirogue peut être utilisé dynamiquement pour générer les vues. L’exemple de création des vues dans le modèle peut être utilisé.