From cca1dbaa99e1d6e3ee86ad1ad482aed5c1839329 Mon Sep 17 00:00:00 2001
From: ManifoldFR <wilson.jallet@gmail.com>
Date: Fri, 2 Mar 2018 19:13:16 +0100
Subject: [PATCH] Made allPosts query work

---
 .gitlab-ci.yml                                |  1 +
 db/migrations/20180302152113_requests.js      | 44 +++++++++----------
 ...184519_rename_recipient_user_join_group.js | 14 ++++++
 src/graphql/schema.js                         | 11 +++--
 src/graphql/typeDefs.js                       | 44 ++++++++++++++-----
 5 files changed, 76 insertions(+), 38 deletions(-)
 create mode 100644 db/migrations/20180302184519_rename_recipient_user_join_group.js

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index ff66f83..cd572dd 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -30,6 +30,7 @@ build:
     - knex seed:run
   artifacts:
     paths:
+      - ldap_connexion_config.json
       - build/
       - node_modules/
     expire_in: 240   min
diff --git a/db/migrations/20180302152113_requests.js b/db/migrations/20180302152113_requests.js
index 90eb6db..c0c4f45 100644
--- a/db/migrations/20180302152113_requests.js
+++ b/db/migrations/20180302152113_requests.js
@@ -6,32 +6,32 @@ exports.up = function(knex, Promise) {
         table.string('recepient').notNullable();
         table.text('message');
     }).then(()=>{
-    return knex.schema.createTable('user_join_group', function (table) {
-        table.inherits('request');
-        table.string('useruid').notNullable();
-    }).then(()=>{
-    return knex.schema.createTable('group_join_event', function (table){
-        table.inherits('request');
-        table.string('eventuid').notNullable();
-        table.string('senderuid').notNullable();
-    }).then(() => {
-    return knex.schema.createTable('your_group_host_event', function(table){
-        table.inherits('request');
-        table.string('eventuid').notNullable();
-        table.string('senderuid').notNullable();
-    });
-    });
-    });
+        return knex.schema.createTable('user_join_group', function (table) {
+            table.inherits('request');
+            table.string('useruid').notNullable();
+        }).then(()=>{
+            return knex.schema.createTable('group_join_event', function (table){
+                table.inherits('request');
+                table.string('eventuid').notNullable();
+                table.string('senderuid').notNullable();
+            }).then(() => {
+                return knex.schema.createTable('your_group_host_event', function(table){
+                    table.inherits('request');
+                    table.string('eventuid').notNullable();
+                    table.string('senderuid').notNullable();
+                });
+            });
+        });
     });
 };
 
 exports.down = function(knex, Promise) {
     return knex.schema.dropTable('your_group_host_event').then(() => {
-    return knex.schema.dropTable('group_join_event').then(() => {
-    return knex.schema.dropTable('user_join_group').then(() => {
-    return knex.schema.dropTable('request').then(() => {
-    });
-    });
-    });
+        return knex.schema.dropTable('group_join_event').then(() => {
+            return knex.schema.dropTable('user_join_group').then(() => {
+                return knex.schema.dropTable('request').then(() => {
+                });
+            });
+        });
     });
 };
diff --git a/db/migrations/20180302184519_rename_recipient_user_join_group.js b/db/migrations/20180302184519_rename_recipient_user_join_group.js
new file mode 100644
index 0000000..94bab05
--- /dev/null
+++ b/db/migrations/20180302184519_rename_recipient_user_join_group.js
@@ -0,0 +1,14 @@
+
+exports.up = function(knex, Promise) {
+    return knex.schema.renameTable('request','requests').table('requests', function(table) {
+        table.renameColumn('recepient','recipient');
+    });
+};
+
+exports.down = function(knex, Promise) {
+    return knex.schema.table('requests', function (table) {
+        table.renameColumn('recipient', 'recepient').then(() => {
+            return knex.schema.rable('requests','request');
+        });
+    });
+};
diff --git a/src/graphql/schema.js b/src/graphql/schema.js
index 9e11bea..a49d0fd 100644
--- a/src/graphql/schema.js
+++ b/src/graphql/schema.js
@@ -104,7 +104,6 @@ const resolvers = {
                     throw "You are  not a member of this group";
             });
         },
-
         asViewer: (obj, args, context) => {
             return resolverFuncs.getGroupIfVisible(context.user, args.groupUID).then(res => {
                 if(res)
@@ -116,7 +115,6 @@ const resolvers = {
     },
 
     AdminMutation: {
-    
         isAdmin: (obj, args, context) => {
             return true;
         
@@ -132,13 +130,18 @@ const resolvers = {
     },
 
     ViewerMutation: {
-
         requestJoin: (obj, args, context) => {
             console.log(obj);
             return null;
         }
-    }
+    },
 
+    Post: {
+        authors: (obj, args, context) => {
+            console.log("Authors of post are:",obj.authors);
+            return knex.select().from('groups').whereIn('uid',obj.authors);
+        }
+    }
 };
 
 const schema = makeExecutableSchema({
diff --git a/src/graphql/typeDefs.js b/src/graphql/typeDefs.js
index 5413d10..5491e7b 100644
--- a/src/graphql/typeDefs.js
+++ b/src/graphql/typeDefs.js
@@ -4,11 +4,13 @@ const RootTypes = `
         allGroups: [Group]
         group(uid: ID) : Group
         user(uid: ID) : [User]
+        allMessages: [Message]
         allEvents: [Event]
+        allPosts: [Post]
+        allAnnouncements: [Announcement]
 
         asAdmin(groupUID: ID): AdminQuery
 
-        allPosts: [Post]
         
         searchTOL(
             givenName: String,
@@ -79,6 +81,7 @@ const subMutations = `
 `;
 
 const subQueries = `
+    # Requête à la base de donnée nécessitant d'être administrateur.
     type AdminQuery{
         isAdmin: Boolean
         allRequests : Requests
@@ -124,34 +127,47 @@ const Group = `
     }
 `;
 
+const Message = `
+    # Tout type de message créé par un ou plusieurs groupes.
+    interface Message {
+        id: ID!
+        # Titre du message
+        title: String!
+        createdAt: String!
+        updatedAt: String!
+        # Auteur(s) du message
+        authors: [Group]
+    }
+`;
+
 const Post = `
-    # Publications
-    type Post {
+    # Publication postée par un ou plusieurs groupes.
+    type Post implements Message {
         id: ID!
         title: String!
         createdAt: String!
         updatedAt: String!
-        # Auteurs de la publication
         authors: [Group]
-        description: String
+        content: String!
     }
 `;
 
-const Announcements = `
-    type Announcement implements Post {
+const Announcement = `
+    # Annonce publique effectuée par un ou plusieurs groupes.
+    type Announcement implements Message {
         id: ID!
         title: String!
         createdAt: String!
         updatedAt: String!
         authors: [Group]
-        description: String
+        description: String!
         views: Int
     }
 `;
 
-const Events = `
+const Event = `
     # Événements organisés par un ou plusieurs groupes.
-    type Event implements Post {
+    type Event implements Message {
         id: ID!
         # Intitulé de l'événement
         title: String!
@@ -177,13 +193,17 @@ const Requests = `
         hostEvent: [yourGroupHostEvent]
     }
 
+    # Demande d'un utilisateur désirant rejoindre le groupe.
     type userJoinGroup {
+        # Émetteur de la demande
         user: User
     }
 
-    # Demande 
+    # Demande d'un groupe voulant rejoindre un événement
     type groupJoinEvent {
+        # Événement concerné
         event: Event
+        # Groupe voulant rejoindre l'événement
         groupWantingToJoin: Group
     }
 
@@ -195,5 +215,5 @@ const Requests = `
 
 `;
 
-const typeDefs = [RootTypes, Group, User, Post, Events, subMutations, subQueries, Requests];
+const typeDefs = [RootTypes, Group, User, Message, Post, Announcement, Event, subMutations, subQueries, Requests];
 export default typeDefs;
-- 
GitLab