diff --git a/docs/changelog.rst b/docs/changelog.rst index efc1bc3..3ee643a 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -1,6 +1,15 @@ CHANGELOG ********* + +unreleased (2024-05-xx) +------------------ + +**🚀 Nouveautés** + +- Ajout des champs `meta_create_date` et `meta_update_date` à la table `bib_organismes` (#96). + + 3.0.1 (2024-11-29) ------------------ @@ -35,13 +44,13 @@ auth_manager.init_app(app,providers_declaration=providers_config) ``` - 2.1.5 (2024-05-23) ------------------ **🚀 Nouveautés** - Mise à jour de dépendances critiques : `requests`, `jinja2`, `werkzeug` (#102) +- Ajout des champs `meta_create_date` et `meta_update_date` à la table `bib_organismes` (#96). 2.1.4 (2024-04-23) ------------------ diff --git a/src/pypnusershub/db/models.py b/src/pypnusershub/db/models.py index c1fbb2d..14f9dad 100644 --- a/src/pypnusershub/db/models.py +++ b/src/pypnusershub/db/models.py @@ -268,6 +268,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..3b914a7 --- /dev/null +++ b/src/pypnusershub/migrations/versions/cf38131bc247_add_meta_create_insert_date_to_.py @@ -0,0 +1,75 @@ +"""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(); + """ + )