createUser returns User object, adopt mutations, reduce db calls in seed

This commit is contained in:
Moriz Wahl 2022-03-17 08:40:02 +01:00
parent 2bdd508679
commit 1182b94075
4 changed files with 35 additions and 26 deletions

View File

@ -313,10 +313,10 @@ export class UserResolver {
} }
@Authorized([RIGHTS.CREATE_USER]) @Authorized([RIGHTS.CREATE_USER])
@Mutation(() => String) @Mutation(() => User)
async createUser( async createUser(
@Args() { email, firstName, lastName, language, publisherId }: CreateUserArgs, @Args() { email, firstName, lastName, language, publisherId }: CreateUserArgs,
): Promise<string> { ): Promise<User> {
// TODO: wrong default value (should be null), how does graphql work here? Is it an required field? // TODO: wrong default value (should be null), how does graphql work here? Is it an required field?
// default int publisher_id = 0; // default int publisher_id = 0;
@ -396,7 +396,7 @@ export class UserResolver {
} finally { } finally {
await queryRunner.release() await queryRunner.release()
} }
return 'success' return new User(dbUser)
} }
// THis is used by the admin only - should we move it to the admin resolver? // THis is used by the admin only - should we move it to the admin resolver?

View File

@ -11,19 +11,23 @@ export const userFactory = async (
): Promise<void> => { ): Promise<void> => {
const { mutate } = client const { mutate } = client
await mutate({ mutation: createUser, variables: user }) const {
let dbUser = await User.findOneOrFail({ where: { email: user.email } }) data: {
createUser: { id },
},
} = await mutate({ mutation: createUser, variables: user })
if (user.emailChecked) { if (user.emailChecked) {
const optin = await LoginEmailOptIn.findOneOrFail({ where: { userId: dbUser.id } }) const optin = await LoginEmailOptIn.findOneOrFail({ userId: id })
await mutate({ await mutate({
mutation: setPassword, mutation: setPassword,
variables: { password: 'Aa12345_', code: optin.verificationCode }, variables: { password: 'Aa12345_', code: optin.verificationCode },
}) })
} }
// refetch data if (user.createdAt || user.deletedAt || user.isAdmin) {
dbUser = await User.findOneOrFail({ where: { email: user.email } }) // get user from database
const dbUser = await User.findOneOrFail({ id })
if (user.createdAt || user.deletedAt) { if (user.createdAt || user.deletedAt) {
if (user.createdAt) dbUser.createdAt = user.createdAt if (user.createdAt) dbUser.createdAt = user.createdAt
@ -44,3 +48,4 @@ export const userFactory = async (
await admin.save() await admin.save()
} }
} }
}

View File

@ -52,7 +52,9 @@ export const createUser = gql`
lastName: $lastName lastName: $lastName
language: $language language: $language
publisherId: $publisherId publisherId: $publisherId
) ) {
id
}
} }
` `

View File

@ -52,7 +52,9 @@ export const createUser = gql`
lastName: $lastName lastName: $lastName
language: $language language: $language
publisherId: $publisherId publisherId: $publisherId
) ) {
id
}
} }
` `