4.5. Personnalisation du modèle de données

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

4.5.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.

Before going further, we strongly recommend to ask the community if you have any doubts about how to store any information in the database. TWW complies with SIA 405 Waste Water and VSA-DSS datamodel.

If TWW data model is not able yet to hold some data, please let us know what kind and how it should be handled. TWW data model is a standard proof adaptative model and could follow your needs.

If a customization is still required, the following explanations and rules explain how to adapt TWW data model to your specific needs.

4.5.2. Altering symbology and labelling behaviour

Symbology and labelling behaviour depends on the value lists `` tww_vl.channel_usage_current`` and `` tww_vl.channel_function_hierarchic`` These two value list tables have an additional column tww_symbology_order, which is used to define the hierarchy of the symbology.

For labelling, one can use the column `` tww_vl.channel_function_hierarchic.tww_use_in_labels`` to define which functions_hierarchic are taken into account when creating a wastewater structure’s label.

4.5.3. 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_tww --srid 2056

Note

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

4.5.4. Joindre des tables additionnelles

It is possible to join additional tables to the two main views (vw_tww_wastewater_structure and vw_tww_reach). This is done by using a YAML definition file for each view and defining a list of joined tables. Fields of these tables will be joined as read-only fields as they are discarded in edit triggers. For joining a table to tww_od.wastewater_structure, here is an example:

joins:
  my_extra_join:
    table: tww_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_tww --srid 2056 --tww_wastewater_structure_extra /path_to/extra_ws.yaml

And similarly for vw_tww_reach view, by specifying tww_reach_extra variable to the corresponding YAML file path.

4.5.5. 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é.