🎉 Allow to ignore updates, and do it later in libraries dialog

This commit is contained in:
Andrés Moya 2020-09-22 12:00:48 +02:00 committed by Andrey Antukh
parent ae61ce05c9
commit 9873ac9104
11 changed files with 277 additions and 100 deletions

View file

@ -93,6 +93,11 @@
{:name "0025-del-generic-tokens-table"
:fn (mg/resource "app/migrations/sql/0025-del-generic-tokens-table.sql")}
{:name "0026-mod-file-library-rel-table-synced-date"
:fn (mg/resource "app/migrations/sql/0026-mod-file-library-rel-table-synced-date.sql")}
{:name "0027-mod-file-table-ignore-sync"
:fn (mg/resource "app/migrations/sql/0027-mod-file-table-ignore-sync.sql")}
]})
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

View file

@ -0,0 +1,3 @@
ALTER TABLE file_library_rel
ADD COLUMN synced_at timestamptz NOT NULL DEFAULT clock_timestamp();

View file

@ -0,0 +1,3 @@
ALTER TABLE file
ADD COLUMN ignore_sync_until timestamptz NULL;

View file

@ -188,6 +188,47 @@
:library-file-id library-id}))
;; --- Mutation: Update syncrhonization status of a link
(declare update-sync)
(s/def ::update-sync
(s/keys :req-un [::profile-id ::file-id ::library-id]))
(sm/defmutation ::update-sync
[{:keys [profile-id file-id library-id] :as params}]
(db/with-atomic [conn db/pool]
(files/check-edition-permissions! conn profile-id file-id)
(update-sync conn params)))
(defn- update-sync
[conn {:keys [file-id library-id] :as params}]
(db/update! conn :file-library-rel
{:synced-at (dt/now)}
{:file-id file-id
:library-file-id library-id}))
;; --- Mutation: Ignore updates in linked files
(declare ignore-sync)
(s/def ::ignore-sync
(s/keys :req-un [::profile-id ::file-id ::date]))
(sm/defmutation ::ignore-sync
[{:keys [profile-id file-id date] :as params}]
(db/with-atomic [conn db/pool]
(files/check-edition-permissions! conn profile-id file-id)
(ignore-sync conn params)))
(defn- ignore-sync
[conn {:keys [file-id date] :as params}]
(db/update! conn :file
{:ignore-sync-until date}
{:id file-id}))
;; A generic, Changes based (granular) file update method.
(s/def ::changes
@ -258,6 +299,7 @@
:file-id (:id file)
:session-id sid
:revn (:revn file)
:modified-at (:modified-at file)
:changes library-changes}]
@(redis/run! :publish {:channel (str team-id)

View file

@ -235,7 +235,8 @@
;; --- Query: File Libraries used by a File
(def ^:private sql:file-libraries
"select fl.*
"select fl.*,
flr.synced_at as synced_at
from file as fl
inner join file_library_rel as flr on (flr.library_file_id = fl.id)
where flr.file_id = ?