Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
gdd-sigma-poc
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Guillaume WANG
gdd-sigma-poc
Commits
9052f60f
Commit
9052f60f
authored
6 years ago
by
Olivér FACKLAM
Browse files
Options
Downloads
Patches
Plain Diff
messageModel.ts
parent
3bed8dca
No related branches found
No related tags found
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
src/graphql/connectors/messageModel.ts
+463
-0
463 additions, 0 deletions
src/graphql/connectors/messageModel.ts
src/graphql/connectors/tools.ts
+2
-0
2 additions, 0 deletions
src/graphql/connectors/tools.ts
src/graphql/typeDefs/actions.graphql
+5
-4
5 additions, 4 deletions
src/graphql/typeDefs/actions.graphql
with
470 additions
and
4 deletions
src/graphql/connectors/messageModel.ts
0 → 100644
+
463
−
0
View file @
9052f60f
/**
* @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
This diff is collapsed.
Click to expand it.
src/graphql/connectors/tools.ts
+
2
−
0
View file @
9052f60f
...
...
@@ -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
This diff is collapsed.
Click to expand it.
src/graphql/typeDefs/actions.graphql
+
5
−
4
View file @
9052f60f
...
...
@@ -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
!
):
Questio
n
):
Boolea
n
# 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
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment