From a2917456944fcd69d09dde67077cc3cf008b54b0 Mon Sep 17 00:00:00 2001 From: anatole <anatole.romon@polytechnique.edu> Date: Sun, 4 Mar 2018 18:52:01 +0100 Subject: [PATCH] resolution des query allRequests --- db/seeds/01_create_groups.js | 10 ++++- db/seeds/03_make_requests.js | 48 +++++++++++++++-------- src/graphql/db_utils.js | 74 +++++++++++++++++++++++++++++------- src/graphql/resolvers.js | 10 ++++- 4 files changed, 111 insertions(+), 31 deletions(-) diff --git a/db/seeds/01_create_groups.js b/db/seeds/01_create_groups.js index 26b1012..ee9c1ce 100644 --- a/db/seeds/01_create_groups.js +++ b/db/seeds/01_create_groups.js @@ -46,7 +46,15 @@ exports.seed = function(knex, Promise) { website: 'http://bde.ensta-paristech.fr/', school: 'ensta', type : 'simple' - } + }, + { + name: 'Subaïsse', + uid: 'subaisse', + description: 'Le Binet de ceux qui subissent', + school: 'polytechnique', + parentuid: 'kes', + type : 'simple' + }, ]; return knex('simple_groups').insert(simple_groups); diff --git a/db/seeds/03_make_requests.js b/db/seeds/03_make_requests.js index 2cb07fa..aceaf47 100644 --- a/db/seeds/03_make_requests.js +++ b/db/seeds/03_make_requests.js @@ -2,19 +2,37 @@ exports.seed = function(knex, Promise) { // Deletes ALL existing entries return knex('user_join_group').del() - .then(function () { - // Inserts seed entries - return knex('user_join_group').insert([ - { id: 1, - recipient: 'br', - message: "C'est ici pour développer sigma ?", - useruid: "anatole.romon" - }, - { id: 2, - recipient: 'br', - message: "Bonjour, je cherche le binet subaisse", - useruid: "quentin.gendre" - } - ]); - }); + .then(function () { + // Inserts seed entries + return knex('user_join_group').insert([ + { id: 1, + recipient: 'br', + message: "C'est ici pour développer sigma ?", + useruid: "anatole.romon" + }, + { id: 2, + recipient: 'br', + message: "Bonjour, je cherche le binet subaisse", + useruid: "quentin.gendre" + }, + {id : 3, + recipient: 'jtx', + message: "Quand je serais grand je serais cinéaste !", + useruid: "anatole.romon" + } + ]).then(() => { + return knex('group_join_event').del() + .then(function (){ + return knex('group_join_event').insert([ + { + id : 4, + recipient : "br", + message : "nous aussi on veut coder sigma", + eventuid : 42, + senderuid : "subaisse" + } + ]); + }); + }); + }); }; diff --git a/src/graphql/db_utils.js b/src/graphql/db_utils.js index e550585..52943ea 100644 --- a/src/graphql/db_utils.js +++ b/src/graphql/db_utils.js @@ -161,7 +161,6 @@ export const getGroupIfVisible = (user, groupUID, wantedType="all") => { }); }; - /** * @summary Renvoie tous les groupes visibles par l'utilisateur user * @desc Cette fonction effectue une requête knex. Elle gère l'arête de parenté. @@ -178,6 +177,22 @@ export const getAllVisibleGroups = (user, wantedType="all") => { }); }; + +/** + * @summary Renvoie un groupe + * @desc Cette fonction ne teste pas la visibilité d'un groupe. + * Elle ne doit être utilisée que si on est certain que l'utilisateur a la visibilité sur le groupe + * @arg {Object} user - Objet contenant un attribut *uid* de type *string*. User représente l'utilisateur qui a effectué la requête. + * @arg {String} wantedType - Un string indiquant le type de groupe qu'on veut. Peut être *"simple"*, *"meta"* ou *"all"*. + * @return {Promise} Retour de requête knex. Liste de tous les groupes que l'utilisateur a le droit de voire. + */ +export const getGroup = (user, groupUID, wantedType="all") => { + let table_name = getGroupTableName(wantedType); + return knex.select().from(table_name).where('uid', groupUID).then(res => { + return res[0]; + }); +}; + /** * @summary Teste si un utilisateur est membre d'un groupe * @arg {Object} user - Objet contenant un attribut *uid* de type *string*. User représente l'utilisateur qui a effectué la requête. @@ -255,10 +270,51 @@ export const createGroupIfLegal = (user, args) => { }); }; +/** + * @summary Renvoie toues les requêtes de type UserJoinGroup + * @desc Une requête UserJoinGroup est envoyée par un utilisateur à un groupe, + * pour demander à rejoindre ce groupe + * @arg {Object} user - L'utilisateur qui effectue la requête. + * @arg {String} args - L'identifiant du groupe qui reçoit la requête. + * @return {Promise(Object)} Retour de requête knex. Toutes les requêtes destinées au groupe. + */ export const getUserJoinGroupRequests = (user, recipientUID) => { - return knex('user_join_group').select(/*'id', 'useruid', 'message'*/)/*.where('recipient', recipientUID)*/; + return knex.select('id', 'useruid', 'message').from('user_join_group') + .where('recipient', recipientUID); +}; + +/** + * @summary Renvoie toues les requêtes de type GroupJoinEvent + * @desc Une requête UserJoinGroup est envoyée par un groupe à un évènement (donc aux administrateurs de l'évènement), + * pour demander à rejoindre cet évènement. + * Remarque : toutes les requêtes ont pour le moment un attribut recipient, + * mais ici il ne sera a terme pas utilisé. + * @arg {Object} user - L'utilisateur qui effectue la requête. + * @arg {String} args - L'identifiant du groupe qui reçoit la requête. + * @return {Promise(Object)} Retour de requête knex. Toutes les requêtes destinées au groupe. + */ +export const getGroupJoinEventRequests = (user, recipientUID) => { + return knex.select('id', 'senderuid', 'eventuid', 'message').from('group_join_event') + .where('recipient', recipientUID); }; + +/** + * @summary Renvoie toues les requêtes de type GroupJoinEvent + * @desc Une requête UserJoinGroup est envoyée par un groupe à un évènement (donc aux administrateurs de l'évènement), + * pour demander à rejoindre cet évènement. + * Remarque : toutes les requêtes ont pour le moment un attribut recipient, + * mais ici il ne sera a terme pas utilisé. + * @arg {Object} user - L'utilisateur qui effectue la requête. + * @arg {String} args - L'identifiant du groupe qui reçoit la requête. + * @return {Promise(Object)} Retour de requête knex. Toutes les requêtes destinées au groupe. + */ +export const getYourGroupHostEventRequests = (user, recipientUID) => { + return knex.select('id', 'senderuid', 'eventuid', 'message').from('your_group_host_event') + .where('recipient', recipientUID); +}; + + //Don't forget the argument user is the guy who makes the request, not the user we want export const getUser = (user, userUID) => { return new Promise( (resolve, reject) => { @@ -289,19 +345,9 @@ export const getUser = (user, userUID) => { });*/ }; -export const getEvent = (user, eventID) => { - return quickPromise(null); -}; - -export const getGroup = (user, groupUID) => { - return quickPromise(null); -}; +//TODO : empty functions to be filled -export const getSimpleGroup = (user, groupUID) => { - return quickPromise(null); -}; - -export const getMetaGroup = (user, groupUID) => { +export const getEvent = (user, eventID) => { return quickPromise(null); }; diff --git a/src/graphql/resolvers.js b/src/graphql/resolvers.js index aee354d..34086e4 100644 --- a/src/graphql/resolvers.js +++ b/src/graphql/resolvers.js @@ -117,7 +117,15 @@ export const resolvers = { AllRequests: { userJoinGroup : (obj, args, context) => { - return db_utils.getUserJoinGroupRequests(context.user, args.groupUID); + return db_utils.getUserJoinGroupRequests(context.user, obj.groupUID); + }, + + groupJoinEvent : (obj, args, context) => { + return db_utils.getGroupJoinEventRequests(context.user, obj.groupUID); + }, + + yourGroupHostEvent : (obj, args, context) => { + return db_utils.getYourGroupHostEventRequests(context.user, obj.groupUID); }, }, -- GitLab