1- import { DRoleDependencies , DNamespaceRoleReactiveService , ReactiveArrayStore , DNamespaceRoleView } from "@code0-tech/pictor"
21import {
3- NamespaceProject , NamespaceRole ,
2+ DNamespaceRoleReactiveService ,
3+ DNamespaceRoleView ,
4+ DRoleDependencies ,
5+ ReactiveArrayStore
6+ } from "@code0-tech/pictor"
7+ import {
8+ Mutation ,
9+ NamespaceRole ,
410 NamespacesRolesAssignAbilitiesInput ,
511 NamespacesRolesAssignAbilitiesPayload ,
612 NamespacesRolesAssignProjectsInput ,
@@ -13,6 +19,7 @@ import {
1319} from "@code0-tech/sagittarius-graphql-types"
1420import { GraphqlClient } from "@core/util/graphql-client" ;
1521import rolesQuery from "@edition/role/queries/Roles.query.graphql" ;
22+ import roleAssignAbilitiesMutation from "@edition/role/mutations/Role.assignAbilities.mutation.graphql" ;
1623
1724export class RoleService extends DNamespaceRoleReactiveService {
1825
@@ -63,15 +70,38 @@ export class RoleService extends DNamespaceRoleReactiveService {
6370 return role !== undefined
6471 }
6572
66- roleAssignAbilities ( payload : NamespacesRolesAssignAbilitiesInput ) : Promise < NamespacesRolesAssignAbilitiesPayload | undefined > {
67- throw new Error ( "Method not implemented." )
73+ async roleAssignAbilities ( payload : NamespacesRolesAssignAbilitiesInput ) : Promise < NamespacesRolesAssignAbilitiesPayload | undefined > {
74+ const result = await this . client . mutate < Mutation , NamespacesRolesAssignAbilitiesInput > ( {
75+ mutation : roleAssignAbilitiesMutation ,
76+ variables : {
77+ ...payload
78+ }
79+ } )
80+
81+ //TODO: should be done by a new query
82+ if ( result . data && result . data . namespacesRolesAssignAbilities ) {
83+ const currentRole = this . getById ( payload . roleId )
84+ const index = super . values ( ) . findIndex ( m => m . id === payload . roleId )
85+
86+ const newRole = new DNamespaceRoleView ( {
87+ ...currentRole ?. json ( ) ,
88+ abilities : payload . abilities
89+ } )
90+
91+ this . set ( index , newRole )
92+ }
93+
94+ return result . data ?. namespacesRolesAssignAbilities ?? undefined
6895 }
96+
6997 roleAssignProject ( payload : NamespacesRolesAssignProjectsInput ) : Promise < NamespacesRolesAssignProjectsPayload | undefined > {
7098 throw new Error ( "Method not implemented." )
7199 }
100+
72101 roleCreate ( payload : NamespacesRolesCreateInput ) : Promise < NamespacesRolesCreatePayload | undefined > {
73102 throw new Error ( "Method not implemented." )
74103 }
104+
75105 roleDelete ( payload : NamespacesRolesDeleteInput ) : Promise < NamespacesRolesDeletePayload | undefined > {
76106 throw new Error ( "Method not implemented." )
77107 }
0 commit comments