From 2976fcbe560d3e462fcb048685a7c5af06b74b64 Mon Sep 17 00:00:00 2001 From: Barry Low Date: Sat, 1 Sep 2018 11:36:10 -0700 Subject: [PATCH] Debug API: remove cascading member deletion --- .../aateam-api/database/datamodel.graphql | 2 +- packages/aateam-api/src/directives.js | 32 ++++++++++++++++++- packages/aateam-api/src/index.js | 4 +-- packages/aateam-api/src/schema.graphql | 2 +- packages/aateam-client/src/actions/index.js | 3 ++ .../src/modules/team/actions/index.js | 9 +++--- .../team/graphql/DeleteTeamMutation.js | 4 +-- 7 files changed, 44 insertions(+), 12 deletions(-) diff --git a/packages/aateam-api/database/datamodel.graphql b/packages/aateam-api/database/datamodel.graphql index 8d353546c..b9cf73559 100644 --- a/packages/aateam-api/database/datamodel.graphql +++ b/packages/aateam-api/database/datamodel.graphql @@ -9,7 +9,7 @@ type Team { createdAt: DateTime! name: String! @unique slug: String! @unique - owner: Member! @relation (name: "TeamOwner", onDelete: CASCADE) + owner: Member! @relation (name: "TeamOwner", onDelete: SET_NULL) profile: TeamProfile members: [TeamMembers!]! @relation (name: "TeamMembers", onDelete: SET_NULL) anonymous: Boolean! @default(value: true) diff --git a/packages/aateam-api/src/directives.js b/packages/aateam-api/src/directives.js index 2888c65a5..3764dbbf3 100644 --- a/packages/aateam-api/src/directives.js +++ b/packages/aateam-api/src/directives.js @@ -1,6 +1,6 @@ const _get = require('lodash.get') const validateAndParseIdToken = require('./helpers/validateAndParseIdToken') -const createPrismaMember = require('./index') +//const createPrismaMember = require('./index') const memberLocationOnContext = 'request.member' const bearerAccessToken = 'request.headers.authorization' @@ -8,6 +8,36 @@ const bearerAccessToken = 'request.headers.authorization' const ctxMember = ctx => _get(ctx, memberLocationOnContext) const ctxToken = ctx => _get(ctx, bearerAccessToken) +const createPrismaMember = async function (ctx, info, idToken) { + console.log('createPrismaMember', idToken) + const member = await ctx.db.mutation.upsertMember({ + where: { + auth0id: idToken.sub, + }, + create: { + auth0id: idToken.sub, + nickname: idToken.nickname, + profile: { + create: { + email: idToken.email, + avatar: idToken.picture + } + } + }, + update: { + auth0id: idToken.sub, + nickname: idToken.nickname, + profile: { + update: { + email: idToken.email, + avatar: idToken.picture + } + } + } + }, info) + return member +} + const isLoggedIn = async ctx => { let member = ctxMember(ctx, memberLocationOnContext) let token = ctxToken(ctx, bearerAccessToken) diff --git a/packages/aateam-api/src/index.js b/packages/aateam-api/src/index.js index 6ef516632..49f95c221 100644 --- a/packages/aateam-api/src/index.js +++ b/packages/aateam-api/src/index.js @@ -165,7 +165,7 @@ const resolvers = { }, info) }, async deleteTeam(parent, { id, owner }, ctx, info) { - ctx.db.mutation.deleteTeam({ where: { id, member: {where: { auth0id: owner } } } }, owner) + ctx.db.mutation.deleteTeam({ where: { id } }, info) } } } @@ -234,4 +234,4 @@ const options = { server.start(options, () => console.log(`Server is running on http://localhost:4000${server.options.endpoint}`)) -module.exports= { createPrismaMember } +module.exports= { createPrismaMember: createPrismaMember } diff --git a/packages/aateam-api/src/schema.graphql b/packages/aateam-api/src/schema.graphql index 56c7b07b2..977277570 100644 --- a/packages/aateam-api/src/schema.graphql +++ b/packages/aateam-api/src/schema.graphql @@ -18,7 +18,7 @@ type Query { type Mutation { authenticate(idToken: String!): Member createTeam(name: String!, slug: String, owner: String): Team @isAuthenticated - deleteTeam(id: ID!, owner: String!): Team @isOwnerOrHasRole(type: "Member", roles: ["OWNER"]) + deleteTeam(id: ID!): Team @isOwnerOrHasRole(type: "Member", roles: ["OWNER"]) updateProfile(data: MemberProfileInput): Member @isAuthenticated } diff --git a/packages/aateam-client/src/actions/index.js b/packages/aateam-client/src/actions/index.js index a82841208..badb69be3 100644 --- a/packages/aateam-client/src/actions/index.js +++ b/packages/aateam-client/src/actions/index.js @@ -51,6 +51,9 @@ export const actions = { } } }, + updateTeamView: () => [ + action('toggleModal', '') + ], nav, team, algobot, diff --git a/packages/aateam-client/src/modules/team/actions/index.js b/packages/aateam-client/src/modules/team/actions/index.js index 81d17743a..fe7ccfc68 100644 --- a/packages/aateam-client/src/modules/team/actions/index.js +++ b/packages/aateam-client/src/modules/team/actions/index.js @@ -135,8 +135,7 @@ export const team = { addTeamSuccess: result => [ action('form', { form: 'addTeamSuccess', message: 'Team Added!' }), action('profile', result), - action('createTeam.input', ''), - action('toggleModal', '') + action('createTeam.input', '') ], toggleModal: form => (state, actions) => { return { @@ -178,11 +177,11 @@ export const team = { }), action('deleteTeamSubmit', id) ], - deleteTeamSubmit: ({id, owner}) => async (state, actions) => { - console.log('deleteTeamSubmit: ', id, owner) + deleteTeamSubmit: ({ id }) => async (state, actions) => { + console.log('deleteTeamSubmit: ', id) const result = await client.mutate({ mutation: DeleteTeamMutation, - variables: { id: id, owner: owner }, + variables: { id: id }, options: { update: (proxy, { data: { getTeamByOwner } }) => { const data = proxy.readQuery({ GetTeamQuery }) diff --git a/packages/aateam-client/src/modules/team/graphql/DeleteTeamMutation.js b/packages/aateam-client/src/modules/team/graphql/DeleteTeamMutation.js index 1540cc3e9..91723348d 100644 --- a/packages/aateam-client/src/modules/team/graphql/DeleteTeamMutation.js +++ b/packages/aateam-client/src/modules/team/graphql/DeleteTeamMutation.js @@ -2,8 +2,8 @@ import gql from 'graphql-tag' export const DeleteTeamMutation = gql` - mutation deleteTeam($id: ID!, $owner: String!) { - deleteTeam(id: $id, owner: $owner) { + mutation deleteTeam($id: ID!) { + deleteTeam(id: $id) { id } }