diff --git a/backend/src/app/services/mutations/files.clj b/backend/src/app/services/mutations/files.clj index 0246d58f4..27da20bd5 100644 --- a/backend/src/app/services/mutations/files.clj +++ b/backend/src/app/services/mutations/files.clj @@ -162,11 +162,14 @@ (files/check-edition-permissions! conn profile-id file-id) (link-file-to-library conn params))) +(def sql:link-file-to-library + "insert into file_library_rel (file_id, library_file_id) + values (?, ?) + on conflict do nothing;") + (defn- link-file-to-library [conn {:keys [file-id library-id] :as params}] - (db/insert! conn :file-library-rel - {:file-id file-id - :library-file-id library-id})) + (db/exec-one! conn [sql:link-file-to-library file-id library-id])) ;; --- Mutation: Unlink file from library diff --git a/backend/src/app/services/mutations/media.clj b/backend/src/app/services/mutations/media.clj index 1d12c8e8e..3dd65fb9b 100644 --- a/backend/src/app/services/mutations/media.clj +++ b/backend/src/app/services/mutations/media.clj @@ -38,7 +38,6 @@ (s/def ::team-id ::us/uuid) (s/def ::url ::us/url) - ;; --- Create Media object (Upload and create from url) (declare create-media-object) diff --git a/backend/src/app/tasks/delete_object.clj b/backend/src/app/tasks/delete_object.clj index e09776557..7bc9874a0 100644 --- a/backend/src/app/tasks/delete_object.clj +++ b/backend/src/app/tasks/delete_object.clj @@ -55,13 +55,3 @@ [conn {:keys [id] :as props}] (let [sql "delete from media_object where id=? and deleted_at is not null"] (db/exec-one! conn [sql id]))) - -(defmethod handle-deletion :color - [conn {:keys [id] :as props}] - (let [sql "delete from color where id=? and deleted_at is not null"] - (db/exec-one! conn [sql id]))) - -(defmethod handle-deletion :page - [conn {:keys [id] :as props}] - (let [sql "delete from page where id=? and deleted_at is not null"] - (db/exec-one! conn [sql id]))) diff --git a/frontend/src/app/main/data/workspace/persistence.cljs b/frontend/src/app/main/data/workspace/persistence.cljs index 70fe89a88..6e8e66715 100644 --- a/frontend/src/app/main/data/workspace/persistence.cljs +++ b/frontend/src/app/main/data/workspace/persistence.cljs @@ -287,51 +287,28 @@ ;; --- Link and unlink Files -(declare file-linked) - (defn link-file-to-library [file-id library-id] (ptk/reify ::link-file-to-library ptk/WatchEvent (watch [_ state stream] - (let [params {:file-id file-id - :library-id library-id}] - (->> (->> (rp/mutation :link-file-to-library params) - (rx/mapcat - #(rx/zip (rp/query :file-library {:file-id library-id}) - (rp/query :media-objects {:file-id library-id - :is-local false})))) - (rx/map file-linked)))))) - -(defn file-linked - [[library media-objects colors]] - (ptk/reify ::file-linked - ptk/UpdateEvent - (update [_ state] - (assoc-in state [:workspace-libraries (:id library)] - (assoc library - :media-objects media-objects - :colors colors))))) - -(declare file-unlinked) + (let [fetched #(assoc-in %2 [:workspace-libraries (:id %1)] %1) + params {:file-id file-id + :library-id library-id}] + (->> (rp/mutation :link-file-to-library params) + (rx/mapcat #(rp/query :file {:id library-id})) + (rx/map #(partial fetched %))))))) (defn unlink-file-from-library [file-id library-id] (ptk/reify ::unlink-file-from-library ptk/WatchEvent (watch [_ state stream] - (let [params {:file-id file-id - :library-id library-id}] + (let [unlinked #(d/dissoc-in % [:workspace-libraries library-id]) + params {:file-id file-id + :library-id library-id}] (->> (rp/mutation :unlink-file-from-library params) - (rx/map #(file-unlinked file-id library-id))))))) - -(defn file-unlinked - [file-id library-id] - (ptk/reify ::file-unlinked - ptk/UpdateEvent - (update [_ state] - (d/dissoc-in state [:workspace-libraries library-id])))) - + (rx/map (constantly unlinked))))))) ;; --- Fetch Pages