mirror of
https://github.com/penpot/penpot.git
synced 2025-05-17 18:46:12 +02:00
♻️ Major refactor of page data structure.
In preparation to future collaborative edition.
This commit is contained in:
parent
8c4bdc3f31
commit
af62d949d8
33 changed files with 1025 additions and 1124 deletions
|
@ -72,14 +72,16 @@
|
|||
(defn create-page
|
||||
[conn [pjid paid uid]]
|
||||
(println "create page" paid "(for project=" pjid ", user=" uid ")")
|
||||
(let [data {:shapes [{:id (mk-uuid "canvas" 1)
|
||||
:name "Canvas-1"
|
||||
:type :canvas
|
||||
:page (mk-uuid "page" pjid paid uid)
|
||||
:x1 200
|
||||
:y1 200
|
||||
:x2 1224
|
||||
:y2 968}]}
|
||||
(let [canvas {:id (mk-uuid "canvas" 1)
|
||||
:name "Canvas-1"
|
||||
:type :canvas
|
||||
:x1 200
|
||||
:y1 200
|
||||
:x2 1224
|
||||
:y2 968}
|
||||
data {:shapes []
|
||||
:canvas [(:id canvas)]
|
||||
:shapes-by-id {(:id canvas) canvas}}
|
||||
data (blob/encode data)
|
||||
mdata (blob/encode {})]
|
||||
(p/do!
|
||||
|
|
|
@ -42,7 +42,7 @@
|
|||
(let [data (:body-params req)
|
||||
user-agent (get-in req [:headers "user-agent"])]
|
||||
(-> (sm/handle (assoc data ::sm/type :login))
|
||||
(p/then #(session/create % user-agent))
|
||||
(p/then #(session/create (:id %) user-agent))
|
||||
(p/then' (fn [token]
|
||||
{:status 204
|
||||
:cookies {"auth-token" {:value token}}
|
||||
|
|
|
@ -30,8 +30,6 @@
|
|||
:opt-un [::scope]))
|
||||
|
||||
(sm/defmutation ::login
|
||||
{:doc "User login"
|
||||
:spec ::login-params}
|
||||
[{:keys [username password scope] :as params}]
|
||||
(letfn [(check-password [user password]
|
||||
(hashers/check password (:password user)))
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
(s/def ::user ::us/uuid)
|
||||
(s/def ::project-id ::us/uuid)
|
||||
(s/def ::metadata any?)
|
||||
(s/def ::ordering ::us/number)
|
||||
|
||||
;; --- Mutation: Create Page
|
||||
|
||||
|
@ -41,14 +42,15 @@
|
|||
(create-page db/pool params))
|
||||
|
||||
(defn create-page
|
||||
[conn {:keys [id user project-id name data metadata] :as params}]
|
||||
(let [sql "insert into pages (id, user_id, project_id, name, data, metadata, version)
|
||||
values ($1, $2, $3, $4, $5, $6, 0)
|
||||
[conn {:keys [id user project-id name ordering data metadata] :as params}]
|
||||
(let [sql "insert into pages (id, user_id, project_id, name,
|
||||
ordering, data, metadata, version)
|
||||
values ($1, $2, $3, $4, $5, $6, $7, 0)
|
||||
returning *"
|
||||
id (or id (uuid/next))
|
||||
data (blob/encode data)
|
||||
mdata (blob/encode metadata)]
|
||||
(-> (db/query-one db/pool [sql id user project-id name data mdata])
|
||||
(-> (db/query-one db/pool [sql id user project-id name ordering data mdata])
|
||||
(p/then' decode-row))))
|
||||
|
||||
;; --- Mutation: Update Page
|
||||
|
@ -99,6 +101,21 @@
|
|||
(update-history conn params)
|
||||
(select-keys params [:id :version])))))))))
|
||||
|
||||
;; --- Mutation: Rename Page
|
||||
|
||||
(s/def ::rename-page
|
||||
(s/keys :req-un [::id ::name ::user]))
|
||||
|
||||
(sm/defmutation ::rename-page
|
||||
[{:keys [id name user]}]
|
||||
(let [sql "update pages
|
||||
set name = $3
|
||||
where id = $1
|
||||
and user_id = $2
|
||||
and deleted_at is null"]
|
||||
(-> (db/query-one db/pool [sql id user name])
|
||||
(p/then su/constantly-nil))))
|
||||
|
||||
;; --- Mutation: Update Page Metadata
|
||||
|
||||
(s/def ::update-page-metadata
|
||||
|
|
|
@ -30,8 +30,6 @@
|
|||
(s/keys :req-un [::user ::name]
|
||||
:opt-un [::id]))
|
||||
|
||||
;; TODO: create role on project creation (maybe in DB?)
|
||||
|
||||
(sm/defmutation ::create-project
|
||||
[{:keys [id user name] :as params}]
|
||||
(let [id (or id (uuid/next))
|
||||
|
@ -51,9 +49,7 @@
|
|||
(s/def ::update-project
|
||||
(s/keys :req-un [::user ::name ::id]))
|
||||
|
||||
(sm/defmutation :update-project
|
||||
{:doc "Update project."
|
||||
:spec ::update-project}
|
||||
(sm/defmutation ::update-project
|
||||
[{:keys [id name user] :as params}]
|
||||
(let [sql "update projects
|
||||
set name = $3
|
||||
|
@ -68,9 +64,7 @@
|
|||
(s/def ::delete-project
|
||||
(s/keys :req-un [::id ::user]))
|
||||
|
||||
(sm/defmutation :delete-project
|
||||
{:doc "Delete project"
|
||||
:spec ::delete-project}
|
||||
(sm/defmutation ::delete-project
|
||||
[{:keys [id user] :as params}]
|
||||
(let [sql "update projects
|
||||
set deleted_at = clock_timestamp()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue