From b827e6e16d80983a736d0e0aeaaacb6be4e2f1b0 Mon Sep 17 00:00:00 2001 From: Fred C Date: Mon, 20 May 2024 11:08:15 +0200 Subject: [PATCH 1/3] Add meta_{create,update}_date fields to bib_organismes --- src/pypnusershub/db/models.py | 2 + ...31bc247_add_meta_create_insert_date_to_.py | 64 +++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 src/pypnusershub/migrations/versions/cf38131bc247_add_meta_create_insert_date_to_.py diff --git a/src/pypnusershub/db/models.py b/src/pypnusershub/db/models.py index c3aafbd..3beea19 100644 --- a/src/pypnusershub/db/models.py +++ b/src/pypnusershub/db/models.py @@ -256,6 +256,8 @@ class Organisme(db.Model): db.Integer, db.ForeignKey("utilisateurs.bib_organismes.id_organisme") ) additional_data = db.Column(JSONB, nullable=True, server_default="{}") + meta_create_date = db.Column(db.DateTime) + meta_update_date = db.Column(db.DateTime) members = db.relationship(User, backref="organisme") def __str__(self): diff --git a/src/pypnusershub/migrations/versions/cf38131bc247_add_meta_create_insert_date_to_.py b/src/pypnusershub/migrations/versions/cf38131bc247_add_meta_create_insert_date_to_.py new file mode 100644 index 0000000..6f013de --- /dev/null +++ b/src/pypnusershub/migrations/versions/cf38131bc247_add_meta_create_insert_date_to_.py @@ -0,0 +1,64 @@ +"""Add meta create/insert date to biborganismes + +Revision ID: cf38131bc247 +Revises: f9d3b95946cd +Create Date: 2024-05-20 10:45:25.067157 + +""" + +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = "cf38131bc247" +down_revision = "f9d3b95946cd" +branch_labels = None +depends_on = None + + +def upgrade(): + op.add_column( + "bib_organismes", + sa.Column("meta_create_date", sa.TIMESTAMP, server_default=sa.func.now()), + schema="utilisateurs", + ) + op.add_column( + "bib_organismes", + sa.Column("meta_update_date", sa.TIMESTAMP, server_default=sa.func.now()), + schema="utilisateurs", + ) + op.execute(""" +CREATE FUNCTION utilisateurs.fct_trg_meta_dates_change() RETURNS trigger + LANGUAGE plpgsql +AS +$$ +begin + if(TG_OP = 'INSERT') THEN + NEW.meta_create_date = NOW(); + ELSIF(TG_OP = 'UPDATE') THEN + NEW.meta_update_date = NOW(); + if(NEW.meta_create_date IS NULL) THEN + NEW.meta_create_date = NOW(); + END IF; + end IF; + return NEW; +end; +$$; + +CREATE TRIGGER tri_meta_dates_change_organisms + BEFORE INSERT OR UPDATE + ON utilisateurs.bib_organismes + FOR EACH ROW +EXECUTE PROCEDURE utilisateurs.fct_trg_meta_dates_change(); + """) + + +def downgrade(): + op.drop_column(table_name="bib_organismes", column_name="meta_create_date", schema="utilisateurs") + op.drop_column(table_name="bib_organismes", column_name="meta_update_date", schema="utilisateurs") + op.execute(""" +DROP TRIGGER tri_meta_dates_change_organisms ON utilisateurs.bib_organismes; +DROP FUNCTION utilisateurs.fct_trg_meta_dates_change(); + """) + From f8ab9a099674a0c7bc3c371ddc4188ea3e1afde3 Mon Sep 17 00:00:00 2001 From: Fred C Date: Mon, 20 May 2024 11:15:22 +0200 Subject: [PATCH 2/3] apply black --- ...31bc247_add_meta_create_insert_date_to_.py | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/src/pypnusershub/migrations/versions/cf38131bc247_add_meta_create_insert_date_to_.py b/src/pypnusershub/migrations/versions/cf38131bc247_add_meta_create_insert_date_to_.py index 6f013de..3b914a7 100644 --- a/src/pypnusershub/migrations/versions/cf38131bc247_add_meta_create_insert_date_to_.py +++ b/src/pypnusershub/migrations/versions/cf38131bc247_add_meta_create_insert_date_to_.py @@ -28,7 +28,8 @@ def upgrade(): sa.Column("meta_update_date", sa.TIMESTAMP, server_default=sa.func.now()), schema="utilisateurs", ) - op.execute(""" + op.execute( + """ CREATE FUNCTION utilisateurs.fct_trg_meta_dates_change() RETURNS trigger LANGUAGE plpgsql AS @@ -51,14 +52,24 @@ def upgrade(): ON utilisateurs.bib_organismes FOR EACH ROW EXECUTE PROCEDURE utilisateurs.fct_trg_meta_dates_change(); - """) + """ + ) def downgrade(): - op.drop_column(table_name="bib_organismes", column_name="meta_create_date", schema="utilisateurs") - op.drop_column(table_name="bib_organismes", column_name="meta_update_date", schema="utilisateurs") - op.execute(""" + op.drop_column( + table_name="bib_organismes", + column_name="meta_create_date", + schema="utilisateurs", + ) + op.drop_column( + table_name="bib_organismes", + column_name="meta_update_date", + schema="utilisateurs", + ) + op.execute( + """ DROP TRIGGER tri_meta_dates_change_organisms ON utilisateurs.bib_organismes; DROP FUNCTION utilisateurs.fct_trg_meta_dates_change(); - """) - + """ + ) From 7061a00399c6c7b2c5cc772f9bb7142b6a0ee79f Mon Sep 17 00:00:00 2001 From: Fred C Date: Mon, 20 May 2024 11:16:44 +0200 Subject: [PATCH 3/3] update changelog --- docs/changelog.rst | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/changelog.rst b/docs/changelog.rst index 33cda03..f5a6b14 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -1,6 +1,14 @@ CHANGELOG ********* +unreleased (2024-05-20) +---------------------- + +**🚀 Nouveautés** + +- Ajout des champs `meta_create_date` et `meta_update_date` à la table `bib_organismes` (#96). + + 2.1.4 (2024-04-23) ------------------