From dc77c6b6551d33e12f6d855d03f1fab84d75afb9 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Mon, 16 Jan 2023 16:50:42 +0100 Subject: [PATCH] :sparkles: Remove deprecated code and reoganize file related methods --- backend/src/app/http/debug.clj | 2 +- backend/src/app/rpc.clj | 8 +- .../{files/create.clj => files_create.clj} | 2 +- .../{files/temp.clj => files_temp.clj} | 8 +- .../{files/update.clj => files_update.clj} | 2 +- backend/src/app/rpc/mutations/files.clj | 237 ------------------ backend/src/app/rpc/queries/files.clj | 183 -------------- backend/test/backend_tests/helpers.clj | 4 +- .../test/backend_tests/rpc_profile_test.clj | 8 +- .../test/backend_tests/rpc_project_test.clj | 17 +- 10 files changed, 25 insertions(+), 446 deletions(-) rename backend/src/app/rpc/commands/{files/create.clj => files_create.clj} (99%) rename backend/src/app/rpc/commands/{files/temp.clj => files_temp.clj} (92%) rename backend/src/app/rpc/commands/{files/update.clj => files_update.clj} (99%) delete mode 100644 backend/src/app/rpc/mutations/files.clj delete mode 100644 backend/src/app/rpc/queries/files.clj diff --git a/backend/src/app/http/debug.clj b/backend/src/app/http/debug.clj index d2cbb6f7a..1d342b9fb 100644 --- a/backend/src/app/http/debug.clj +++ b/backend/src/app/http/debug.clj @@ -16,7 +16,7 @@ [app.http.middleware :as mw] [app.http.session :as session] [app.rpc.commands.binfile :as binf] - [app.rpc.commands.files.create :refer [create-file]] + [app.rpc.commands.files-create :refer [create-file]] [app.rpc.commands.profile :as profile] [app.util.blob :as blob] [app.util.template :as tmpl] diff --git a/backend/src/app/rpc.clj b/backend/src/app/rpc.clj index 24fb1637d..2e06aa942 100644 --- a/backend/src/app/rpc.clj +++ b/backend/src/app/rpc.clj @@ -300,7 +300,6 @@ (let [cfg (assoc cfg ::type "query" ::metrics-id :rpc-query-timing)] (->> (sv/scan-ns 'app.rpc.queries.projects - 'app.rpc.queries.files 'app.rpc.queries.teams 'app.rpc.queries.profile 'app.rpc.queries.viewer @@ -314,7 +313,6 @@ (->> (sv/scan-ns 'app.rpc.mutations.media 'app.rpc.mutations.profile - 'app.rpc.mutations.files 'app.rpc.mutations.projects 'app.rpc.mutations.teams 'app.rpc.mutations.fonts @@ -334,9 +332,9 @@ 'app.rpc.commands.comments 'app.rpc.commands.demo 'app.rpc.commands.files - 'app.rpc.commands.files.create - 'app.rpc.commands.files.temp - 'app.rpc.commands.files.update + 'app.rpc.commands.files-create + 'app.rpc.commands.files-temp + 'app.rpc.commands.files-update 'app.rpc.commands.ldap 'app.rpc.commands.management 'app.rpc.commands.media diff --git a/backend/src/app/rpc/commands/files/create.clj b/backend/src/app/rpc/commands/files_create.clj similarity index 99% rename from backend/src/app/rpc/commands/files/create.clj rename to backend/src/app/rpc/commands/files_create.clj index 2d4a7a808..19bef5768 100644 --- a/backend/src/app/rpc/commands/files/create.clj +++ b/backend/src/app/rpc/commands/files_create.clj @@ -4,7 +4,7 @@ ;; ;; Copyright (c) KALEIDOS INC -(ns app.rpc.commands.files.create +(ns app.rpc.commands.files-create (:require [app.common.data :as d] [app.common.files.features :as ffeat] diff --git a/backend/src/app/rpc/commands/files/temp.clj b/backend/src/app/rpc/commands/files_temp.clj similarity index 92% rename from backend/src/app/rpc/commands/files/temp.clj rename to backend/src/app/rpc/commands/files_temp.clj index 193bb285a..78fabfd04 100644 --- a/backend/src/app/rpc/commands/files/temp.clj +++ b/backend/src/app/rpc/commands/files_temp.clj @@ -4,7 +4,7 @@ ;; ;; Copyright (c) KALEIDOS INC -(ns app.rpc.commands.files.temp +(ns app.rpc.commands.files-temp (:require [app.common.exceptions :as ex] [app.common.pages :as cp] @@ -13,8 +13,8 @@ [app.db :as db] [app.rpc :as-alias rpc] [app.rpc.commands.files :as files] - [app.rpc.commands.files.create :as files.create] - [app.rpc.commands.files.update :as files.update] + [app.rpc.commands.files-create :refer [create-file]] + [app.rpc.commands.files-update :as-alias files.update] [app.rpc.doc :as-alias doc] [app.rpc.queries.projects :as proj] [app.util.blob :as blob] @@ -40,7 +40,7 @@ [{:keys [pool] :as cfg} {:keys [::rpc/profile-id project-id] :as params}] (db/with-atomic [conn pool] (proj/check-edition-permissions! conn profile-id project-id) - (files.create/create-file conn (assoc params :profile-id profile-id :deleted-at (dt/in-future {:days 1}))))) + (create-file conn (assoc params :profile-id profile-id :deleted-at (dt/in-future {:days 1}))))) ;; --- MUTATION COMMAND: update-temp-file diff --git a/backend/src/app/rpc/commands/files/update.clj b/backend/src/app/rpc/commands/files_update.clj similarity index 99% rename from backend/src/app/rpc/commands/files/update.clj rename to backend/src/app/rpc/commands/files_update.clj index 14330e4c1..89c39ff04 100644 --- a/backend/src/app/rpc/commands/files/update.clj +++ b/backend/src/app/rpc/commands/files_update.clj @@ -4,7 +4,7 @@ ;; ;; Copyright (c) KALEIDOS INC -(ns app.rpc.commands.files.update +(ns app.rpc.commands.files-update (:require [app.common.exceptions :as ex] [app.common.files.features :as ffeat] diff --git a/backend/src/app/rpc/mutations/files.clj b/backend/src/app/rpc/mutations/files.clj deleted file mode 100644 index 273b9313b..000000000 --- a/backend/src/app/rpc/mutations/files.clj +++ /dev/null @@ -1,237 +0,0 @@ -;; This Source Code Form is subject to the terms of the Mozilla Public -;; License, v. 2.0. If a copy of the MPL was not distributed with this -;; file, You can obtain one at http://mozilla.org/MPL/2.0/. -;; -;; Copyright (c) KALEIDOS INC - -(ns app.rpc.mutations.files - (:require - [app.common.exceptions :as ex] - [app.common.logging :as l] - [app.common.spec :as us] - [app.db :as db] - [app.loggers.audit :as audit] - [app.rpc.climit :as-alias climit] - [app.rpc.commands.files :as cmd.files] - [app.rpc.commands.files.create :as cmd.files.create] - [app.rpc.commands.files.temp :as cmd.files.temp] - [app.rpc.commands.files.update :as cmd.files.update] - [app.rpc.doc :as-alias doc] - [app.rpc.helpers :as rph] - [app.rpc.queries.projects :as proj] - [app.util.services :as sv] - [app.util.time :as dt] - [clojure.spec.alpha :as s])) - -;; --- Mutation: Create File - -(s/def ::create-file ::cmd.files.create/create-file) - -(sv/defmethod ::create-file - {::doc/added "1.0" - ::doc/deprecated "1.17"} - [{:keys [pool] :as cfg} {:keys [profile-id project-id features components-v2] :as params}] - (db/with-atomic [conn pool] - (proj/check-edition-permissions! conn profile-id project-id) - (let [team-id (cmd.files/get-team-id conn project-id) - features (cond-> (or features #{}) - ;; BACKWARD COMPATIBILITY with the components-v2 param - components-v2 (conj "components/v2")) - params (assoc params :features features)] - (-> (cmd.files.create/create-file conn params) - (vary-meta assoc ::audit/props {:team-id team-id}))))) - - -;; --- Mutation: Rename File - -(s/def ::rename-file ::cmd.files/rename-file) - -(sv/defmethod ::rename-file - {::doc/added "1.0" - ::doc/deprecated "1.17"} - [{:keys [pool] :as cfg} {:keys [id profile-id] :as params}] - (db/with-atomic [conn pool] - (cmd.files/check-edition-permissions! conn profile-id id) - (cmd.files/rename-file conn params))) - - -;; --- Mutation: Set File shared - -(s/def ::set-file-shared ::cmd.files/set-file-shared) - -(sv/defmethod ::set-file-shared - {::doc/added "1.2" - ::doc/deprecated "1.17"} - [{:keys [pool] :as cfg} {:keys [id profile-id is-shared] :as params}] - (db/with-atomic [conn pool] - (cmd.files/check-edition-permissions! conn profile-id id) - (when-not is-shared - (cmd.files/absorb-library conn params) - (cmd.files/unlink-files conn params)) - (cmd.files/set-file-shared conn params))) - -;; --- Mutation: Delete File - -(s/def ::delete-file ::cmd.files/delete-file) - -(sv/defmethod ::delete-file - {::doc/added "1.0" - ::doc/deprecated "1.17"} - [{:keys [pool] :as cfg} {:keys [id profile-id] :as params}] - (db/with-atomic [conn pool] - (cmd.files/check-edition-permissions! conn profile-id id) - (cmd.files/absorb-library conn params) - (cmd.files/mark-file-deleted conn params) - nil)) - -;; --- Mutation: Link file to library - -(s/def ::link-file-to-library ::cmd.files/link-file-to-library) - -(sv/defmethod ::link-file-to-library - {::doc/added "1.3" - ::doc/deprecated "1.17"} - [{:keys [pool] :as cfg} {:keys [profile-id file-id library-id] :as params}] - (when (= file-id library-id) - (ex/raise :type :validation - :code :invalid-library - :hint "A file cannot be linked to itself")) - (db/with-atomic [conn pool] - (cmd.files/check-edition-permissions! conn profile-id file-id) - (cmd.files/check-edition-permissions! conn profile-id library-id) - (cmd.files/link-file-to-library conn params))) - -;; --- Mutation: Unlink file from library - -(s/def ::unlink-file-from-library ::cmd.files/unlink-file-from-library) - -(sv/defmethod ::unlink-file-from-library - {::doc/added "1.3" - ::doc/deprecated "1.17"} - [{:keys [pool] :as cfg} {:keys [profile-id file-id] :as params}] - (db/with-atomic [conn pool] - (cmd.files/check-edition-permissions! conn profile-id file-id) - (cmd.files/unlink-file-from-library conn params))) - - -;; --- Mutation: Update synchronization status of a link - -(s/def ::update-sync ::cmd.files/update-file-library-sync-status) - -(sv/defmethod ::update-sync - {::doc/added "1.10" - ::doc/deprecated "1.17"} - [{:keys [pool] :as cfg} {:keys [profile-id file-id] :as params}] - (db/with-atomic [conn pool] - (cmd.files/check-edition-permissions! conn profile-id file-id) - (cmd.files/update-sync conn params))) - - -;; --- Mutation: Ignore updates in linked files - -(declare ignore-sync) - -(s/def ::ignore-sync ::cmd.files/ignore-file-library-sync-status) - -(sv/defmethod ::ignore-sync - {::doc/added "1.10" - ::doc/deprecated "1.17"} - [{:keys [pool] :as cfg} {:keys [profile-id file-id] :as params}] - (db/with-atomic [conn pool] - (cmd.files/check-edition-permissions! conn profile-id file-id) - (cmd.files/ignore-sync conn params))) - - -;; --- MUTATION: update-file - -(s/def ::components-v2 ::us/boolean) -(s/def ::update-file - (s/and ::cmd.files.update/update-file - (s/keys :opt-un [::components-v2]))) - -(sv/defmethod ::update-file - {::climit/queue :update-file - ::climit/key-fn :id - ::doc/added "1.0" - ::doc/deprecated "1.17"} - [{:keys [pool] :as cfg} {:keys [id profile-id features components-v2] :as params}] - (db/with-atomic [conn pool] - (db/xact-lock! conn id) - (cmd.files/check-edition-permissions! conn profile-id id) - - (let [;; BACKWARD COMPATIBILITY with the components-v2 parameter - features (cond-> (or features #{}) - components-v2 (conj "components/v2")) - tpoint (dt/tpoint) - params (assoc params :features features) - cfg (assoc cfg :conn conn)] - - (-> (cmd.files.update/update-file cfg params) - (rph/with-defer #(let [elapsed (tpoint)] - (l/trace :hint "update-file" :time (dt/format-duration elapsed)))))))) - -;; --- Mutation: upsert object thumbnail - -(s/def ::upsert-file-object-thumbnail ::cmd.files/upsert-file-object-thumbnail) - -(sv/defmethod ::upsert-file-object-thumbnail - {::doc/added "1.13" - ::doc/deprecated "1.17"} - [{:keys [pool] :as cfg} {:keys [profile-id file-id] :as params}] - (db/with-atomic [conn pool] - (cmd.files/check-edition-permissions! conn profile-id file-id) - (cmd.files/upsert-file-object-thumbnail! conn params) - nil)) - - -;; --- Mutation: upsert file thumbnail - -(s/def ::upsert-file-thumbnail ::cmd.files/upsert-file-thumbnail) - -(sv/defmethod ::upsert-file-thumbnail - "Creates or updates the file thumbnail. Mainly used for paint the - grid thumbnails." - {::doc/added "1.13" - ::doc/deprecated "1.17"} - [{:keys [pool] :as cfg} {:keys [profile-id file-id] :as params}] - (db/with-atomic [conn pool] - (cmd.files/check-edition-permissions! conn profile-id file-id) - (cmd.files/upsert-file-thumbnail conn params) - nil)) - - -;; --- MUTATION COMMAND: create-temp-file - -(s/def ::create-temp-file ::cmd.files.temp/create-temp-file) - -(sv/defmethod ::create-temp-file - {::doc/added "1.7" - ::doc/deprecated "1.17"} - [{:keys [pool] :as cfg} {:keys [profile-id project-id] :as params}] - (db/with-atomic [conn pool] - (proj/check-edition-permissions! conn profile-id project-id) - (cmd.files.create/create-file conn (assoc params :deleted-at (dt/in-future {:days 1}))))) - -;; --- MUTATION COMMAND: update-temp-file - -(s/def ::update-temp-file ::cmd.files.temp/update-temp-file) - -(sv/defmethod ::update-temp-file - {::doc/added "1.7" - ::doc/deprecated "1.17"} - [{:keys [pool] :as cfg} params] - (db/with-atomic [conn pool] - (cmd.files.temp/update-temp-file conn params) - nil)) - -;; --- MUTATION COMMAND: persist-temp-file - -(s/def ::persist-temp-file ::cmd.files.temp/persist-temp-file) - -(sv/defmethod ::persist-temp-file - {::doc/added "1.7" - ::doc/deprecated "1.17"} - [{:keys [pool] :as cfg} {:keys [id profile-id] :as params}] - (db/with-atomic [conn pool] - (cmd.files/check-edition-permissions! conn profile-id id) - (cmd.files.temp/persist-temp-file conn params))) diff --git a/backend/src/app/rpc/queries/files.clj b/backend/src/app/rpc/queries/files.clj deleted file mode 100644 index 3dc5d9f92..000000000 --- a/backend/src/app/rpc/queries/files.clj +++ /dev/null @@ -1,183 +0,0 @@ -;; This Source Code Form is subject to the terms of the Mozilla Public -;; License, v. 2.0. If a copy of the MPL was not distributed with this -;; file, You can obtain one at http://mozilla.org/MPL/2.0/. -;; -;; Copyright (c) KALEIDOS INC - -(ns app.rpc.queries.files - (:require - [app.common.spec :as us] - [app.db :as db] - [app.rpc.commands.files :as files] - [app.rpc.commands.search :as search] - [app.rpc.commands.teams :as teams] - [app.rpc.doc :as-alias doc] - [app.rpc.helpers :as rph] - [app.rpc.queries.projects :as projects] - [app.util.services :as sv] - [clojure.spec.alpha :as s])) - -;; --- Query: Project Files - -(s/def ::project-files ::files/get-project-files) - -(sv/defmethod ::project-files - {::doc/added "1.0" - ::doc/deprecated "1.17"} - [{:keys [pool] :as cfg} {:keys [profile-id project-id] :as params}] - (with-open [conn (db/open pool)] - (projects/check-read-permissions! conn profile-id project-id) - (files/get-project-files conn project-id))) - -;; --- Query: File (By ID) - -(s/def ::components-v2 ::us/boolean) -(s/def ::file - (s/and ::files/get-file - (s/keys :opt-un [::components-v2]))) - -(defn get-file - [conn id features] - (let [file (files/get-file conn id features) - thumbs (files/get-object-thumbnails conn id)] - (assoc file :thumbnails thumbs))) - -(sv/defmethod ::file - "Retrieve a file by its ID. Only authenticated users." - {::doc/added "1.0" - ::doc/deprecated "1.17"} - [{:keys [pool] :as cfg} {:keys [profile-id id features components-v2] :as params}] - (with-open [conn (db/open pool)] - (let [perms (files/get-permissions pool profile-id id) - ;; BACKWARD COMPATIBILTY with the components-v2 parameter - features (cond-> (or features #{}) - components-v2 (conj "components/v2"))] - - (files/check-read-permissions! perms) - (-> (get-file conn id features) - (assoc :permissions perms))))) - -;; --- QUERY: page - -(s/def ::page - (s/and ::files/get-page - (s/keys :opt-un [::components-v2]))) - -(sv/defmethod ::page - "Retrieves the page data from file and returns it. If no page-id is - specified, the first page will be returned. If object-id is - specified, only that object and its children will be returned in the - page objects data structure. - - If you specify the object-id, the page-id parameter becomes - mandatory. - - Mainly used for rendering purposes." - {::doc/added "1.5" - ::doc/deprecated "1.17"} - [{:keys [pool] :as cfg} {:keys [profile-id file-id features components-v2] :as params}] - (with-open [conn (db/open pool)] - (files/check-read-permissions! conn profile-id file-id) - (let [;; BACKWARD COMPATIBILTY with the components-v2 parameter - features (cond-> (or features #{}) - components-v2 (conj "components/v2")) - params (assoc params :features features)] - - (files/get-page conn params)))) - -;; --- QUERY: file-data-for-thumbnail - -(s/def ::file-data-for-thumbnail - (s/and ::files/get-file-data-for-thumbnail - (s/keys :opt-un [::components-v2]))) - -(sv/defmethod ::file-data-for-thumbnail - "Retrieves the data for generate the thumbnail of the file. Used - mainly for render thumbnails on dashboard." - {::doc/added "1.11" - ::doc/deprecated "1.17"} - [{:keys [pool] :as cfg} {:keys [profile-id file-id features components-v2] :as props}] - (with-open [conn (db/open pool)] - (files/check-read-permissions! conn profile-id file-id) - (let [;; BACKWARD COMPATIBILTY with the components-v2 parameter - features (cond-> (or features #{}) - components-v2 (conj "components/v2")) - file (files/get-file conn file-id features)] - {:file-id file-id - :revn (:revn file) - :page (files/get-file-data-for-thumbnail conn file)}))) - -;; --- Query: Shared Library Files - -(s/def ::team-shared-files ::files/get-team-shared-files) - -(sv/defmethod ::team-shared-files - {::doc/added "1.3" - ::doc/deprecated "1.17"} - [{:keys [pool] :as cfg} {:keys [profile-id team-id] :as params}] - (with-open [conn (db/open pool)] - (teams/check-read-permissions! conn profile-id team-id) - (files/get-team-shared-files conn params))) - - -;; --- Query: File Libraries used by a File - -(s/def ::file-libraries ::files/get-file-libraries) - -(sv/defmethod ::file-libraries - {::doc/added "1.3" - ::doc/deprecated "1.17"} - [{:keys [pool] :as cfg} {:keys [profile-id file-id features] :as params}] - (with-open [conn (db/open pool)] - (files/check-read-permissions! conn profile-id file-id) - (files/get-file-libraries conn file-id features))) - - -;; --- Query: Files that use this File library - -(s/def ::library-using-files ::files/get-library-file-references) - -(sv/defmethod ::library-using-files - {::doc/added "1.13" - ::doc/deprecated "1.17"} - [{:keys [pool] :as cfg} {:keys [profile-id file-id] :as params}] - (with-open [conn (db/open pool)] - (files/check-read-permissions! conn profile-id file-id) - (files/get-library-file-references conn file-id))) - -;; --- QUERY: team-recent-files - -(s/def ::team-recent-files ::files/get-team-recent-files) - -(sv/defmethod ::team-recent-files - {::doc/added "1.0" - ::doc/deprecated "1.17"} - [{:keys [pool] :as cfg} {:keys [profile-id team-id]}] - (with-open [conn (db/open pool)] - (teams/check-read-permissions! conn profile-id team-id) - (files/get-team-recent-files conn team-id))) - - -;; --- QUERY: get file thumbnail - -(s/def ::file-thumbnail ::files/get-file-thumbnail) - -(sv/defmethod ::file-thumbnail - {::doc/added "1.13" - ::doc/deprecated "1.17"} - [{:keys [pool]} {:keys [profile-id file-id revn]}] - (with-open [conn (db/open pool)] - (files/check-read-permissions! conn profile-id file-id) - (-> (files/get-file-thumbnail conn file-id revn) - (rph/with-http-cache files/long-cache-duration)))) - - -;; --- QUERY: search files - -(s/def ::search-files ::search/search-files) - -(sv/defmethod ::search-files - {::doc/added "1.0" - ::doc/deprecated "1.17"} - [{:keys [pool]} {:keys [profile-id team-id search-term]}] - (some->> search-term (search/search-files pool profile-id team-id))) diff --git a/backend/test/backend_tests/helpers.clj b/backend/test/backend_tests/helpers.clj index 4656f5f17..c656d6c74 100644 --- a/backend/test/backend_tests/helpers.clj +++ b/backend/test/backend_tests/helpers.clj @@ -23,8 +23,8 @@ [app.rpc :as-alias rpc] [app.rpc.commands.auth :as cmd.auth] [app.rpc.commands.files :as files] - [app.rpc.commands.files.create :as files.create] - [app.rpc.commands.files.update :as files.update] + [app.rpc.commands.files-create :as files.create] + [app.rpc.commands.files-update :as files.update] [app.rpc.commands.teams :as teams] [app.rpc.helpers :as rph] [app.rpc.mutations.profile :as profile] diff --git a/backend/test/backend_tests/rpc_profile_test.clj b/backend/test/backend_tests/rpc_profile_test.clj index 604a27943..df180e05f 100644 --- a/backend/test/backend_tests/rpc_profile_test.clj +++ b/backend/test/backend_tests/rpc_profile_test.clj @@ -136,10 +136,10 @@ (t/is (nil? (:error out)))) ;; query files after profile soft deletion - (let [params {::th/type :project-files - :project-id (:default-project-id prof) - :profile-id (:id prof)} - out (th/query! params)] + (let [params {::th/type :get-project-files + ::rpc/profile-id (:id prof) + :project-id (:default-project-id prof)} + out (th/command! params)] ;; (th/print-result! out) (t/is (nil? (:error out))) (t/is (= 1 (count (:result out))))) diff --git a/backend/test/backend_tests/rpc_project_test.clj b/backend/test/backend_tests/rpc_project_test.clj index 24c745a83..ade2cf953 100644 --- a/backend/test/backend_tests/rpc_project_test.clj +++ b/backend/test/backend_tests/rpc_project_test.clj @@ -9,6 +9,7 @@ [backend-tests.helpers :as th] [app.common.uuid :as uuid] [app.db :as db] + [app.rpc :as-alias rpc] [app.http :as http] [app.util.time :as dt] [clojure.test :as t])) @@ -214,10 +215,10 @@ (t/is (= 0 (:processed result)))) ;; query the list of files of a after soft deletion - (let [data {::th/type :project-files - :project-id (:id project) - :profile-id (:id profile1)} - out (th/query! data)] + (let [data {::th/type :get-project-files + ::rpc/profile-id (:id profile1) + :project-id (:id project)} + out (th/command! data)] ;; (th/print-result! out) (t/is (nil? (:error out))) (let [result (:result out)] @@ -228,10 +229,10 @@ (t/is (= 1 (:processed result)))) ;; query the list of files of a after hard deletion - (let [data {::th/type :project-files - :project-id (:id project) - :profile-id (:id profile1)} - out (th/query! data)] + (let [data {::th/type :get-project-files + ::rpc/profile-id (:id profile1) + :project-id (:id project)} + out (th/command! data)] ;; (th/print-result! out) (let [error (:error out) error-data (ex-data error)]