Skip to content
Snippets Groups Projects
Commit 9052f60f authored by Olivér FACKLAM's avatar Olivér FACKLAM
Browse files

messageModel.ts

parent 3bed8dca
No related branches found
No related tags found
No related merge requests found
/**
* @file Fonctions qui implémentent les requetes relatives aux messages
* @author ofacklam
* @memberof GraphQL
*/
import { Announcement, Event, PrivatePost, Question, Answer, Message } from "../resolvers/messages";
import knex from "../../../db/knex_router"
import { GroupCollection, GroupSet } from "./tools";
export class GroupModel {
/**
* @memberof GraphQL
* @class MessageModel
* @summary Requetes relatives aux messages.
* @classdesc Cette classe contient les méthodes implémentant les requetes relatives aux messages.
* @arg {string} contextUser - L'identifiant de l'utilisateur du 'context'
*/
constructor(contextUser: string) {
this.contextUser = contextUser;
}
protected contextUser: string;
/**
* @memberof GraphQL.MessageModel#
* @function getAnnouncement
* @summary Fonction qui renvoie une annonce donnée.
* @arg {number} mid - Identifiant demandé.
* @return {Promise(Announcement)} Renvoie l'annonce dont l'identifiant est 'mid'
* @async
* @rights membre d'un groupe author ou d'un groupe recipient
*/
async getAnnouncement(mid: number): Promise<Announcement> {
return Announcement.tryCreate(mid);
}
/**
* @memberof GraphQL.MessageModel#
* @function getEvent
* @summary Fonction qui renvoie un evenement donné.
* @arg {number} mid - Identifiant demandé.
* @return {Promise(Event)} Renvoie l'évenement dont l'identifiant est 'mid'
* @async
* @rights membre d'un groupe author ou d'un groupe recipient
*/
async getEvent(mid: number): Promise<Event> {
return Event.tryCreate(mid);
}
/**
* @memberof GraphQL.MessageModel#
* @function getPrivatePost
* @summary Fonction qui renvoie un post privé donné.
* @arg {number} mid - Identifiant demandé.
* @return {Promise(PrivatePost)} Renvoie le post privé dont l'identifiant est 'mid'
* @async
* @rights membre du groupe recipient
*/
async getPrivatePost(mid: number): Promise<PrivatePost> {
return PrivatePost.tryCreate(mid);
}
/**
* @memberof GraphQL.MessageModel#
* @function getQuestion
* @summary Fonction qui renvoie une question donnée.
* @arg {number} mid - Identifiant demandé.
* @return {Promise(Question)} Renvoie la question dont l'identifiant est 'mid'
* @async
* @rights viewer du groupe recipient
*/
async getQuestion(mid: number): Promise<Question> {
return Question.tryCreate(mid);
}
/**
* @memberof GraphQL.MessageModel#
* @function getAnswer
* @summary Fonction qui renvoie une réponse donnée.
* @arg {number} mid - Identifiant demandé.
* @return {Promise(Answer)} Renvoie la réponse dont l'identifiant est 'mid'
* @async
* @rights viewer du groupe author
*/
async getAnswer(mid: number): Promise<Answer> {
return Answer.tryCreate(mid);
}
/**
* @memberof GraphQL.MessageModel#
* @function getAllMessages
* @summary Fonction qui renvoie tous les messages visibles.
* @arg {GroupCollection} groups - Un ensemble d'identifiants, supposés valides.
* @return {Promise(Message[])} Renvoie tous les messages émis ou reçus par ces groupes
* @async
* @rights member of groups
*/
async getAllMessages(groups: GroupCollection): Promise<Message[]> {
throw "Not implemented";
}
/**
* @memberof GraphQL.MessageModel#
* @function getAllAnnouncements
* @summary Fonction qui renvoie toutes les annonces visibles.
* @arg {GroupCollection} groups - Un ensemble d'identifiants, supposés valides.
* @return {Promise(Announcement[])} Renvoie toutes les annonces émises ou reçues par ces groupes
* @async
* @rights member of groups
*/
async getAllAnnouncements(groups: GroupCollection): Promise<Announcement[]> {
throw "Not implemented";
}
/**
* @memberof GraphQL.MessageModel#
* @function getAllEvents
* @summary Fonction qui renvoie tous les évenements visibles.
* @arg {GroupCollection} groups - Un ensemble d'identifiants, supposés valides.
* @return {Promise(Event[])} Renvoie tous les évenements émis ou reçus par ces groupes
* @async
* @rights member of groups
*/
async getAllEvents(groups: GroupCollection): Promise<Event[]> {
throw "Not implemented";
}
/**
* @memberof GraphQL.MessageModel#
* @function getAllPrivatePosts
* @summary Fonction qui renvoie tous les posts privés visibles.
* @arg {GroupCollection} groups - Un ensemble d'identifiants, supposés valides.
* @return {Promise(PrivatePost[])} Renvoie tous les posts privés de ces groupes
* @async
* @rights member of groups
*/
async getAllPrivatePosts(groups: GroupCollection): Promise<PrivatePost[]> {
throw "Not implemented";
}
/**
* @memberof GraphQL.MessageModel#
* @function userParticipate
* @summary Fonction pour participer a un evenement.
* @arg {string} uid - Identifiant de l'utilisateur.
* @arg {number} mid - Identifiant de l'évenement.
* @return {Promise(boolean)} Renvoie true si modification réussie
* @async
* @rights member d'un groupe author ou recipient
*/
async userParticipate(uid: string, mid: number): Promise<boolean> {
throw "Not implemented";
}
/**
* @memberof GraphQL.MessageModel#
* @function userUnparticipate
* @summary Fonction pour ne plus participer a un evenement.
* @arg {string} uid - Identifiant de l'utilisateur.
* @arg {number} mid - Identifiant de l'évenement.
* @return {Promise(boolean)} Renvoie true si modification réussie
* @async
* @rights member d'un groupe author ou recipient
*/
async userUnparticipate(uid: string, mid: number): Promise<boolean> {
throw "Not implemented";
}
/**
* @memberof GraphQL.MessageModel#
* @function createQuestion
* @summary Fonction pour créer une question.
* @arg {string} gid - Identifiant du groupe.
* @arg {string} title - Titre.
* @arg {string} content - Contenu.
* @return {Promise(Question)} Renvoie la question créée.
* @async
* @rights viewer du groupe
*/
async createQuestion(gid: string, title: string, content: string): Promise<Question> {
throw "Not implemented";
}
/**
* @memberof GraphQL.MessageModel#
* @function editQuestion
* @summary Fonction pour modifier une question.
* @arg {number} mid - Identifiant de la question.
* @arg {string} title - Titre.
* @arg {string} content - Contenu.
* @return {Promise(Question)} Renvoie la question modifiée.
* @async
* @rights viewer du groupe et author de la question
*/
async editQuestion(mid: number, title: string, content: string): Promise<Question> {
throw "Not implemented";
}
/**
* @memberof GraphQL.MessageModel#
* @function removeQuestion
* @summary Fonction pour supprimer une question.
* @arg {number} mid - Identifiant de la question.
* @return {Promise(boolean)} Renvoie true si suppression réussie.
* @async
* @rights viewer du groupe et author de la question
*/
async removeQuestion(mid: number): Promise<boolean> {
throw "Not implemented";
}
/**
* @memberof GraphQL.MessageModel#
* @function createPrivatePost
* @summary Fonction pour créer un post privé.
* @arg {string} gid - Identifiant du groupe.
* @arg {string} title - Titre.
* @arg {string} content - Contenu.
* @return {Promise(PrivatePost)} Renvoie le post créé.
* @async
* @rights member du groupe
*/
async createPrivatePost(gid: string, title: string, content: string): Promise<PrivatePost> {
throw "Not implemented";
}
/**
* @memberof GraphQL.MessageModel#
* @function editPrivatePost
* @summary Fonction pour modifier un post privé.
* @arg {number} mid - Identifiant du post.
* @arg {string} title - Titre.
* @arg {string} content - Contenu.
* @return {Promise(PrivatePost)} Renvoie le post modifié.
* @async
* @rights member du groupe et author du post
*/
async editPrivatePost(mid: number, title: string, content: string): Promise<PrivatePost> {
throw "Not implemented";
}
/**
* @memberof GraphQL.MessageModel#
* @function removePrivatePost
* @summary Fonction pour supprimer un post privé.
* @arg {number} mid - Identifiant du post.
* @return {Promise(boolean)} Renvoie true si suppression réussie.
* @async
* @rights member du groupe et author du post
*/
async removePrivatePost(mid: number): Promise<boolean> {
throw "Not implemented";
}
/**
* @memberof GraphQL.MessageModel#
* @function createAnnouncement
* @summary Fonction pour créer une annonce.
* @arg {string} from_gid - Identifiant du groupe émetteur.
* @arg {GroupSet} to_groups - Les groupes destinataires.
* @arg {string} title - Titre.
* @arg {string} content - Contenu.
* @arg {number} event_mid - Identifiant de l'évenement.
* @return {Promise(Announcement)} Renvoie l'annonce créée.
* @async
* @rights speaker du groupe émetteur
*/
async createAnnouncement(from_gid: string, to_groups: GroupSet, title: string, content: string, event_mid: number): Promise<Announcement> {
throw "Not implemented";
}
/**
* @memberof GraphQL.MessageModel#
* @function editAnnouncement
* @summary Fonction pour modifier une annonce.
* @arg {number} mid - Identifiant de l'annonce.
* @arg {string} title - Titre.
* @arg {string} content - Contenu.
* @arg {number} event_mid - Identifiant de l'évenement.
* @return {Promise(Announcement)} Renvoie l'annonce modifiée.
* @async
* @rights speaker du groupe émetteur
*/
async editAnnouncement(mid: number, title: string, content: string, event_mid: number): Promise<Announcement> {
throw "Not implemented";
}
/**
* @memberof GraphQL.MessageModel#
* @function removeAnnouncement
* @summary Fonction pour supprimer une annonce.
* @arg {number} mid - Identifiant de l'annonce.
* @return {Promise(boolean)} Renvoie true si suppression réussie.
* @async
* @rights speaker du groupe
*/
async removeAnnouncement(mid: number): Promise<boolean> {
throw "Not implemented";
}
/**
* @memberof GraphQL.MessageModel#
* @function createEvent
* @summary Fonction pour créer un évenement.
* @arg {string} from_gid - Identifiant du groupe émetteur.
* @arg {GroupSet} to_groups - Les groupes destinataires.
* @arg {string} title - Titre.
* @arg {string} content - Contenu.
* @arg {string} location - Lieu.
* @arg {string} startTime - Date de début.
* @arg {string} endTime - Date de fin.
* @arg {number} announcement_mid - Identifiant de l'annonce.
* @return {Promise(Event)} Renvoie l'évenement créé.
* @async
* @rights speaker du groupe émetteur
*/
async createEvent(from_gid: string, to_groups: GroupSet, title: string, content: string, location: string, startTime: string, endTime: string, announcement_mid: number): Promise<Event> {
throw "Not implemented";
}
/**
* @memberof GraphQL.MessageModel#
* @function editEvent
* @summary Fonction pour modifier un evenement.
* @arg {number} mid - Identifiant de l'évenement.
* @arg {string} title - Titre.
* @arg {string} content - Contenu.
* @arg {string} location - Lieu.
* @arg {string} startTime - Date de début.
* @arg {string} endTime - Date de fin.
* @arg {number} announcement_mid - Identifiant de l'annonce.
* @return {Promise(Event)} Renvoie l'evenement modifié.
* @async
* @rights speaker du groupe émetteur
*/
async editEvent(mid: number, title: string, content: string, location: string, startTime: string, endTime: string, announcement_mid: number): Promise<Event> {
throw "Not implemented";
}
/**
* @memberof GraphQL.MessageModel#
* @function removeEvent
* @summary Fonction pour supprimer un évenement.
* @arg {number} mid - Identifiant de l'évenement.
* @return {Promise(boolean)} Renvoie true si suppression réussie.
* @async
* @rights speaker du groupe
*/
async removeEvent(mid: number): Promise<boolean> {
throw "Not implemented";
}
/**
* @memberof GraphQL.MessageModel#
* @function createAnswer
* @summary Fonction pour créer une réponse.
* @arg {number} mid - Identifiant de la question.
* @arg {string} title - Titre.
* @arg {string} content - Contenu.
* @return {Promise(Answer)} Renvoie la réponse créée.
* @async
* @rights speaker du groupe
*/
async createAnswer(mid: number, title: string, content: string): Promise<Answer> {
throw "Not implemented";
}
/**
* @memberof GraphQL.MessageModel#
* @function editAnswer
* @summary Fonction pour modifier une réponse.
* @arg {number} mid - Identifiant de la réponse.
* @arg {string} title - Titre.
* @arg {string} content - Contenu.
* @return {Promise(Answer)} Renvoie la réponse modifiée.
* @async
* @rights speaker du groupe
*/
async editAnswer(mid: number, title: string, content: string): Promise<Answer> {
throw "Not implemented";
}
/**
* @memberof GraphQL.MessageModel#
* @function removeAnswer
* @summary Fonction pour supprimer une réponse.
* @arg {number} mid - Identifiant de la réponse.
* @return {Promise(boolean)} Renvoie true si suppression réussie.
* @async
* @rights speaker du groupe
*/
async removeAnswer(mid: number): Promise<boolean> {
throw "Not implemented";
}
/**
* @memberof GraphQL.MessageModel#
* @function censorQuestion
* @summary Fonction pour censurer une question.
* @arg {number} mid - Identifiant du message.
* @return {Promise(boolean)} Renvoie true si suppression réussie.
* @async
* @rights admin du groupe
*/
async censorQuestion(mid: number): Promise<boolean> {
throw "Not implemented";
}
/**
* @memberof GraphQL.MessageModel#
* @function censorAnswer
* @summary Fonction pour censurer une réponse.
* @arg {number} mid - Identifiant du message.
* @return {Promise(boolean)} Renvoie true si suppression réussie.
* @async
* @rights admin du groupe
*/
async censorAnswer(mid: number): Promise<boolean> {
throw "Not implemented";
}
/**
* @memberof GraphQL.MessageModel#
* @function censorPrivatePost
* @summary Fonction pour censurer un post privé.
* @arg {number} mid - Identifiant du message.
* @return {Promise(boolean)} Renvoie true si suppression réussie.
* @async
* @rights admin du groupe
*/
async censorPrivatePost(mid: number): Promise<boolean> {
throw "Not implemented";
}
/**
* @memberof GraphQL.MessageModel#
* @function censorAnnouncement
* @summary Fonction pour censurer une annonce.
* @arg {number} mid - Identifiant du message.
* @return {Promise(boolean)} Renvoie true si suppression réussie.
* @async
* @rights admin du groupe ???? (lequel ??? -> le groupe author?)
*/
async censorAnnouncement(mid: number): Promise<boolean> {
throw "Not implemented";
}
/**
* @memberof GraphQL.MessageModel#
* @function censorEvent
* @summary Fonction pour censurer un évenement.
* @arg {number} mid - Identifiant du message.
* @return {Promise(boolean)} Renvoie true si suppression réussie.
* @async
* @rights admin du groupe ???? (lequel ??? -> le groupe author?)
*/
async censorEvent(mid: number): Promise<boolean> {
throw "Not implemented";
}
}
\ No newline at end of file
......@@ -245,6 +245,8 @@ export class Tools {
return elt.simple_group_gid;
}));
//TODO : rajouter les VisibilityEdges
return { simpleGroups: simple, metaGroups: meta };
}
}
\ No newline at end of file
......@@ -13,7 +13,7 @@ type Query {
metaGroup(gid:ID!): MetaGroup
# Message queries de base
message(mid:ID!): Message
#message(mid:ID!): Message
announcement(mid:ID!): Announcement
event(mid:ID!): Event
privatePost(mid:ID!): PrivatePost
......@@ -30,6 +30,7 @@ type Query {
allMessages: [Message]
allAnnouncements: [Announcement]
allEvents: [Event]
allPrivatePosts: [PrivatePost]
# Tous les Groupes visibles par un utilisateur.
# Correspondrait au sous-champ "viewerOf" de User, volontairement non-défini comme tel. Tous les autres cas de figure sont couverts par les sous-champs "<permission>Of" de User
allGroups: [Group]
......@@ -144,7 +145,7 @@ type Mutation {
): Question
removeQuestion(
questionToRemove: ID!
): Question
): Boolean
# Member mutations
userLeaveGroup(groupId: ID!): Boolean
......@@ -161,7 +162,7 @@ type Mutation {
): PrivatePost
removePrivatePost(
privatePostToRemove: ID!
): PrivatePost
): Boolean
# Speaker mutations
writePostsSummary(forGroup: ID!, content: String): Boolean
......@@ -265,10 +266,10 @@ type Mutation {
refuseGroupCoauthorEventRequest(request: ID!, comment: String): Boolean
censorQuestion(questionToCensor: ID!): Boolean
censorAnswer(answerToCensor: ID!): Boolean
censorPrivatePost(privatePostToCensor: ID!): Boolean
censorAnnouncement(announcementToCensor: ID!): Boolean
censorEvent(eventToCensor: ID!): Boolean
censorAnswer(answerToCensor: ID!): Boolean
# Superviser mutations
takeAdminRights(forGroup: ID!) : Boolean
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment