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
4adf25e2
Commit
4adf25e2
authored
6 years ago
by
Wilson JALLET
Browse files
Options
Downloads
Patches
Plain Diff
message type resolution + remove deprecated schema JS files
parent
efa79425
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/resolvers/messages.js
+10
-1
10 additions, 1 deletion
src/graphql/resolvers/messages.js
src/graphql/typeDefs/actions.js
+0
-258
0 additions, 258 deletions
src/graphql/typeDefs/actions.js
src/graphql/typeDefs/objects.js
+0
-255
0 additions, 255 deletions
src/graphql/typeDefs/objects.js
with
10 additions
and
514 deletions
src/graphql/resolvers/messages.js
+
10
−
1
View file @
4adf25e2
...
...
@@ -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
"
;
}
},
...
...
This diff is collapsed.
Click to expand it.
src/graphql/typeDefs/actions.js
deleted
100644 → 0
+
0
−
258
View file @
efa79425
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
;
This diff is collapsed.
Click to expand it.
src/graphql/typeDefs/objects.js
deleted
100644 → 0
+
0
−
255
View file @
efa79425
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
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