0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-02-10 09:08:31 -05:00

Minor improvements on project and files renaming.

This commit is contained in:
Andrey Antukh 2019-12-11 14:26:19 +01:00
parent 44e120d382
commit e3cd0d132b
7 changed files with 52 additions and 44 deletions

View file

@ -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))))

View file

@ -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

View file

@ -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

View file

@ -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)

View file

@ -25,7 +25,7 @@
;; (log/info "service" type "processed in" elapsed)
;; data))})
(defmacro defsql
(defmacro defstr
[sym str]
`(def ~sym (str/istr ~str)))

View file

@ -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)}

View file

@ -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)}