/** * @file Ce fichier genere le shema utilise par Apollo. C'est ici que les requetes GraphQl sont résolues. * @author akka vodol */ import knex from '../../db/knex_router'; import { listGroups, listMembers} from '../ldap/ldap_data'; import { makeExecutableSchema } from 'graphql-tools'; import { request } from 'https'; const typeDefs = ` type Query { groups: [Group]! group(id : ID) : Group! } type Group { name: String! id: ID! website: String updatedAt: String! description: String school: String! } `; const knex_req = { getAllVisibleGroups : (user) => { let group_ids = listGroups(user.id); return knex.select().from('groups').whereIn('id', group_ids); }, getGroupIfVisible : (user, id) => { return getAllVisibleGroups(user).where('id', args.id); } }; const resolvers = { Query: { groups: (obj, args, context) => { return knex_req.getAllVisibleGroups(context.user); }, group: (obj, args, context) => { return knex_req.getGroupIfVisible(context.user, args.id); } } }; const schema = makeExecutableSchema({ typeDefs, resolvers }); export default schema;