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,36 +11,41 @@ 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
if (user.deletedAt) dbUser.deletedAt = user.deletedAt if (user.deletedAt) dbUser.deletedAt = user.deletedAt
await dbUser.save() await dbUser.save()
} }
if (user.isAdmin) { if (user.isAdmin) {
const admin = new ServerUser() const admin = new ServerUser()
admin.username = dbUser.firstName admin.username = dbUser.firstName
admin.password = 'please_refactor' admin.password = 'please_refactor'
admin.email = dbUser.email admin.email = dbUser.email
admin.role = 'admin' admin.role = 'admin'
admin.activated = 1 admin.activated = 1
admin.lastLogin = new Date() admin.lastLogin = new Date()
admin.created = dbUser.createdAt admin.created = dbUser.createdAt
admin.modified = dbUser.createdAt admin.modified = dbUser.createdAt
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
}
} }
` `