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