From 4adf25e2cbdbe2efb7d23d4e319e0a2e82c94bcd Mon Sep 17 00:00:00 2001
From: ManifoldFR <wilson.jallet@gmail.com>
Date: Fri, 31 Aug 2018 16:50:14 +0200
Subject: [PATCH] message type resolution + remove deprecated schema JS files

---
 src/graphql/resolvers/messages.js |  11 +-
 src/graphql/typeDefs/actions.js   | 258 ------------------------------
 src/graphql/typeDefs/objects.js   | 255 -----------------------------
 3 files changed, 10 insertions(+), 514 deletions(-)
 delete mode 100644 src/graphql/typeDefs/actions.js
 delete mode 100644 src/graphql/typeDefs/objects.js

diff --git a/src/graphql/resolvers/messages.js b/src/graphql/resolvers/messages.js
index 00597bb..805b2ed 100644
--- a/src/graphql/resolvers/messages.js
+++ b/src/graphql/resolvers/messages.js
@@ -7,7 +7,16 @@ const MessageResolvers = {
     Message: {
 
         __resolveType: function(obj) {
-            return obj.type;
+            if (obj.location) {
+                return "Event";
+            }
+            if (obj.views) {
+                return "Announcement";
+            }
+            if (obj.for_question) {
+                return "Answer";
+            }
+            return "Question";
 
         }
     },
diff --git a/src/graphql/typeDefs/actions.js b/src/graphql/typeDefs/actions.js
deleted file mode 100644
index bc59085..0000000
--- a/src/graphql/typeDefs/actions.js
+++ /dev/null
@@ -1,258 +0,0 @@
-const RootTypes = `
-    # Requêtes
-    type Query {
-        
-        # group queries
-
-        allGroups: [Group]
-        allSimpleGroups: [SimpleGroup]
-
-        group(uid: ID!) : Group
-        simpleGroup(uid : ID!) : SimpleGroup
-        metaGroup(uid : ID!) : MetaGroup
-
-        # message queries
-
-        allMessages: [Message]
-        message(id: ID!): Message
-        allEvents: [Event]
-        allAnnouncements: [Announcement]
-        
-        # user queries
-
-        user(uid: ID) : User
-
-        searchTOL(
-            givenName: String,
-            lastName: String,
-            nickname: String,
-            nationality: String,
-            school: String,
-            promotion: String,
-            groups: String,
-            studies: String,
-            sport: String,
-            phone: String,
-            mail: String,
-            adress: String,
-            ip: String
-        ): [String]
-
-        # Admin queries
-
-        allRequests(from : String!) : [Request]
-
-        # Speaker queries 
-
-        # allRequests(from : String!) : [Request]
-
-        # Member Queries
-
-        allMembers(from : String!) : [Group]
-
-        # Viewer Queries
-        
-        test : String
-
-    }
-
-    type Mutation {
-
-        # Superviser mutations
-
-        takeAdminRights(from : String!) : Boolean
-        releaseAdminRights(from : String!) : Boolean
-
-        # Admin mutations
-
-        createSubgroup(
-            from : String!,
-            uid: ID = null,
-            name: String!,
-            website: String,
-            description: String,
-            school: String
-        ): Group
-
-        addUser(from : String!, userid : String!): User
-        removeUser(from : String!, userid : String!): User
-        addAdmin(from : String!, userid : String!): User
-        removeAdmin(from : String!, userid : String!): User
-
-        editGroup(
-            from : String!,
-            name: String,
-            website: String,
-            description: String,
-            school: String
-        ): Group
-
-        # Creates a new event.
-        postEvent(
-            # ID of the organizing group.
-            from: ID!, 
-            # Title of the event.
-            title: String,
-            # Date of event.
-            date: String
-        ): Event
-
-        answerEventRequest(from : String, request: ID, accept : Boolean): Request
-
-        # Log user into the API
-        login(username: String!, password: String!): String!
-        # Log user out of the API
-        logout(username: String!): Boolean
-        leave(from : String!) : Boolean
-
-        # Viewer mutations
-
-        requestJoin(from : String!) : Boolean
-
-    }
-
-   
-`;
-
-/*
-        asSuperviser(groupUID: String): SuperviserMutation
-        asAdmin(groupUID: String): AdminMutation
-        asSpeaker(groupUID: String): SpeakerMutation
-        asMember(groupUID: String): MemberMutation
-        asViewer(groupUID: String): ViewerMutation
-*/
-
-/*
-        accessGroups : GroupQuery
-        accessPosts : MessageQuery
-        accessUsers : UserQuery
-
-        asAdmin(groupUID: ID): AdminQuery
-        asSpeaker(groupUID: ID): AdminQuery
-        asMember(groupUID: ID): MemberQuery
-        asViewer(groupUID: ID): AdminQuery
-
-*/
-
-const subMutations = `
-
-    type SuperviserMutation {
-        runAdminOperation : AdminMutation
-        takeAdminRights : Boolean
-        releaseAdminRights : Boolean
-    }
-
-    type AdminMutation {
-
-        isAdmin: Boolean
-
-        createSubgroup(
-            uid: ID = null,
-            name: String,
-            website: String,
-            description: String,
-            school: String
-        ): Group
-
-        addUser(userid : String): User
-        removeUser(userid : String): User
-        addAdmin(userid : String): User
-        removeAdmin(userid : String): User
-
-        editGroup(
-            name: String,
-            website: String,
-            description: String,
-            school: String
-        ): Group
-
-    }
-
-    type SpeakerMutation{
-        postEvent(name: String, date: String): Event
-        answerEventRequest(request: ID, accept : Boolean): Request
-    }
-
-    type MemberMutation {
-        leave: Group
-    }
-
-    type ViewerMutation {
-        requestJoin: Group
-    }
-
-`;
-
-const subQueries = `
-
-    """
-    Requête pour obtenir un groupe.
-    """
-    type GroupQuery{
-        allGroups: [Group]
-        allSimpleGroups: [SimpleGroup]
-
-        group(uid: ID) : Group
-        simpleGroup(uid : ID) : SimpleGroup
-        metaGroup(uid : ID) : MetaGroup
-
-    }
-
-    """
-    Requête pour obtenir un message.
-    """
-    type MessageQuery{
-        allMessages: [Message]
-        allEvents: [Event]
-        message(id: ID): Message
-        allAnnouncements: [Announcement]
-    }
-
-
-    """
-    Requête pour obtenir un utilisateur.
-    """
-    type UserQuery{
-
-        user(uid: ID) : User
-
-        searchTOL(
-            givenName: String,
-            lastName: String,
-            nickname: String,
-            nationality: String,
-            school: String,
-            promotion: String,
-            groups: String,
-            studies: String,
-            sport: String,
-            phone: String,
-            mail: String,
-            adress: String,
-            ip: String
-        ): [String]
-    }
-
-    # Requête à la base de donnée nécessitant d'être administrateur.
-    type AdminQuery{
-        isAdmin: Boolean
-        allRequests : [Request]
-    }
-
-    type SpeakerQuery{
-        isSpeaker: Boolean
-        allRequests : [Request]
-    }
-
-    type MemberQuery{
-        isMember: Boolean
-        allMembers : [Group]
-    }
-
-    type ViewerQuery{
-        isViewer: Boolean
-    }
-`;
-
-const actionDefs = [RootTypes, subQueries, subMutations ];
-export default actionDefs;
diff --git a/src/graphql/typeDefs/objects.js b/src/graphql/typeDefs/objects.js
deleted file mode 100644
index 22cd793..0000000
--- a/src/graphql/typeDefs/objects.js
+++ /dev/null
@@ -1,255 +0,0 @@
-
-const User = `
-    # Utilisateurs
-    type User {
-        # Prénom de l'utilisateur
-        givenName: String!
-        # Nom de famille
-        lastName: String!
-        # Surnom
-        nickname: String
-        nationality: String
-        uid: ID!
-        birthdate: String!
-        mail: String
-        phone: String
-        # Groupes dont l'utilisateur est membre.
-        groups: [SimpleGroup]
-        # Groupes que l'utilisateur aime.
-        likes: [Group]
-        # Adresse(s) de l'utilisateur.
-        address: [String]
-        # Promotion
-        promotion: String
-    }
-`;
-
-const Group = `
-    # Groupes associatifs
-
-    """
-    L'interface Group représente les deux types de groupes implémentés dans Sigma : les groupes
-    simples, dont les membres sont des utilisateurs, et les métagroupes, dont les membres sont
-    des groupes simples (tel que Federez, dont les membres incluent le BR et DaTA). 
-    """
-    interface Group {
-        uid: ID
-        name: String
-        # Site Web.
-        website: String
-        description: String
-        
-        # Jour et heure de création du groupe.
-        createdAt: String!
-        # Dernière mise à jour du groupe.
-        updatedAt: String!
-
-        # member requests
-
-        # Les posts prives dans ce groupe
-        privatePosts: [PrivatePost]
-        # Les questions addressees à ce groupe
-        questions: [Question]
-        # Les reponses donnees par ce groupe
-        answers: [Answer]
-
-
-    }
-
-    # Le groupe de base, dont les membres sont des utilisateurs : binets, Kès...
-    type SimpleGroup implements Group {
-        uid: ID
-        name: String
-        website: String
-        createdAt: String!
-        updatedAt: String!
-
-        # Admin, membres, sympathisants du groupe
-        admins: [User]
-        members: [User]
-        likers: [User]
-
-        description: String
-        # École d'origine du groupe
-        school: String
-        # Groupe parent
-        parent: Group
-
-        privatePosts: [PrivatePost]
-        questions: [Question]
-        answers: [Answer]
-    }
-
-    # Un groupe dont les membre sont d'autres groupes
-    type MetaGroup implements Group {
-        uid: ID
-        name: String
-        website: String
-        createdAt: String!
-        updatedAt: String!
-        description: String
-
-        # Les groupes constitutifs du méta-groupe.
-        members: [Group]!
-
-        privatePosts: [PrivatePost]
-        questions: [Question]
-        answers: [Answer]
-    }
-
-`;
-
-const Message = `
-
-# Tout type de message adressé à un ou plusieurs groupes.
-
-    # Auteur possible d'un Message
-    # union AuthorUnion = Group | [Group] | User
-    # union RecipientUnion = Group | [Group]
-
-    # Les unions sont assez faibles dans GraphQL, 
-    # elles n'acceptent pas les listes ni les interfaces
-    
-    # L'interface Message représente toute information que veut communiquer un groupe ou un user.
-    # Par choix de paradigme, tout Message est adressé à un (ou des) groupe(s).
-    # Les types implémentés sont divisés en deux :
-    # - les Message émanant d'un groupe : Announcement et Event, ainsi que Answer
-    # - les Message émanant d'un user : PrivatePost, ainsi que Question
-
-    interface Message {
-        id: ID!
-        # Titre du message
-        title: String!
-        content: String
-        createdAt: String!
-        updatedAt: String!
-    }
-
-    # Annonce publique effectuée par un ou plusieurs groupes.
-    type Announcement implements Message {
-        id: ID!
-        title: String!
-        createdAt: String!
-        updatedAt: String!
-        content: String!
-        importance: Int
-        views: Int
-        forEvent : Event
-
-        authors: [Group]
-        recipients: [Group]
-    }
-
-    # Événements organisés par un ou plusieurs groupes.
-    type Event implements Message {
-        id: ID!
-        # Intitulé de l'événement
-        title: String!
-        # Lieu de l'événement
-        location: String
-        createdAt: String!
-        updatedAt: String!
-        startTime: String!
-        endTime: String!
-        # Organisateurs
-        # Personnes qui participent à l'événement.
-        participatingGroups: [Group]
-        participatingUsers: [User]
-        content: String
-        asAnnouncement : Announcement
-
-        authors: [Group]
-        recipients: [Group]
-    }
-
-    # Post interne d'un membre sur la page interne de son groupe
-    type PrivatePost implements Message {
-        id: ID!
-        createdAt: String!
-        updatedAt: String!
-        title: String!
-        content: String!
-
-        authors: User
-        recipients: Group
-    }
-
-    # Question posée par un user à un groupe
-    type Question implements Message {
-        id: ID!
-        createdAt: String!
-        updatedAt: String!
-        title: String!
-        content: String!
-
-        authors: User
-        recipients: Group
-
-        # Une annonce éventuellement concernée par cette question. 
-        # Null si la question ne concerne pas une annonce particulière
-
-        forAnnouncement : Announcement
-
-        # Référence la réponse donnée par le groupe à cette Question. Si pas encore répondu, null.
-        forAnswer: Answer
-    }
-
-    # Réponse à une Question 
-    type Answer implements Message {
-        id: ID!
-        createdAt: String!
-        updatedAt: String!
-        title: String!
-        content: String!
-
-        authors: Group
-        recipients: Group
-
-        # La question à laquelle cette Answer répond. Non-nullable bien sûr
-        forQuestion: Question!
-    }
-
-`;
-
-const Requests = `
-
-    interface Request {
-        # ID de la demande
-        id: ID!
-        # message accompagnant la demande
-        message: String
-    }
-
-    # Demande d'un utilisateur désirant rejoindre le groupe.
-    type UserJoinGroup implements Request{
-        id: ID!
-        message: String
-        # Émetteur de la demande
-        user: User
-    }
-
-
-    # Demande d'un groupe voulant rejoindre un événement
-    type GroupJoinEvent implements Request{
-        id: ID!
-        message: String
-        # Événement concerné
-        event: Event
-        # Groupe voulant rejoindre l'événement
-        groupWantingToJoin: Group
-    }
-
-    # Demande au récipiendaire de rejoindre l'organisation d'un événement.
-    type YourGroupHostEvent implements Request{
-        id: ID!
-        message: String
-        # Événement concerné
-        event: Event
-        # Groupe ayant publié l'évènement et lancé l'invitation
-        sender: Group
-    }
-
-`;
-
-const objectDefs = [Group, User, Message, Requests];
-export default objectDefs;
\ No newline at end of file
-- 
GitLab