mirror of
https://github.com/penpot/penpot.git
synced 2025-06-12 16:51:40 +02:00
59 lines
1.6 KiB
Clojure
59 lines
1.6 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) KALEIDOS INC
|
|
|
|
(ns app.rpc.queries.projects
|
|
(:require
|
|
[app.common.spec :as us]
|
|
[app.db :as db]
|
|
[app.rpc.commands.projects :as projects]
|
|
[app.rpc.commands.teams :as teams]
|
|
[app.rpc.doc :as-alias doc]
|
|
[app.util.services :as sv]
|
|
[clojure.spec.alpha :as s]))
|
|
|
|
;; --- Query: Projects
|
|
|
|
(s/def ::team-id ::us/uuid)
|
|
(s/def ::profile-id ::us/uuid)
|
|
(s/def ::projects
|
|
(s/keys :req-un [::profile-id ::team-id]))
|
|
|
|
(sv/defmethod ::projects
|
|
{::doc/added "1.0"
|
|
::doc/deprecated "1.18"}
|
|
[{:keys [pool]} {:keys [profile-id team-id]}]
|
|
(with-open [conn (db/open pool)]
|
|
(teams/check-read-permissions! conn profile-id team-id)
|
|
(projects/get-projects conn profile-id team-id)))
|
|
|
|
;; --- Query: All projects
|
|
|
|
(s/def ::profile-id ::us/uuid)
|
|
(s/def ::all-projects
|
|
(s/keys :req-un [::profile-id]))
|
|
|
|
(sv/defmethod ::all-projects
|
|
{::doc/added "1.0"
|
|
::doc/deprecated "1.18"}
|
|
[{:keys [pool]} {:keys [profile-id]}]
|
|
(with-open [conn (db/open pool)]
|
|
(projects/get-all-projects conn profile-id)))
|
|
|
|
;; --- Query: Project
|
|
|
|
(s/def ::id ::us/uuid)
|
|
(s/def ::project
|
|
(s/keys :req-un [::profile-id ::id]))
|
|
|
|
(sv/defmethod ::project
|
|
{::doc/added "1.0"
|
|
::doc/deprecated "1.18"}
|
|
[{:keys [pool]} {:keys [profile-id id]}]
|
|
(with-open [conn (db/open pool)]
|
|
(let [project (db/get-by-id conn :project id)]
|
|
(projects/check-read-permissions! conn profile-id id)
|
|
project)))
|
|
|