From 5ae5632ac588b087bc1d5d537142e324765d553a Mon Sep 17 00:00:00 2001 From: anatole <anatole.romon@polytechnique.edu> Date: Tue, 1 May 2018 12:03:47 +0200 Subject: [PATCH] changement des authors et recipients --- src/graphql/connectors/connectors.js | 22 +++----------- src/graphql/resolvers.js | 44 +++++++++++----------------- src/graphql/typeDefs/actions.js | 2 +- src/graphql/typeDefs/objects.js | 36 +++++++---------------- 4 files changed, 32 insertions(+), 72 deletions(-) diff --git a/src/graphql/connectors/connectors.js b/src/graphql/connectors/connectors.js index baea096..ed3a360 100644 --- a/src/graphql/connectors/connectors.js +++ b/src/graphql/connectors/connectors.js @@ -463,32 +463,18 @@ export async function visibleMessages(user, messageID){ } -export async function getMessageAuthor(user, messageID){ - let GroupAuthors = await getGroupsFromCallbacks(user, qb => { +export async function getMessageGroupAuthors(user, messageID){ + return getGroupsFromCallbacks(user, qb => { return qb.select({uid: 'group'}).from('group_message_relationships') .where('message', messageID).whereIn('status', ['host', 'publish']); }); - let authorObject = Object(); - if(GroupAuthors.length == 1) - authorObject.singleGroup = GroupAuthors[0]; - else - authorObject.multipleGroups = GroupAuthors; - - return authorObject; } -export async function getMessageRecipient(user, messageID){ - let GroupReciepients = await getGroupsFromCallbacks(user, qb => { +export async function getMessageGroupRecipients(user, messageID){ + return getGroupsFromCallbacks(user, qb => { return qb.select({uid: 'group'}).from('group_message_relationships') .where('message', messageID).where('status', 'recieve'); }); - let recipientObject = Object(); - if(GroupReciepients.length == 1) - recipientObject.singleGroup = GroupReciepients[0]; - else - recipientObject.multipleGroups = GroupReciepients; - - return recipientObject; } /** diff --git a/src/graphql/resolvers.js b/src/graphql/resolvers.js index b336be3..9715465 100644 --- a/src/graphql/resolvers.js +++ b/src/graphql/resolvers.js @@ -219,11 +219,11 @@ export const resolvers = { }, authors: async function (obj, args, context){ - return connectors.getMessageAuthor(context.user, obj.id); + return connectors.getMessageGroupAuthors(context.user, obj.id); }, - recipient: async function (obj, args, context){ - return connectors.getMessageRecipient(context.user, obj.id); + recipients: async function (obj, args, context){ + return connectors.getMessageGroupRecipients(context.user, obj.id); } }, @@ -247,41 +247,35 @@ export const resolvers = { }, authors: async function (obj, args, context){ - return connectors.getMessageAuthor(context.user, obj.id); + return connectors.getMessageGroupAuthors(context.user, obj.id); }, - recipient: async function (obj, args, context){ - return connectors.getMessageRecipient(context.user, obj.id); + recipients: async function (obj, args, context){ + return connectors.getMessageGroupRecipients(context.user, obj.id); } }, PrivatePost : { authors: async function(obj, args, context){ - return { - singleUser : await connectors.getUser(context.user, obj.author_uid, obj.author_db) - }; + return connectors.getUser(context.user, obj.author_uid, obj.author_db); + }, - recipient: async function(obj, args, context){ - return { - singleGroup : await connectors.getGroup(context.user, obj.recipient_uid) - }; + recipients: async function(obj, args, context){ + return connectors.getGroup(context.user, obj.recipient_uid); + } }, Question : { authors: async function(obj, args, context){ - return { - singleUser : await connectors.getUser(context.user, obj.author_uid, obj.author_db) - }; + return connectors.getUser(context.user, obj.author_uid, obj.author_db); }, - recipient: async function(obj, args, context){ - return { - singleGroup : await connectors.getGroup(context.user, obj.recipient_uid) - }; + recipients: async function(obj, args, context){ + return connectors.getGroup(context.user, obj.recipient_uid); }, forAnswer: function(obj, args, context){ @@ -292,15 +286,11 @@ export const resolvers = { Answer : { authors: async function(obj, args, context){ - return { - singleGroup : await connectors.getGroup(context.user, obj.author_uid) - }; + return connectors.getGroup(context.user, obj.author_uid); }, - recipient: async function(obj, args, context){ - return { - singleGroup : await connectors.getGroup(context.user, obj.recipient_uid) - }; + recipients: async function(obj, args, context){ + return connectors.getGroup(context.user, obj.recipient_uid); }, forQuestion: function(obj, args, context){ diff --git a/src/graphql/typeDefs/actions.js b/src/graphql/typeDefs/actions.js index b60fa65..7aadde4 100644 --- a/src/graphql/typeDefs/actions.js +++ b/src/graphql/typeDefs/actions.js @@ -52,7 +52,7 @@ const RootTypes = ` # Viewer Queries - test : Author + test : String } diff --git a/src/graphql/typeDefs/objects.js b/src/graphql/typeDefs/objects.js index 673466e..2bd52bf 100644 --- a/src/graphql/typeDefs/objects.js +++ b/src/graphql/typeDefs/objects.js @@ -101,19 +101,7 @@ const Message = ` # Les unions sont assez faibles dans GraphQL, # elles n'acceptent pas les listes ni les interfaces - # Créer un nouveau type est la meilleur solution que j'ai trouvé - type Author { - singleGroup: Group - multipleGroups: [Group] - singleUser: User - } - - type Recipient { - singleGroup: Group - multipleGroups: [Group] - } - # L'interface Message représente toute information que veut communiquer un groupe ou un user. # Par choix de paradigme, tout Message est adressé à un (ou des) groupe(s). # Les types implémentés sont divisés en deux : @@ -127,10 +115,6 @@ const Message = ` content: String createdAt: String! updatedAt: String! - - # Auteur(s) du message - authors: Author - recipient: Recipient } # Annonce publique effectuée par un ou plusieurs groupes. @@ -144,8 +128,8 @@ const Message = ` views: Int forEvent : Event - authors: Author - recipient: Recipient + authors: [Group] + recipients: [Group] } # Événements organisés par un ou plusieurs groupes. @@ -166,8 +150,8 @@ const Message = ` content: String asAnnouncement : Announcement - authors: Author - recipient: Recipient + authors: [Group] + recipients: [Group] } # Post interne d'un membre sur la page interne de son groupe @@ -178,8 +162,8 @@ const Message = ` title: String! content: String! - authors: Author # User - recipient: Recipient # Group + authors: User + recipients: Group } # Question posée par un user à un groupe @@ -190,8 +174,8 @@ const Message = ` title: String! content: String! - authors: Author # User - recipient: Recipient # Group + authors: User + recipients: Group # Une annonce éventuellement concernée par cette question. # Null si la question ne concerne pas une annonce particulière @@ -210,8 +194,8 @@ const Message = ` title: String! content: String! - authors: Author # Group - recipient: Recipient # Group + authors: Group + recipients: Group # La question à laquelle cette Answer répond. Non-nullable bien sûr forQuestion: Question! -- GitLab