33 Mutation ,
44 Query ,
55 User ,
6+ UsersCreateInput ,
7+ UsersCreatePayload ,
68 UsersEmailVerificationInput ,
79 UsersEmailVerificationPayload ,
810 UsersIdentityLinkInput ,
@@ -28,9 +30,13 @@ import {
2830 UsersPasswordResetRequestInput ,
2931 UsersPasswordResetRequestPayload ,
3032 UsersRegisterInput ,
31- UsersRegisterPayload
33+ UsersRegisterPayload ,
34+ UsersUpdateInput ,
35+ UsersUpdatePayload
3236} from "@code0-tech/sagittarius-graphql-types" ;
3337import { GraphqlClient } from "@core/util/graphql-client" ;
38+ import createMutation from "./mutations/User.create.mutation.graphql" ;
39+ import updateMutation from "./mutations/User.update.mutation.graphql" ;
3440import loginMutation from "./mutations/User.login.mutation.graphql" ;
3541import logoutMutation from "./mutations/User.logout.mutation.graphql" ;
3642import registerMutation from "./mutations/User.register.mutation.graphql" ;
@@ -119,6 +125,40 @@ export class UserService extends ReactiveArrayService<User> {
119125 return user !== undefined ;
120126 }
121127
128+ async usersCreate ( payload : UsersCreateInput ) : Promise < UsersCreatePayload | undefined > {
129+ const result = await this . client . mutate < Mutation , UsersCreateInput > ( {
130+ mutation : createMutation ,
131+ variables : {
132+ ...payload
133+ }
134+ } )
135+
136+ if ( result . data && result . data . usersCreate && result . data . usersCreate . user && ! this . hasById ( result . data . usersCreate . user . id ) ) {
137+ this . add ( new View ( result . data . usersCreate . user ) )
138+ }
139+
140+ return result . data ?. usersCreate ?? undefined
141+ }
142+
143+ async usersUpdate ( payload : UsersUpdateInput ) : Promise < UsersUpdatePayload | undefined > {
144+ const result = await this . client . mutate < Mutation , UsersUpdateInput > ( {
145+ mutation : updateMutation ,
146+ variables : {
147+ ...payload
148+ }
149+ } )
150+
151+ if ( result . data && result . data . usersUpdate && result . data . usersUpdate . user ) {
152+ //TODO: dont use the result. Instead merge result and already existing data together
153+ const updatedUser = result . data . usersUpdate . user
154+ const index = super . values ( ) . findIndex ( user => user . id === updatedUser . id )
155+ if ( index >= 0 ) this . set ( index , new View ( updatedUser ) )
156+ else if ( ! this . hasById ( updatedUser . id ) ) this . add ( new View ( updatedUser ) )
157+ }
158+
159+ return result . data ?. usersUpdate ?? undefined
160+ }
161+
122162 async usersEmailVerification ( payload : UsersEmailVerificationInput ) : Promise < UsersEmailVerificationPayload | undefined > {
123163 const result = await this . client . mutate < Mutation , UsersEmailVerificationInput > ( {
124164 mutation : emailVerificationMutation ,
0 commit comments