Ensure Follow dates can not be not null

* Add Follow.unfollowed_at
* Change the unicity constraint to gestionnaire/dossier AND unfollowed_at
This commit is contained in:
Nicolas Bouilleaud 2019-06-07 14:41:24 +02:00 committed by Pierre de La Morinerie
parent 66a683fab7
commit ba48a1da6e
3 changed files with 21 additions and 19 deletions

View file

@ -94,26 +94,20 @@ class Gestionnaire < ApplicationRecord
.find_by(gestionnaire: self, dossier: dossier)
if follow.present?
# retirer le seen_at.present? une fois la contrainte de presence en base (et les migrations ad hoc)
champs_publiques = follow.demande_seen_at.present? &&
follow.dossier.champs.updated_since?(follow.demande_seen_at).any?
champs_publiques = follow.dossier.champs.updated_since?(follow.demande_seen_at).any?
pieces_justificatives = follow.demande_seen_at.present? &&
follow.dossier.pieces_justificatives.updated_since?(follow.demande_seen_at).any?
pieces_justificatives = follow.dossier.pieces_justificatives.updated_since?(follow.demande_seen_at).any?
demande = champs_publiques || pieces_justificatives
annotations_privees = follow.annotations_privees_seen_at.present? &&
follow.dossier.champs_private.updated_since?(follow.annotations_privees_seen_at).any?
annotations_privees = follow.dossier.champs_private.updated_since?(follow.annotations_privees_seen_at).any?
avis_notif = follow.avis_seen_at.present? &&
follow.dossier.avis.updated_since?(follow.avis_seen_at).any?
avis_notif = follow.dossier.avis.updated_since?(follow.avis_seen_at).any?
messagerie = follow.messagerie_seen_at.present? &&
dossier.commentaires
.where.not(email: OLD_CONTACT_EMAIL)
.where.not(email: CONTACT_EMAIL)
.updated_since?(follow.messagerie_seen_at).any?
messagerie = dossier.commentaires
.where.not(email: OLD_CONTACT_EMAIL)
.where.not(email: CONTACT_EMAIL)
.updated_since?(follow.messagerie_seen_at).any?
annotations_hash(demande, annotations_privees, avis_notif, messagerie)
else

View file

@ -0,0 +1,8 @@
class EnsureFollowDatesNotNull < ActiveRecord::Migration[5.2]
def change
change_column_null :follows, :demande_seen_at, false
change_column_null :follows, :annotations_privees_seen_at, false
change_column_null :follows, :avis_seen_at, false
change_column_null :follows, :messagerie_seen_at, false
end
end

View file

@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 2019_03_27_102360) do
ActiveRecord::Schema.define(version: 2019_06_07_122941) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@ -327,10 +327,10 @@ ActiveRecord::Schema.define(version: 2019_03_27_102360) do
create_table "follows", id: :serial, force: :cascade do |t|
t.integer "gestionnaire_id", null: false
t.integer "dossier_id", null: false
t.datetime "demande_seen_at"
t.datetime "annotations_privees_seen_at"
t.datetime "avis_seen_at"
t.datetime "messagerie_seen_at"
t.datetime "demande_seen_at", null: false
t.datetime "annotations_privees_seen_at", null: false
t.datetime "avis_seen_at", null: false
t.datetime "messagerie_seen_at", null: false
t.datetime "created_at"
t.datetime "updated_at"
t.index ["dossier_id"], name: "index_follows_on_dossier_id"