Ce projet est un serveur GraphQL simple qui gère une base de données en mémoire d'utilisateurs et de posts. Il permet de créer, lire, mettre à jour et supprimer des utilisateurs et des posts, ainsi que d'aimer des posts.
- Clonez ce dépôt
- Installez les dépendances avec
npm install - Démarrez le serveur avec
npm start - Accédez à l'interface GraphQL à l'adresse http://localhost:4000/graphql
- Gestion complète des utilisateurs (CRUD)
- Gestion complète des posts (CRUD)
- Relation entre utilisateurs et posts
- Possibilité d'aimer des posts
src/index.js: Point d'entrée du serveursrc/schema.js: Définition du schéma GraphQLsrc/resolvers.js: Implémentation des resolvers GraphQLsrc/data.js: Base de données en mémoire et fonctions d'accès aux données
query GetAllUsers {
users {
id
username
email
createdAt
posts {
id
title
}
}
}query GetUser {
user(id: "1") {
id
username
email
posts {
id
title
content
publishedAt
likes
}
}
}query GetAllPosts {
posts {
id
title
content
publishedAt
likes
author {
id
username
}
}
}query GetPost {
post(id: "1") {
id
title
content
publishedAt
likes
author {
id
username
email
}
}
}mutation CreateUser {
createUser(input: {
username: "charlie",
email: "charlie@example.com"
}) {
id
username
email
createdAt
}
}mutation UpdateUser {
updateUser(
id: "1",
input: {
username: "alice_updated",
email: "alice_new@example.com"
}
) {
id
username
email
}
}mutation DeleteUser {
deleteUser(id: "3")
}mutation CreatePost {
createPost(input: {
title: "Nouveau post",
content: "Contenu du nouveau post",
authorId: "1"
}) {
id
title
content
publishedAt
likes
author {
username
}
}
}mutation UpdatePost {
updatePost(
id: "1",
input: {
title: "Titre mis à jour",
content: "Contenu mis à jour",
authorId: "1"
}
) {
id
title
content
}
}mutation DeletePost {
deletePost(id: "3")
}mutation LikePost {
likePost(id: "1") {
id
title
likes
}
}id: Identifiant uniqueusername: Nom d'utilisateuremail: Adresse emailposts: Liste des posts de l'utilisateurcreatedAt: Date de création du compte
id: Identifiant uniquetitle: Titre du postcontent: Contenu du postauthor: Utilisateur qui a créé le postpublishedAt: Date de publicationlikes: Nombre de likes