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