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