mirror of
https://github.com/logseq/logseq.git
synced 2026-04-24 14:14:55 +00:00
fix: ensure user doesn't have graphs with same name
This commit is contained in:
10
deps/db-sync/src/logseq/db_sync/index.cljs
vendored
10
deps/db-sync/src/logseq/db_sync/index.cljs
vendored
@@ -75,6 +75,16 @@
|
||||
(common/<d1-run db "delete from graph_members where graph_id = ?" graph-id)
|
||||
(common/<d1-run db "delete from graphs where graph_id = ?" graph-id)))
|
||||
|
||||
(defn <graph-name-exists?
|
||||
[db graph-name user-id]
|
||||
(when (and (string? graph-name) (string? user-id))
|
||||
(p/let [result (common/<d1-all db
|
||||
"select graph_id from graphs where graph_name = ? and user_id = ?"
|
||||
graph-name
|
||||
user-id)
|
||||
rows (common/get-sql-rows result)]
|
||||
(boolean (seq rows)))))
|
||||
|
||||
(defn <user-upsert! [db claims]
|
||||
(let [user-id (aget claims "sub")]
|
||||
(when (string? user-id)
|
||||
|
||||
9
deps/db-sync/src/logseq/db_sync/worker.cljs
vendored
9
deps/db-sync/src/logseq/db_sync/worker.cljs
vendored
@@ -923,9 +923,12 @@
|
||||
|
||||
:else
|
||||
(p/let [{:keys [graph-name schema-version]} body
|
||||
_ (index/<index-upsert! db graph-id graph-name user-id schema-version)
|
||||
_ (index/<graph-member-upsert! db graph-id user-id "manager" user-id)]
|
||||
(json-response :graphs/create {:graph-id graph-id})))))))
|
||||
name-exists? (index/<graph-name-exists? db graph-name user-id)]
|
||||
(if name-exists?
|
||||
(bad-request "duplicate graph name")
|
||||
(p/let [_ (index/<index-upsert! db graph-id graph-name user-id schema-version)
|
||||
_ (index/<graph-member-upsert! db graph-id user-id "manager" user-id)]
|
||||
(json-response :graphs/create {:graph-id graph-id})))))))))
|
||||
|
||||
(and (= method "GET")
|
||||
(= 3 (count parts))
|
||||
|
||||
32
deps/db-sync/test/logseq/db_sync/index_test.cljs
vendored
32
deps/db-sync/test/logseq/db_sync/index_test.cljs
vendored
@@ -111,6 +111,16 @@
|
||||
(filter (fn [row] (contains? member-ids (:graph-id row)))))]
|
||||
(js-rows (concat owned member-graphs)))
|
||||
|
||||
(string/includes? sql "select graph_id from graphs where graph_name")
|
||||
(let [[graph-name user-id] args
|
||||
rows (->> (:graphs @state)
|
||||
vals
|
||||
(filter (fn [row]
|
||||
(and (= graph-name (:graph-name row))
|
||||
(= user-id (:user-id row)))))
|
||||
(map (fn [row] {:graph-id (:graph-id row)})))]
|
||||
(js-rows rows))
|
||||
|
||||
:else
|
||||
(js-rows [])))
|
||||
|
||||
@@ -171,6 +181,28 @@
|
||||
(is false (str e))
|
||||
(done)))))))
|
||||
|
||||
(deftest graph-name-exists-test
|
||||
(async done
|
||||
(let [state (atom {:executed []
|
||||
:users {}
|
||||
:graph-members {}
|
||||
:graphs {}})
|
||||
db (make-d1 state)]
|
||||
(-> (p/do!
|
||||
(index/<index-upsert! db "graph-1" "alpha" "user-1" "1")
|
||||
(index/<index-upsert! db "graph-2" "beta" "user-2" "1"))
|
||||
(p/then (fn [_]
|
||||
(p/let [exists? (index/<graph-name-exists? db "alpha" "user-1")
|
||||
missing? (index/<graph-name-exists? db "alpha" "user-2")
|
||||
other? (index/<graph-name-exists? db "beta" "user-1")]
|
||||
(is (true? exists?))
|
||||
(is (false? missing?))
|
||||
(is (false? other?))
|
||||
(done))))
|
||||
(p/catch (fn [e]
|
||||
(is false (str e))
|
||||
(done)))))))
|
||||
|
||||
(deftest graph-member-upsert-test
|
||||
(async done
|
||||
(let [state (atom {:executed []
|
||||
|
||||
Reference in New Issue
Block a user