mirror of
https://github.com/penpot/penpot.git
synced 2025-06-12 20:51:38 +02:00
✨ Minor improvements on project and files renaming.
This commit is contained in:
parent
44e120d382
commit
e3cd0d132b
7 changed files with 52 additions and 44 deletions
|
@ -94,25 +94,28 @@
|
||||||
values ($1, $2, $3, $4, 0, 1, $5) returning id"]
|
values ($1, $2, $3, $4, 0, 1, $5) returning id"]
|
||||||
(db/query-one conn [sql id user file-id name data])))
|
(db/query-one conn [sql id user file-id name data])))
|
||||||
|
|
||||||
;; --- Mutation: Update Project
|
;; --- Mutation: Rename File
|
||||||
|
|
||||||
(declare update-file)
|
(declare rename-file)
|
||||||
|
|
||||||
(s/def ::update-project-file
|
(s/def ::rename-project-file
|
||||||
(s/keys :req-un [::user ::name ::id]))
|
(s/keys :req-un [::user ::name ::id]))
|
||||||
|
|
||||||
(sm/defmutation ::update-project-file
|
(sm/defmutation ::rename-project-file
|
||||||
[{:keys [id user] :as params}]
|
[{:keys [id user] :as params}]
|
||||||
(db/with-atomic [conn db/pool]
|
(db/with-atomic [conn db/pool]
|
||||||
(check-edition-permissions! conn user id)
|
(check-edition-permissions! conn user id)
|
||||||
(update-file conn params)))
|
(rename-file conn params)))
|
||||||
|
|
||||||
(defn- update-file
|
(su/defstr sql:rename-file
|
||||||
[conn {:keys [id name user] :as params}]
|
"update project_files
|
||||||
(let [sql "update project_files
|
set name = $2
|
||||||
set name = $2
|
where id = $1
|
||||||
where id = $1
|
and deleted_at is null")
|
||||||
and deleted_at is null"]
|
|
||||||
|
(defn- rename-file
|
||||||
|
[conn {:keys [id name] :as params}]
|
||||||
|
(let [sql sql:rename-file]
|
||||||
(-> (db/query-one conn [sql id name])
|
(-> (db/query-one conn [sql id name])
|
||||||
(p/then' su/constantly-nil))))
|
(p/then' su/constantly-nil))))
|
||||||
|
|
||||||
|
|
|
@ -66,26 +66,28 @@
|
||||||
|
|
||||||
;; --- Mutation: Update Project
|
;; --- Mutation: Update Project
|
||||||
|
|
||||||
(declare update-project)
|
(declare rename-project)
|
||||||
|
|
||||||
(s/def ::update-project
|
(s/def ::rename-project
|
||||||
(s/keys :req-un [::user ::name ::id]))
|
(s/keys :req-un [::user ::name ::id]))
|
||||||
|
|
||||||
(sm/defmutation ::update-project
|
(sm/defmutation ::rename-project
|
||||||
[{:keys [id user] :as params}]
|
[{:keys [id user] :as params}]
|
||||||
(db/with-atomic [conn db/pool]
|
(db/with-atomic [conn db/pool]
|
||||||
(check-edition-permissions! conn user id)
|
(check-edition-permissions! conn user id)
|
||||||
(update-project conn params)))
|
(rename-project conn params)))
|
||||||
|
|
||||||
(defn update-project
|
(su/defstr sql:rename-project
|
||||||
[conn {:keys [id name user] :as params}]
|
"update projects
|
||||||
(let [sql "update projects
|
set name = $2
|
||||||
set name = $3
|
where id = $1
|
||||||
where id = $1
|
and deleted_at is null
|
||||||
and user_id = $2
|
returning *")
|
||||||
and deleted_at is null
|
|
||||||
returning *"]
|
(defn rename-project
|
||||||
(db/query-one conn [sql id user name])))
|
[conn {:keys [id name] :as params}]
|
||||||
|
(let [sql sql:rename-project]
|
||||||
|
(db/query-one conn [sql id name])))
|
||||||
|
|
||||||
;; --- Mutation: Delete Project
|
;; --- Mutation: Delete Project
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
(s/def ::project-id ::us/uuid)
|
(s/def ::project-id ::us/uuid)
|
||||||
(s/def ::user ::us/uuid)
|
(s/def ::user ::us/uuid)
|
||||||
|
|
||||||
(su/defsql sql:generic-project-files
|
(su/defstr sql:generic-project-files
|
||||||
"select pf.*,
|
"select pf.*,
|
||||||
array_agg(pp.id) as pages
|
array_agg(pp.id) as pages
|
||||||
from project_files as pf
|
from project_files as pf
|
||||||
|
@ -35,6 +35,7 @@
|
||||||
and pu.can_edit = true
|
and pu.can_edit = true
|
||||||
group by pf.id")
|
group by pf.id")
|
||||||
|
|
||||||
|
|
||||||
;; --- Query: Project Files
|
;; --- Query: Project Files
|
||||||
|
|
||||||
(declare retrieve-recent-files)
|
(declare retrieve-recent-files)
|
||||||
|
@ -50,32 +51,33 @@
|
||||||
(retrieve-recent-files db/pool params)
|
(retrieve-recent-files db/pool params)
|
||||||
(retrieve-project-files db/pool params)))
|
(retrieve-project-files db/pool params)))
|
||||||
|
|
||||||
(def ^:private sql:project-files
|
(su/defstr sql:project-files
|
||||||
(str "with files as (" sql:generic-project-files ")"
|
"with files as (~{sql:generic-project-files})
|
||||||
" select * from files where project_id = $2"
|
select * from files where project_id = $2
|
||||||
" order by created_at asc"))
|
order by created_at asc")
|
||||||
|
|
||||||
|
(su/defstr sql:recent-files
|
||||||
|
"with files as (~{sql:generic-project-files})
|
||||||
|
select * from files
|
||||||
|
order by modified_at desc
|
||||||
|
limit $2")
|
||||||
|
|
||||||
(defn retrieve-project-files
|
(defn retrieve-project-files
|
||||||
[conn {:keys [user project-id]}]
|
[conn {:keys [user project-id]}]
|
||||||
(-> (db/query conn [sql:project-files user project-id])
|
(-> (db/query conn [sql:project-files user project-id])
|
||||||
(p/then' (partial mapv decode-row))))
|
(p/then' (partial mapv decode-row))))
|
||||||
|
|
||||||
(su/defsql sql:recent-files
|
|
||||||
"with files as (~{sql:generic-project-files})
|
|
||||||
select * from files
|
|
||||||
order by modified_at desc
|
|
||||||
limit $2")
|
|
||||||
|
|
||||||
(defn retrieve-recent-files
|
(defn retrieve-recent-files
|
||||||
[conn {:keys [user]}]
|
[conn {:keys [user]}]
|
||||||
(-> (db/query conn [sql:recent-files user 20])
|
(-> (db/query conn [sql:recent-files user 20])
|
||||||
(p/then' (partial mapv decode-row))))
|
(p/then' (partial mapv decode-row))))
|
||||||
|
|
||||||
|
|
||||||
;; --- Query: Project File (By ID)
|
;; --- Query: Project File (By ID)
|
||||||
|
|
||||||
(def ^:private sql:project-file
|
(su/defstr sql:project-file
|
||||||
(str "with files as (" sql:generic-project-files ")"
|
"with files as (~{sql:generic-project-files})
|
||||||
" select * from files where id = $2"))
|
select * from files where id = $2")
|
||||||
|
|
||||||
(s/def ::project-file
|
(s/def ::project-file
|
||||||
(s/keys :req-un [::user ::id]))
|
(s/keys :req-un [::user ::id]))
|
||||||
|
@ -85,6 +87,7 @@
|
||||||
(-> (db/query-one db/pool [sql:project-file user id])
|
(-> (db/query-one db/pool [sql:project-file user id])
|
||||||
(p/then' decode-row)))
|
(p/then' decode-row)))
|
||||||
|
|
||||||
|
|
||||||
;; --- Helpers
|
;; --- Helpers
|
||||||
|
|
||||||
(defn decode-row
|
(defn decode-row
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
|
|
||||||
;; --- Query: Projects
|
;; --- Query: Projects
|
||||||
|
|
||||||
(su/defsql sql:projects
|
(su/defstr sql:projects
|
||||||
"select p.*
|
"select p.*
|
||||||
from project_users as pu
|
from project_users as pu
|
||||||
inner join projects as p on (p.id = pu.project_id)
|
inner join projects as p on (p.id = pu.project_id)
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
;; (log/info "service" type "processed in" elapsed)
|
;; (log/info "service" type "processed in" elapsed)
|
||||||
;; data))})
|
;; data))})
|
||||||
|
|
||||||
(defmacro defsql
|
(defmacro defstr
|
||||||
[sym str]
|
[sym str]
|
||||||
`(def ~sym (str/istr ~str)))
|
`(def ~sym (str/istr ~str)))
|
||||||
|
|
||||||
|
|
|
@ -42,11 +42,11 @@
|
||||||
(t/is (= (:name data) (get-in out [:result :name])))
|
(t/is (= (:name data) (get-in out [:result :name])))
|
||||||
#_(t/is (= (:project-id data) (get-in out [:result :project-id])))))
|
#_(t/is (= (:project-id data) (get-in out [:result :project-id])))))
|
||||||
|
|
||||||
(t/deftest mutation-update-project-file
|
(t/deftest mutation-rename-project-file
|
||||||
(let [user @(th/create-user db/pool 1)
|
(let [user @(th/create-user db/pool 1)
|
||||||
proj @(th/create-project db/pool (:id user) 1)
|
proj @(th/create-project db/pool (:id user) 1)
|
||||||
pf @(th/create-project-file db/pool (:id user) (:id proj) 1)
|
pf @(th/create-project-file db/pool (:id user) (:id proj) 1)
|
||||||
data {::sm/type :update-project-file
|
data {::sm/type :rename-project-file
|
||||||
:id (:id pf)
|
:id (:id pf)
|
||||||
:name "new file name"
|
:name "new file name"
|
||||||
:user (:id user)}
|
:user (:id user)}
|
||||||
|
|
|
@ -33,10 +33,10 @@
|
||||||
(t/is (nil? (:error out)))
|
(t/is (nil? (:error out)))
|
||||||
(t/is (= (:name data) (get-in out [:result :name])))))
|
(t/is (= (:name data) (get-in out [:result :name])))))
|
||||||
|
|
||||||
(t/deftest mutation-update-project
|
(t/deftest mutation-rename-project
|
||||||
(let [user @(th/create-user db/pool 1)
|
(let [user @(th/create-user db/pool 1)
|
||||||
proj @(th/create-project db/pool (:id user) 1)
|
proj @(th/create-project db/pool (:id user) 1)
|
||||||
data {::sm/type :update-project
|
data {::sm/type :rename-project
|
||||||
:id (:id proj)
|
:id (:id proj)
|
||||||
:name "test project mod"
|
:name "test project mod"
|
||||||
:user (:id user)}
|
:user (:id user)}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue