mirror of
https://github.com/penpot/penpot.git
synced 2025-05-12 01:46:37 +02:00
♻️ Refactor services (for add the project-file concept.
And fix many tests.
This commit is contained in:
parent
af62d949d8
commit
183f0a5400
40 changed files with 1279 additions and 1006 deletions
|
@ -13,6 +13,8 @@
|
|||
[uxbox.util.blob :as blob]
|
||||
[uxbox.util.spec :as us]))
|
||||
|
||||
(declare decode-row)
|
||||
|
||||
;; --- Helpers & Specs
|
||||
|
||||
(s/def ::id ::us/uuid)
|
||||
|
@ -22,19 +24,26 @@
|
|||
|
||||
;; --- Query: Projects
|
||||
|
||||
;; (def ^:private projects-sql
|
||||
;; "select distinct on (p.id, p.created_at)
|
||||
;; p.*,
|
||||
;; array_agg(pg.id) over (
|
||||
;; partition by p.id
|
||||
;; order by pg.created_at
|
||||
;; range between unbounded preceding and unbounded following
|
||||
;; ) as pages
|
||||
;; from projects as p
|
||||
;; left join pages as pg
|
||||
;; on (pg.project_id = p.id)
|
||||
;; where p.user_id = $1
|
||||
;; order by p.created_at asc")
|
||||
|
||||
(def ^:private projects-sql
|
||||
"select distinct on (p.id, p.created_at)
|
||||
p.*,
|
||||
array_agg(pg.id) over (
|
||||
partition by p.id
|
||||
order by pg.created_at
|
||||
range between unbounded preceding and unbounded following
|
||||
) as pages
|
||||
from projects as p
|
||||
left join pages as pg
|
||||
on (pg.project_id = p.id)
|
||||
where p.user_id = $1
|
||||
order by p.created_at asc")
|
||||
"select p.*
|
||||
from project_users as pu
|
||||
inner join projects as p on (p.id = pu.project_id)
|
||||
where pu.can_edit = true
|
||||
and pu.user_id = $1;")
|
||||
|
||||
(s/def ::projects
|
||||
(s/keys :req-un [::user]))
|
||||
|
@ -42,5 +51,12 @@
|
|||
(sq/defquery ::projects
|
||||
[{:keys [user] :as params}]
|
||||
(-> (db/query db/pool [projects-sql user])
|
||||
(p/then (fn [rows]
|
||||
(mapv #(update % :pages vec) rows)))))
|
||||
(p/then' (partial mapv decode-row))))
|
||||
|
||||
;; --- Helpers
|
||||
|
||||
(defn decode-row
|
||||
[{:keys [metadata] :as row}]
|
||||
(when row
|
||||
(cond-> row
|
||||
metadata (assoc :metadata (blob/decode metadata)))))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue