mirror of
https://github.com/penpot/penpot.git
synced 2025-05-11 00:06:37 +02:00
- also removes docker files from source directories - minor assets reorganization on back (make it more production ready)
73 lines
2.2 KiB
Clojure
73 lines
2.2 KiB
Clojure
;; This Source Code Form is subject to the terms of the Mozilla Public
|
|
;; License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
;;
|
|
;; Copyright (c) 2016 Andrey Antukh <niwi@niwi.nz>
|
|
|
|
(ns uxbox.frontend.projects
|
|
(:require [clojure.spec.alpha :as s]
|
|
[promesa.core :as p]
|
|
[catacumba.http :as http]
|
|
[uxbox.util.spec :as us]
|
|
[uxbox.services :as sv]
|
|
[uxbox.util.response :refer (rsp)]
|
|
[uxbox.util.uuid :as uuid]))
|
|
|
|
;; --- List Projects
|
|
|
|
(defn list-projects
|
|
[{user :identity}]
|
|
(let [message {:user user :type :list-projects}]
|
|
(->> (sv/query message)
|
|
(p/map #(http/ok (rsp %))))))
|
|
|
|
;; --- Create Projects
|
|
|
|
(s/def ::create-project
|
|
(s/keys :req-un [::us/name] :opt-un [::us/id]))
|
|
|
|
(defn create-project
|
|
[{user :identity data :data}]
|
|
(let [data (us/conform ::create-project data)
|
|
message (assoc data
|
|
:type :create-project
|
|
:user user)]
|
|
(->> (sv/novelty message)
|
|
(p/map (fn [result]
|
|
(let [loc (str "/api/projects/" (:id result))]
|
|
(http/created loc (rsp result))))))))
|
|
|
|
;; --- Update Project
|
|
|
|
(s/def ::update-project
|
|
(s/keys :req-un [::us/name ::us/version]))
|
|
|
|
(defn update-project
|
|
[{user :identity params :route-params data :data}]
|
|
(let [data (us/conform ::update-project data)
|
|
message (assoc data
|
|
:id (uuid/from-string (:id params))
|
|
:type :update-project
|
|
:user user)]
|
|
(-> (sv/novelty message)
|
|
(p/then #(http/ok (rsp %))))))
|
|
|
|
;; --- Delete Project
|
|
|
|
(defn delete-project
|
|
[{user :identity params :route-params}]
|
|
(let [message {:id (uuid/from-string (:id params))
|
|
:type :delete-project
|
|
:user user}]
|
|
(-> (sv/novelty message)
|
|
(p/then (fn [v] (http/no-content))))))
|
|
|
|
|
|
;; --- Retrieve project
|
|
|
|
(defn retrieve-project-by-share-token
|
|
[{params :route-params}]
|
|
(let [message {:token (:token params)
|
|
:type :retrieve-project-by-share-token}]
|
|
(->> (sv/query message)
|
|
(p/map #(http/ok (rsp %))))))
|