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