Skip to content

Commit 12a1a5d

Browse files
committed
feat: add create and update user mutations to User service
1 parent 27c3563 commit 12a1a5d

1 file changed

Lines changed: 41 additions & 1 deletion

File tree

src/packages/ce/src/user/services/User.service.ts

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import {
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";
3337
import {GraphqlClient} from "@core/util/graphql-client";
38+
import createMutation from "./mutations/User.create.mutation.graphql";
39+
import updateMutation from "./mutations/User.update.mutation.graphql";
3440
import loginMutation from "./mutations/User.login.mutation.graphql";
3541
import logoutMutation from "./mutations/User.logout.mutation.graphql";
3642
import 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

Comments
 (0)