______ ____ ___
/\__ _\/\ _`\ /'___`\
\/_/\ \/\ \ \L\ \/\_\ /\ \
\ \ \ \ \ ,__/\/_/// /__
\ \ \ \ \ \/ // /_\ \
\ \_\ \ \_\ /\______/
\/_/ \/_/ \/_____/
Cette api est un projet que j'ai mis sur gitlab je le met sur github pour le devops, ceci explique pourquoi il y a peu de commit, et donc un mauvais suivi de l'avancement du projet. J'avais initialement fait avec docker, j'ai juste modifié pour y mettre le sqlite, pour avoir plusieurs methode.
Il y a des tables qui n'ont pas de 'update', car sur les écrans de l'application, je considère que si on se trompe on le supprime et on le recommence.
git clone https://gitlab.com/ydays3993040/greeny/api-node-js.gitnpm installand then
npm run startnpm run seedernpx prisma migrate reset Dans le fichier prisma/schema.prisma ajouter un model tel que
model User {
id Int @id @default(autoincrement())
email String @unique
name String?
posts Post[]
}Se mettre à la racine du projet et execute la commande suivante
docker-compose up -dregarder la table
docker exec -it postgres_container psql -U postgres -d apiv2.0npx prisma migrate dev --name add-user-modelCree un fichier dans le dossier src/routes tel que user.js
import express from "express";
import * as usersController from "../controllers/usersController.js";
import {isPasswordDigitValid, isEmailValid, isPasswordCasse, isPasswordLong} from "../middlewares/usersMiddleware.js";
const router = express.Router();
// nous avons crée des middlewares pour verifier les données
const middlewares = [isEmailValid, isPasswordDigitValid, isPasswordCasse, isPasswordLong]
//aisni nous pouvons les utiliser dans notre route
router.get('/', usersController.getUsers);
router.post('/create', middlewares, usersController.createUser);
router.delete('/delete', usersController.deleteUser);
export default router;Cree un fichier dans le dossier src/controllers tel que usersController.js
import prisma from "../prisma/client.js";
export const getUsers = async (req, res) => {
const users = await prisma.user.findMany();
res.json(users);
};
export const createUser = async (req, res) => {
const { email, name } = req.body;
const user = await prisma.user.create({
data: {
email,
name,
},
});
res.json(user);
};
export const deleteUser = async (req, res) => {
const { id } = req.body;
const user = await prisma.user.delete({
where: {
id: Number(id),
},
});
res.json(user);
};Cree un fichier dans le dossier src/middlewares tel que usersMiddleware.js
// nous avons crée des middlewares pour verifier la validité de l'email
export const isEmailValid = (req, res, next) => {
const { email } = req.body;
if (!email.includes("@")) {
return res.status(400).json({ message: "email is not valid" });
}
next();
};Cree un fichier dans le dossier src/services tel que usersService.js
import prisma from "../prisma/client.js";
export const getUsers = async () => {
return await prisma.user.findMany();
};
export const createUser = async (email, name) => {
return await prisma.user.create({
data: {
email,
name,
},
});
};Created by - Léo Fauré - 2024