mirror of
https://github.com/penpot/penpot.git
synced 2025-08-07 14:38:33 +02:00
✨ Add get-owned-teams rpc method
This commit is contained in:
parent
066b252522
commit
927ee9e55e
2 changed files with 48 additions and 12 deletions
|
@ -114,18 +114,6 @@
|
||||||
|
|
||||||
;; --- Query: Teams
|
;; --- Query: Teams
|
||||||
|
|
||||||
(declare get-teams)
|
|
||||||
|
|
||||||
(def ^:private schema:get-teams
|
|
||||||
[:map {:title "get-teams"}])
|
|
||||||
|
|
||||||
(sv/defmethod ::get-teams
|
|
||||||
{::doc/added "1.17"
|
|
||||||
::sm/params schema:get-teams}
|
|
||||||
[{:keys [::db/pool] :as cfg} {:keys [::rpc/profile-id] :as params}]
|
|
||||||
(dm/with-open [conn (db/open pool)]
|
|
||||||
(get-teams conn profile-id)))
|
|
||||||
|
|
||||||
(def sql:get-teams-with-permissions
|
(def sql:get-teams-with-permissions
|
||||||
"SELECT t.*,
|
"SELECT t.*,
|
||||||
tp.is_owner,
|
tp.is_owner,
|
||||||
|
@ -191,6 +179,37 @@
|
||||||
(->> (db/exec! conn [sql (:default-team-id profile) profile-id])
|
(->> (db/exec! conn [sql (:default-team-id profile) profile-id])
|
||||||
(into [] xform:process-teams))))
|
(into [] xform:process-teams))))
|
||||||
|
|
||||||
|
(def ^:private schema:get-teams
|
||||||
|
[:map {:title "get-teams"}])
|
||||||
|
|
||||||
|
(sv/defmethod ::get-teams
|
||||||
|
{::doc/added "1.17"
|
||||||
|
::sm/params schema:get-teams}
|
||||||
|
[{:keys [::db/pool] :as cfg} {:keys [::rpc/profile-id] :as params}]
|
||||||
|
(dm/with-open [conn (db/open pool)]
|
||||||
|
(get-teams conn profile-id)))
|
||||||
|
|
||||||
|
(def ^:private sql:get-owned-teams
|
||||||
|
"SELECT t.id, t.name,
|
||||||
|
(SELECT count(*) FROM team_profile_rel WHERE team_id=t.id) AS total_members
|
||||||
|
FROM team AS t
|
||||||
|
JOIN team_profile_rel AS tpr ON (tpr.team_id = t.id)
|
||||||
|
WHERE t.is_default IS false
|
||||||
|
AND tpr.is_owner IS true
|
||||||
|
AND tpr.profile_id = ?
|
||||||
|
AND t.deleted_at IS NULL")
|
||||||
|
|
||||||
|
(defn- get-owned-teams
|
||||||
|
[cfg profile-id]
|
||||||
|
(->> (db/exec! cfg [sql:get-owned-teams profile-id])
|
||||||
|
(into [] (map decode-row))))
|
||||||
|
|
||||||
|
(sv/defmethod ::get-owned-teams
|
||||||
|
{::doc/added "2.8.0"
|
||||||
|
::sm/params schema:get-teams}
|
||||||
|
[cfg {:keys [::rpc/profile-id]}]
|
||||||
|
(get-owned-teams cfg profile-id))
|
||||||
|
|
||||||
;; --- Query: Team (by ID)
|
;; --- Query: Team (by ID)
|
||||||
|
|
||||||
(declare get-team)
|
(declare get-team)
|
||||||
|
|
|
@ -449,6 +449,23 @@
|
||||||
(t/is (nil? res)))))
|
(t/is (nil? res)))))
|
||||||
|
|
||||||
|
|
||||||
|
(t/deftest get-owned-teams
|
||||||
|
(let [profile1 (th/create-profile* 1 {:is-active true})
|
||||||
|
profile2 (th/create-profile* 2 {:is-active true})
|
||||||
|
team1 (th/create-team* 1 {:profile-id (:id profile1)})
|
||||||
|
team2 (th/create-team* 2 {:profile-id (:id profile2)})
|
||||||
|
|
||||||
|
params {::th/type :get-owned-teams
|
||||||
|
::rpc/profile-id (:id profile1)}
|
||||||
|
out (th/command! params)]
|
||||||
|
|
||||||
|
(t/is (th/success? out))
|
||||||
|
(let [result (:result out)]
|
||||||
|
(t/is (= 1 (count result)))
|
||||||
|
(t/is (= (:id team1) (-> result first :id)))
|
||||||
|
(t/is (not= (:default-team-id profile1) (-> result first :id))))))
|
||||||
|
|
||||||
|
|
||||||
(t/deftest team-deletion-1
|
(t/deftest team-deletion-1
|
||||||
(let [profile1 (th/create-profile* 1 {:is-active true})
|
(let [profile1 (th/create-profile* 1 {:is-active true})
|
||||||
team (th/create-team* 1 {:profile-id (:id profile1)})
|
team (th/create-team* 1 {:profile-id (:id profile1)})
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue