Add naming consistency changes for file_data_fragment table

This commit is contained in:
Andrey Antukh 2024-08-07 16:18:17 +02:00 committed by Alejandro Alonso
parent a1c78683f5
commit 2533d0ebc0
13 changed files with 44 additions and 35 deletions

View file

@ -58,28 +58,26 @@
(defn load-pointer (defn load-pointer
"A database loader pointer helper" "A database loader pointer helper"
[system file-id id] [system file-id id]
(let [{:keys [content]} (db/get system :file-data-fragment (let [fragment (db/get* system :file-data-fragment
{:id id :file-id file-id} {:id id :file-id file-id}
{::sql/columns [:content] {::sql/columns [:data]})]
::db/check-deleted false})]
(l/trc :hint "load pointer" (l/trc :hint "load pointer"
:file-id (str file-id) :file-id (str file-id)
:id (str id) :id (str id)
:found (some? content)) :found (some? fragment))
(when-not content (when-not fragment
(ex/raise :type :internal (ex/raise :type :internal
:code :fragment-not-found :code :fragment-not-found
:hint "fragment not found" :hint "fragment not found"
:file-id file-id :file-id file-id
:fragment-id id)) :fragment-id id))
(blob/decode content))) (blob/decode (:data fragment))))
(defn persist-pointers! (defn persist-pointers!
"Given a database connection and the final file-id, persist all "Persist all currently tracked pointer objects"
pointers to the underlying storage (the database)."
[system file-id] [system file-id]
(let [conn (db/get-connection system)] (let [conn (db/get-connection system)]
(doseq [[id item] @pmap/*tracked*] (doseq [[id item] @pmap/*tracked*]
@ -89,7 +87,7 @@
(db/insert! conn :file-data-fragment (db/insert! conn :file-data-fragment
{:id id {:id id
:file-id file-id :file-id file-id
:content content})))))) :data content}))))))
(defn process-pointers (defn process-pointers
"Apply a function to all pointers on the file. Usuly used for "Apply a function to all pointers on the file. Usuly used for

View file

@ -379,7 +379,10 @@
:fn (mg/resource "app/migrations/sql/0119-mod-file-table.sql")} :fn (mg/resource "app/migrations/sql/0119-mod-file-table.sql")}
{:name "0120-mod-audit-log-table" {:name "0120-mod-audit-log-table"
:fn (mg/resource "app/migrations/sql/0120-mod-audit-log-table.sql")}]) :fn (mg/resource "app/migrations/sql/0120-mod-audit-log-table.sql")}
{:name "0121-mod-file-data-fragment-table"
:fn (mg/resource "app/migrations/sql/0121-mod-file-data-fragment-table.sql")}])
(defn apply-migrations! (defn apply-migrations!
[pool name migrations] [pool name migrations]

View file

@ -0,0 +1,8 @@
ALTER TABLE file_data_fragment
ADD COLUMN data bytea NULL;
UPDATE file_data_fragment
SET data = content;
ALTER TABLE file_data_fragment
DROP COLUMN content;

View file

@ -341,9 +341,9 @@
[:share-id {:optional true} ::sm/uuid]]) [:share-id {:optional true} ::sm/uuid]])
(defn- get-file-fragment (defn- get-file-fragment
[conn file-id fragment-id] [cfg file-id fragment-id]
(some-> (db/get conn :file-data-fragment {:file-id file-id :id fragment-id}) (some-> (db/get cfg :file-data-fragment {:file-id file-id :id fragment-id})
(update :content blob/decode))) (update :data blob/decode)))
(sv/defmethod ::get-file-fragment (sv/defmethod ::get-file-fragment
"Retrieve a file fragment by its ID. Only authenticated users." "Retrieve a file fragment by its ID. Only authenticated users."
@ -351,12 +351,12 @@
::rpc/auth false ::rpc/auth false
::sm/params schema:get-file-fragment ::sm/params schema:get-file-fragment
::sm/result schema:file-fragment} ::sm/result schema:file-fragment}
[{:keys [::db/pool] :as cfg} {:keys [::rpc/profile-id file-id fragment-id share-id]}] [cfg {:keys [::rpc/profile-id file-id fragment-id share-id]}]
(dm/with-open [conn (db/open pool)] (db/run! cfg (fn [cfg]
(let [perms (get-permissions conn profile-id file-id share-id)] (let [perms (get-permissions cfg profile-id file-id share-id)]
(check-read-permissions! perms) (check-read-permissions! perms)
(-> (get-file-fragment conn file-id fragment-id) (-> (get-file-fragment cfg file-id fragment-id)
(rph/with-http-cache long-cache-duration))))) (rph/with-http-cache long-cache-duration))))))
;; --- COMMAND QUERY: get-project-files ;; --- COMMAND QUERY: get-project-files

View file

@ -2,7 +2,7 @@
"~:id": "~u015fda4f-caa6-8103-8004-862a9e4b4d4b", "~:id": "~u015fda4f-caa6-8103-8004-862a9e4b4d4b",
"~:file-id": "~u015fda4f-caa6-8103-8004-862a00dd4f31", "~:file-id": "~u015fda4f-caa6-8103-8004-862a00dd4f31",
"~:created-at": "~m1718718436639", "~:created-at": "~m1718718436639",
"~:content": { "~:data": {
"~ue117f7f6-433c-807e-8004-862a38e1823d": { "~ue117f7f6-433c-807e-8004-862a38e1823d": {
"~:id": "~ue117f7f6-433c-807e-8004-862a38e1823d", "~:id": "~ue117f7f6-433c-807e-8004-862a38e1823d",
"~:name": "Button", "~:name": "Button",
@ -28,4 +28,4 @@
"~:main-instance-page": "~u015fda4f-caa6-8103-8004-862a00ddbe94" "~:main-instance-page": "~u015fda4f-caa6-8103-8004-862a00ddbe94"
} }
} }
} }

View file

@ -2,7 +2,7 @@
"~:id": "~u015fda4f-caa6-8103-8004-862a9e4ad279", "~:id": "~u015fda4f-caa6-8103-8004-862a9e4ad279",
"~:file-id": "~u015fda4f-caa6-8103-8004-862a00dd4f31", "~:file-id": "~u015fda4f-caa6-8103-8004-862a00dd4f31",
"~:created-at": "~m1718718436639", "~:created-at": "~m1718718436639",
"~:content": { "~:data": {
"~:options": {}, "~:options": {},
"~:objects": { "~:objects": {
"~u00000000-0000-0000-0000-000000000000": { "~u00000000-0000-0000-0000-000000000000": {
@ -627,4 +627,4 @@
"~:id": "~u015fda4f-caa6-8103-8004-862a00ddbe94", "~:id": "~u015fda4f-caa6-8103-8004-862a00ddbe94",
"~:name": "Page 1" "~:name": "Page 1"
} }
} }

View file

@ -2,7 +2,7 @@
"~:id": "~u03bff843-920f-81a1-8004-7563acdc8ca1", "~:id": "~u03bff843-920f-81a1-8004-7563acdc8ca1",
"~:file-id": "~u03bff843-920f-81a1-8004-756365e1eb6a", "~:file-id": "~u03bff843-920f-81a1-8004-756365e1eb6a",
"~:created-at": "~m1717592543081", "~:created-at": "~m1717592543081",
"~:content": { "~:data": {
"~:options": {}, "~:options": {},
"~:objects": { "~:objects": {
"~u00000000-0000-0000-0000-000000000000": { "~u00000000-0000-0000-0000-000000000000": {
@ -360,4 +360,4 @@
"~:id": "~u03bff843-920f-81a1-8004-756365e1eb6b", "~:id": "~u03bff843-920f-81a1-8004-756365e1eb6b",
"~:name": "Page 1" "~:name": "Page 1"
} }
} }

View file

@ -2,7 +2,7 @@
"~:id": "~u0515a066-e303-8169-8004-73eb58e899c2", "~:id": "~u0515a066-e303-8169-8004-73eb58e899c2",
"~:file-id": "~uc7ce0794-0992-8105-8004-38f280443849", "~:file-id": "~uc7ce0794-0992-8105-8004-38f280443849",
"~:created-at": "~m1717493890966", "~:created-at": "~m1717493890966",
"~:content": { "~:data": {
"~:options": {}, "~:options": {},
"~:objects": { "~:objects": {
"~u00000000-0000-0000-0000-000000000000": { "~u00000000-0000-0000-0000-000000000000": {
@ -94,4 +94,4 @@
"~:id": "~uc7ce0794-0992-8105-8004-38f28044384a", "~:id": "~uc7ce0794-0992-8105-8004-38f28044384a",
"~:name": "Page 1" "~:name": "Page 1"
} }
} }

View file

@ -2,7 +2,7 @@
"~:id": "~udd5cc0bb-91ff-81b9-8004-77dfae2d9e7c", "~:id": "~udd5cc0bb-91ff-81b9-8004-77dfae2d9e7c",
"~:file-id": "~udd5cc0bb-91ff-81b9-8004-77df9cd3edb1", "~:file-id": "~udd5cc0bb-91ff-81b9-8004-77df9cd3edb1",
"~:created-at": "~m1717759268004", "~:created-at": "~m1717759268004",
"~:content": { "~:data": {
"~:options": {}, "~:options": {},
"~:objects": { "~:objects": {
"~u00000000-0000-0000-0000-000000000000": { "~u00000000-0000-0000-0000-000000000000": {
@ -183,4 +183,4 @@
"~:id": "~udd5cc0bb-91ff-81b9-8004-77df9cd3edb2", "~:id": "~udd5cc0bb-91ff-81b9-8004-77df9cd3edb2",
"~:name": "Page 1" "~:name": "Page 1"
} }
} }

View file

@ -2,7 +2,7 @@
"~:id": "~ucd90e028-326a-80b4-8004-7cdeefa23ece", "~:id": "~ucd90e028-326a-80b4-8004-7cdeefa23ece",
"~:file-id": "~ucd90e028-326a-80b4-8004-7cdec16ffad5", "~:file-id": "~ucd90e028-326a-80b4-8004-7cdec16ffad5",
"~:created-at": "~m1718094617214", "~:created-at": "~m1718094617214",
"~:content": { "~:data": {
"~:options": {}, "~:options": {},
"~:objects": { "~:objects": {
"~u00000000-0000-0000-0000-000000000000": { "~u00000000-0000-0000-0000-000000000000": {

View file

@ -2,7 +2,7 @@
"~:id": "~ude58c8f6-c5c2-8196-8004-3df9e2e52d88", "~:id": "~ude58c8f6-c5c2-8196-8004-3df9e2e52d88",
"~:file-id": "~uc7ce0794-0992-8105-8004-38f280443849", "~:file-id": "~uc7ce0794-0992-8105-8004-38f280443849",
"~:created-at": "~m1713873823631", "~:created-at": "~m1713873823631",
"~:content": { "~:data": {
"~:options": {}, "~:options": {},
"~:objects": { "~:objects": {
"~u00000000-0000-0000-0000-000000000000": { "~u00000000-0000-0000-0000-000000000000": {
@ -94,4 +94,4 @@
"~:id": "~uc7ce0794-0992-8105-8004-38f28044384a", "~:id": "~uc7ce0794-0992-8105-8004-38f28044384a",
"~:name": "Page 1" "~:name": "Page 1"
} }
} }

View file

@ -134,7 +134,7 @@
(uuid? share-id) (uuid? share-id)
(assoc :share-id share-id))] (assoc :share-id share-id))]
(->> (rp/cmd! :get-file-fragment params) (->> (rp/cmd! :get-file-fragment params)
(rx/map :content) (rx/map :data)
(rx/map #(vector key %)))))] (rx/map #(vector key %)))))]
(->> (rp/cmd! :get-view-only-bundle params') (->> (rp/cmd! :get-view-only-bundle params')

View file

@ -16,7 +16,7 @@
(letfn [(resolve-pointer [[key val :as kv]] (letfn [(resolve-pointer [[key val :as kv]]
(if (t/pointer? val) (if (t/pointer? val)
(->> (rp/cmd! :get-file-fragment {:file-id id :fragment-id @val}) (->> (rp/cmd! :get-file-fragment {:file-id id :fragment-id @val})
(rx/map #(get % :content)) (rx/map #(get % :data))
(rx/map #(vector key %))) (rx/map #(vector key %)))
(rx/of kv))) (rx/of kv)))