From 599f3814bac1a8a905d6d077a9d04857e955ef15 Mon Sep 17 00:00:00 2001 From: Matt Rider Date: Mon, 25 Mar 2019 20:10:49 -0300 Subject: [PATCH] Create users with default socialMedia, append url - It was such that every time a user updates their social media it would replace the existing url with the one to be added. creating a user with a default empty array means that we can concatenate the url to the array and not have a complicated cypher query to account for an intial NULL value. Co-authored-by: Joseph Ngugi --- backend/src/resolvers/user_management.js | 9 +++++---- backend/src/schema.graphql | 2 +- backend/src/seed/factories/users.js | 4 +++- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/backend/src/resolvers/user_management.js b/backend/src/resolvers/user_management.js index d77b67c82..814aee3fb 100644 --- a/backend/src/resolvers/user_management.js +++ b/backend/src/resolvers/user_management.js @@ -32,7 +32,7 @@ export default { const session = driver.session() const result = await session.run( 'MATCH (user:User {email: $userEmail}) ' + - 'RETURN user {.id, .slug, .name, .avatar, .email, .password, .role, .disabled} as user LIMIT 1', + 'RETURN user {.id, .slug, .name, .avatar, .email, .password, .role, .disabled} as user LIMIT 1', { userEmail: email } @@ -107,8 +107,9 @@ export default { const { email } = user const result = await session.run( `MATCH (user:User {email: $userEmail}) - SET user.socialMedia = [$url] - RETURN user {.socialMedia}`, + SET user.socialMedia = user.socialMedia + $url + RETURN user {.socialMedia} + `, { userEmail: email, url @@ -118,7 +119,7 @@ export default { const [currentUser] = result.records.map(record => { return record.get('user') }) - return !!currentUser.socialMedia + return currentUser.socialMedia } } } diff --git a/backend/src/schema.graphql b/backend/src/schema.graphql index 6d757cb41..e4530c435 100644 --- a/backend/src/schema.graphql +++ b/backend/src/schema.graphql @@ -26,7 +26,7 @@ type Mutation { disable(id: ID!): ID enable(id: ID!): ID reward(fromBadgeId: ID!, toUserId: ID!): ID - addSocialMedia(url: String!): Boolean! + addSocialMedia(url: String!): [String]! unreward(fromBadgeId: ID!, toUserId: ID!): ID "Shout the given Type and ID" shout(id: ID!, type: ShoutTypeEnum): Boolean! @cypher(statement: """ diff --git a/backend/src/seed/factories/users.js b/backend/src/seed/factories/users.js index 491b3f9e1..b6b2384b7 100644 --- a/backend/src/seed/factories/users.js +++ b/backend/src/seed/factories/users.js @@ -25,7 +25,8 @@ export default function create (params) { about: "${about}", role: ${role}, disabled: ${disabled}, - deleted: ${deleted} + deleted: ${deleted}, + socialMedia: [] ) { id name @@ -34,6 +35,7 @@ export default function create (params) { role deleted disabled + socialMedia } } `