/**
 * @file Resolvers pour tous les types de messages.
 */
import knex from '../../../db/knex_router';

const MessageResolvers = {

    Message: {
        __resolveType: function(message) {
            if (message.hasOwnProperty('location')) return "Event";
            else return "Post";
        }
    },
    
    Post: {
        authors(message, args, context) {
            const result = knex.select().from('groups').whereIn('uid', message.authors);
            console.log("Resolved authors field as:");
            // console.log(result);
            return result;
        }
    },
    
    Announcement: {
        authors(message, args, context) {
            const result = knex.select().from('groups').whereIn('uid', message.authors);
            console.log("Resolved authors field as:");
            // console.log(result);
            return result;
        },
        forEvent: function(obj, args, context) {
            // le champ is_announcement n'existe que sur les Events
            // une ligne de la bdd events peut résoudre comme évènement ou comme annonce
            if (obj.is_announcement)
                return obj;
            else
                return null;
        }
    },
    
    Event: {
        authors(message, args, context) {
            const result = knex.select().from('groups').whereIn('uid', message.authors);
            // console.log(result);
            return result;
        },
    
        startTime: function(obj) {
            return obj.start_time;
        },
    
        endTime: function(obj) {
            return obj.end_time;
        },
    
        asAnnouncement: function(obj, args, context) {
            // le champ is_announcement indique si il existe une annonce qui va avec l'évènement
            // une ligne de la bdd events peut résoudre comme évènement ou comme annonce
            if (obj.is_announcement)
                return obj;
            else
                return null;
        }
    }
};

export default MessageResolvers;