Newer
Older
/**
* @file Fonctions qui implémentent les requetes relatives aux messages
* @author ofacklam
* @memberof GraphQL
*/
import { User } from '../object_resolvers/users';
import { Group } from '../object_resolvers/groups/groups';
import { Message } from "../object_resolvers/messages/messages";
import { Announcement } from '../object_resolvers/messages/announcements';
import { Event } from '../object_resolvers/messages/events';
import { PrivatePost } from '../object_resolvers/messages/privatePosts';
import { Question } from '../object_resolvers/messages/questions';
import { Answer } from '../object_resolvers/messages/answers';
import { Tools, GroupCollection, GroupSet } from "../../utils/tools";
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
/**
* @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.Group#
* @function questions
* @summary Renvoie les questions adressées a ce groupe
* @return {Promise(Question[])}
* @rights viewer
* @async
*/
async getAllQuestionsReceived(gid: string): Promise<Question[]> {
let result:Question[] = await knex('messages_questions').select().where('recipient', gid );
return result;
}
/**
* @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.Group#
* @function answers
* @summary Renvoie les réponses de ce groupe
* @return {Promise(Answer[])}
* @rights viewer
* @async
*/
async getAllAnswersSent(gid: string): Promise<Answer[]> {
// let received_messages = await selectors.recievedMessages(user, groupUID);
let result:Answer[] = await knex('messages_answers').select().where('recipient', gid);
return result;
}
/**
* @memberof GraphQL.MessageModel#
* @function getAllMessages
* @summary Fonction qui renvoie tous les messages visibles.
* @arg {GroupSet} 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: GroupSet): Promise<Message[]> {
let r1 = await this.getAllAnnouncements(groups);
let r2 = await this.getAllEvents(groups);
let r3 = await this.getAllPrivatePosts(groups);
let r = new Array<Message>();
return r.concat(r1, r2, r3);
}
/**
* @memberof GraphQL.MessageModel#
* @function getAllAnnouncements
* @summary Fonction qui renvoie toutes les annonces visibles.
* @arg {GroupSet} 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: GroupSet): Promise<Announcement[]> {
let sent = await this.getAllAnnouncementsSent(groups);
let received = await this.getAllAnnouncementsReceived(groups);
return sent.concat(received);
/**
* @memberof GraphQL.MessageModel#
* @function getAllAnnouncementsSent
* @summary Fonction qui renvoie toutes les annonces émises visibles.
* @arg {GroupSet} groups - Un ensemble d'identifiants, supposés valides.
* @return {Promise(Announcement[])} Renvoie toutes les annonces émises par ces groupes
* @async
* @rights member of groups
*/
async getAllAnnouncementsSent(groups: GroupSet): Promise<Announcement[]> {
let result = await knex.select('mid').from('announcements_authors').whereIn('gid', Array.from(groups));
return result.map(async obj => await this.getAnnouncement(obj.mid));
}
/**
* @memberof GraphQL.MessageModel#
* @function getAllAnnouncementsReceived
* @summary Fonction qui renvoie toutes les annonces reçues visibles.
* @arg {GroupSet} groups - Un ensemble d'identifiants, supposés valides.
* @return {Promise(Announcement[])} Renvoie toutes les annonces reçues par ces groupes
* @async
* @rights member of groups
*/
async getAllAnnouncementsReceived(groups: GroupSet): Promise<Announcement[]> {
let result = await knex.select('mid').from('announcements_recipients').whereIn('gid', Array.from(groups));
return result.map(async obj => await this.getAnnouncement(obj.mid));
}
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
/**
* @memberof GraphQL.MessageModel#
* @function getAnnouncementAuthors
* @summary Fonction qui renvoie les auteurs d'une annonce.
* @arg {number} mid - L'identifiant de l'annonce.
* @return {Promise(GroupSet)} Renvoie les groupes auteurs.
* @async
* @rights membre d'un groupe author ou d'un groupe recipient
*/
async getAnnouncementAuthors(mid: number): Promise<GroupSet> {
let data = await knex.select('gid').from('announcements_authors').where('mid', mid);
return new GroupSet(data.map(obj => obj.gid));
}
/**
* @memberof GraphQL.MessageModel#
* @function getAnnouncementRecipients
* @summary Fonction qui renvoie les recipients d'une annonce.
* @arg {number} mid - L'identifiant de l'annonce.
* @return {Promise(GroupSet)} Renvoie les groupes recipients.
* @async
* @rights membre d'un groupe author ou d'un groupe recipient
*/
async getAnnouncementRecipients(mid: number): Promise<GroupSet> {
let data = await knex.select('gid').from('announcements_recipients').where('mid', mid);
return new GroupSet(data.map(obj => obj.gid));
}
/**
* @memberof GraphQL.MessageModel#
* @function getAllEvents
* @summary Fonction qui renvoie tous les évenements visibles.
* @arg {GroupSet} 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
*/
Elia AZAR
committed
async getAllEvents(groups: GroupSet): Promise<Event[]> {
let from = await this.getAllEventsFrom(groups);
let to = await this.getAllEventsTo(groups);
return from.concat(to);
/**
* @memberof GraphQL.MessageModel#
* @function getAllEventsFrom
* @summary Fonction qui renvoie tous les évenements visibles émis par le groupe.
* @arg {GroupSet} groups - Un ensemble d'identifiants, supposés valides.
* @return {Promise(Event[])} Renvoie tous les évenements émis par ces groupes
* @async
* @rights member of groups
*/
Elia AZAR
committed
async getAllEventsFrom(groups: GroupSet): Promise<Event[]> {
let result = await knex.select('mid').from('events_authors').whereIn('gid', Array.from(groups));
return result.map(async obj => await this.getEvent(obj.mid));
}
/**
* @memberof GraphQL.MessageModel#
* @function getAllEventsTo
* @summary Fonction qui renvoie tous les évenements visibles addressés au groupe.
* @arg {GroupSet} groups - Un ensemble d'identifiants, supposés valides.
* @return {Promise(Event[])} Renvoie tous les évenements reçus par ces groupes
* @async
* @rights member of groups
*/
Elia AZAR
committed
async getAllEventsTo(groups: GroupSet): Promise<Event[]> {
let result = await knex.select('mid').from('events_recipients').whereIn('gid', Array.from(groups));
return result.map(async obj => await this.getEvent(obj.mid));
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
/**
* @memberof GraphQL.MessageModel#
* @function getEventAuthors
* @summary Fonction qui renvoie les auteurs d'un event.
* @arg {number} mid - L'identifiant de l'event.
* @return {Promise(GroupSet)} Renvoie les groupes auteurs.
* @async
* @rights membre d'un groupe author ou d'un groupe recipient
*/
async getEventAuthors(mid: number): Promise<GroupSet> {
let data = await knex.select('gid').from('events_authors').where('mid', mid);
return new GroupSet(data.map(obj => obj.gid));
}
/**
* @memberof GraphQL.MessageModel#
* @function getEventRecipients
* @summary Fonction qui renvoie les recipients d'un event.
* @arg {number} mid - L'identifiant de l'event.
* @return {Promise(GroupSet)} Renvoie les groupes recipients.
* @async
* @rights membre d'un groupe author ou d'un groupe recipient
*/
async getEventRecipients(mid: number): Promise<GroupSet> {
let data = await knex.select('gid').from('events_recipients').where('mid', mid);
return new GroupSet(data.map(obj => obj.gid));
}
/**
* @memberof GraphQL.MessageModel#
* @function getParticipatingGroups
* @summary Renvoie les groupes qui participent a l'event
* @arg {number} mid - L'identifiant de l'event
* @return {Promise(GroupSet)}
* @rights membre d'un groupe author ou d'un groupe recipient
* @async
*/
async getParticipatingGroups(mid: number): Promise<GroupSet> {
let data = await knex.select('gid').from('events_participating_groups').where('mid', mid);
return new GroupSet(data.map(obj => obj.gid));
}
/**
* @memberof GraphQL.MessageModel#
* @function getParticipatingUsers
* @summary Renvoie les users qui participent a l'event
* @arg {number} mid - L'identifiant de l'event
* @return {Promise(User[])}
* @rights membre d'un groupe author ou d'un groupe recipient
* @async
*/
async getParticipatingUsers(mid: number): Promise<User[]> {
let data = await knex.select('uid').from('events_participating_users').where('mid', mid);
return data.map(obj => new User(obj.uid));
}
/**
* @memberof GraphQL.MessageModel#
* @function getAllPrivatePosts
* @summary Fonction qui renvoie tous les posts privés visibles.
* @arg {GroupSet} 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: GroupSet): Promise<PrivatePost[]> {
let result = await knex.select('mid').from('messages_privateposts').whereIn('recipient', Array.from(groups));
return result.map(async obj => await this.getPrivatePost(obj.mid));
}
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
/**
* @memberof GraphQL.MessageModel#
* @function getAllQuestions
* @summary Fonction qui renvoie toutes les questions posées aux groupes.
* @arg {GroupSet} groups - Un ensemble d'identifiants, supposés valides.
* @return {Promise(Announcement[])} Renvoie toutes les annonces émises par ces groupes
* @async
* @rights member of groups
*/
async getAllQuestions(groups: GroupSet): Promise<Announcement[]> {
let result = await knex.select('mid').from('messages_questions').whereIn('recipient', Array.from(groups));
return result.map(async obj => await this.getQuestion(obj.mid));
}
/**
* @memberof GraphQL.MessageModel#
* @function getAllAnswers
* @summary Fonction qui renvoie toutes les réponses données par le groupe.
* @arg {GroupSet} groups - Un ensemble d'identifiants, supposés valides.
* @return {Promise(Announcement[])} Renvoie toutes les annonces émises par ces groupes
* @async
* @rights member of groups
*/
async getAllAnswers(groups: GroupSet): Promise<Announcement[]> {
// L'auteur de la réponse n'est pas dans la table messages_answers car c'est forcément le recipient de la
// question à laquelle il répond.
let result = await knex.select('messages_answers.mid').from('messages_answers')
.innerJoin('messages_questions', 'messages_answers.for_question', 'messages_questions.mid')
.whereIn('messages_questions.recipient', groups);
return result.map(async obj => await this.getAnswer(obj.mid));
/**
* @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> {
try{
let res = await knex("events_participating_users").insert({mid : mid, uid : uid}, ['id']);
return true;
}catch(e){
return false;
}
}
/**
* @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> {
try{
let res = await knex("events_participating_users").where('mid' , mid).andWhere('uid',uid ).del();
return true;
}catch(e){
return false;
}
/**
* @memberof GraphQL.MessageModel#
* @function groupParticipate
* @summary Fonction pour participer a un evenement.
* @arg {string} gid - Identifiant du groupe.
* @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 groupParticipate(gid: string, mid: number): Promise<boolean> {
try{
let res = await knex("events_participating_groups").insert({gid : gid, mid : mid}, ['id']);
return true;
}catch(e){
return false;
}
}
/**
* @memberof GraphQL.MessageModel#
* @function groupUnparticipate
* @summary Fonction pour ne plus participer a un evenement.
* @arg {string} gid - Identifiant du groupe.
* @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 groupUnparticipate(gid: string, mid: number): Promise<boolean> {
try{
let res = await knex("events_participating_groups").where('mid' , mid).andWhere('gid',gid ).del();
return true;
}catch(e){
return false;
}
/**
* @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.
* @arg {string} uid - Identifiant de l'auteur.
* @return {Promise(Question)} Renvoie la question créée.
* @async
* @rights viewer du groupe
*/
async createQuestion(gid: string, title: string, content: string, uid : string): Promise<Question> {
let res= await knex("messages_questions").insert({recipient : gid, author : uid, title : title, content:content}, ['mid']);
return Question.tryCreate(res);
}
/**
* @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> {
let res= await knex("messages_questions").where('mid' , mid).update({title:title, content:content});
return Question.tryCreate(mid);
}
/**
* @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> {
try{
let res = await knex("messages_questions").where('mid' , mid).del();
return true;
}catch(e){
return false;
}
}
/**
* @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.
* @arg {string} uid - Identifiant de l'auteur.
* @return {Promise(PrivatePost)} Renvoie le post créé.
* @async
* @rights member du groupe
*/
async createPrivatePost(gid: string, title: string, content: string, uid : string): Promise<PrivatePost> {
let res= await knex("messages_private_posts").insert({recipient : gid, author : uid, title : title, content:content}, ['mid']);
return PrivatePost.tryCreate(res);
}
/**
* @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> {
let res= await knex("messages_private_posts").where('mid' , mid).update({title:title, content:content});
return PrivatePost.tryCreate(mid);
}
/**
* @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> {
try{
let res = await knex("messages_private_posts").where('mid' , mid).del();
return true;
}catch(e){
return false;
}
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
}
/**
* @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> {
try{
let res = await knex("messages_announcements").where('mid' , mid).del();
return true;
}catch(e){
return false;
}
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
}
/**
* @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> {
try{
let res = await knex("messages_events").where('mid' , mid).del();
return true;
}catch(e){
return false;
}
}
/**
* @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> {
let gid:string=await knex("messages_questions").where('mid',mid).select('recipient');
let res= await knex("messages_answers").insert({recipient : gid, title : title, content:content}, ['mid']);
return Answer.tryCreate(res);
}
/**
* @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> {
let res= await knex("messages_answers").where('mid' , mid).update({title:title, content:content});
return Answer.tryCreate(mid);
}
/**
* @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> {
try{
let res = await knex("messages_answers").where('mid' , mid).del();
return true;
}catch(e){
return false;
}
}
/**
* @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> {
}
/**
* @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> {
}
/**
* @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> {
}
/**
* @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> {
}
/**
* @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> {