From 067aece437e2e382f293a24cc6eb824ef51e4f94 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Mon, 21 Dec 2020 09:11:33 +0100 Subject: [PATCH] :tada: Add first helpers for manipulate the file data from server repl. --- backend/src/app/srepl/main.clj | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/backend/src/app/srepl/main.clj b/backend/src/app/srepl/main.clj index 94f10626c..fe4f97277 100644 --- a/backend/src/app/srepl/main.clj +++ b/backend/src/app/srepl/main.clj @@ -3,4 +3,35 @@ #_:clj-kondo/ignore (:require [clojure.pprint :refer [pprint]] - [app.db :as db])) + [app.db :as db] + [app.common.pages.migrations :as pmg] + [app.util.blob :as blob] + [app.common.pages :as cp])) + +(defn update-file + ([id f] (update-file id f false)) + ([id f save?] + (db/with-atomic [conn db/pool] + (let [file (db/get-by-id conn :file id {:for-update true}) + file (-> file + (update :data app.util.blob/decode) + (update :data pmg/migrate-data) + (update :data f) + (update :data blob/encode) + (update :revn inc))] + (when save? + (db/update! conn :file + {:data (:data file)} + {:id (:id file)})) + (update file :data blob/decode))))) + +(defn update-file-raw + [id data] + (db/with-atomic [conn db/pool] + (db/update! conn :file + {:data data} + {:id id}))) + +;; Examples +;; (def backup (update-file #uuid "1586e1f0-3e02-11eb-b1d2-556a2f641513" identity)) +;; (def x (update-file #uuid "1586e1f0-3e02-11eb-b1d2-556a2f641513" (fn [{:keys [data] :as file}] (update-in data [:pages-index #uuid "878278c0-3ef0-11eb-9d67-8551e7624f43" :objects] dissoc nil))))