From dc1fc409a54011c7f25db5b33eadf08ae2dbc362 Mon Sep 17 00:00:00 2001
From: ManifoldFR <wilson.jallet@gmail.com>
Date: Fri, 2 Mar 2018 21:24:54 +0100
Subject: [PATCH] Added Query.post, Group.members queries

user(uid: ID) now correctly returns a single user, updated in typeDef

added IDs to Request types
---
 src/graphql/db_utils.js |  2 +-
 src/graphql/schema.js   | 16 +++++++++++++---
 src/graphql/typeDefs.js |  8 +++++++-
 3 files changed, 21 insertions(+), 5 deletions(-)

diff --git a/src/graphql/db_utils.js b/src/graphql/db_utils.js
index 79d8d10..42b17a6 100644
--- a/src/graphql/db_utils.js
+++ b/src/graphql/db_utils.js
@@ -6,7 +6,7 @@ import knex from '../../db/knex_router';
 import { renseignerSurUtilisateur, repliquerTOLdesIds, listerGroupes, listerMembres, listerAdministrateurs } from '../ldap/ldap_data';
 import { exportAllDeclaration } from 'babel-types';
 
-export { renseignerSurUtilisateur, repliquerTOLdesIds };
+export { renseignerSurUtilisateur, repliquerTOLdesIds, listerMembres };
 
 /**
  * @summary Renvoie tous les utilisateurs ayant des droits d'administrateur sur un groupe.
diff --git a/src/graphql/schema.js b/src/graphql/schema.js
index a49d0fd..38acb0b 100644
--- a/src/graphql/schema.js
+++ b/src/graphql/schema.js
@@ -46,8 +46,7 @@ const resolvers = {
             };
 
             const result = resolverFuncs.renseignerSurUtilisateur(context.user, args.uid).then(res => {
-                const output = res.map(entry => refactorer(entry));
-                return output;
+                return refactorer(res[0]);
             });
 
             return result;
@@ -56,6 +55,10 @@ const resolvers = {
         allPosts: (obj, args, context) => {
             return knex.select().from('posts');
         },
+        post: (obj, args, context) => {
+            const result = knex.select().from('posts').where('id','=',args.id);
+            return result.then((res) => res[0]);
+        },
 
         searchTOL: (obj, args, context) => {
             console.log(args);
@@ -138,9 +141,16 @@ const resolvers = {
 
     Post: {
         authors: (obj, args, context) => {
-            console.log("Authors of post are:",obj.authors);
             return knex.select().from('groups').whereIn('uid',obj.authors);
         }
+    },
+
+    Group: {
+        members: (obj, args, context) => {
+            console.log("Current group is",obj.uid);
+            console.log("\tMembers of the group are:",obj);
+            return resolverFuncs.listerMembres(context.user,obj.uid);
+        }
     }
 };
 
diff --git a/src/graphql/typeDefs.js b/src/graphql/typeDefs.js
index 5491e7b..0d2d88f 100644
--- a/src/graphql/typeDefs.js
+++ b/src/graphql/typeDefs.js
@@ -3,10 +3,11 @@ const RootTypes = `
     type Query {
         allGroups: [Group]
         group(uid: ID) : Group
-        user(uid: ID) : [User]
+        user(uid: ID) : User
         allMessages: [Message]
         allEvents: [Event]
         allPosts: [Post]
+        post(id: ID): Post
         allAnnouncements: [Announcement]
 
         asAdmin(groupUID: ID): AdminQuery
@@ -116,6 +117,8 @@ const Group = `
         name: String
         # Site du groupe
         website: String
+        # Membres du groupe
+        members: [User]
         # Jour et heure de création du groupe
         createdAt: String!
         updatedAt: String!
@@ -195,12 +198,14 @@ const Requests = `
 
     # Demande d'un utilisateur désirant rejoindre le groupe.
     type userJoinGroup {
+        id: ID!
         # Émetteur de la demande
         user: User
     }
 
     # Demande d'un groupe voulant rejoindre un événement
     type groupJoinEvent {
+        id: ID!
         # Événement concerné
         event: Event
         # Groupe voulant rejoindre l'événement
@@ -209,6 +214,7 @@ const Requests = `
 
     # Demande au récipiendaire de rejoindre l'organisation d'un événement.
     type yourGroupHostEvent {
+        id: ID!
         event: Event
         sender: Group
     }
-- 
GitLab