Skip to content

Repository files navigation

 ______  ____       ___     
/\__  _\/\  _`\   /'___`\   
\/_/\ \/\ \ \L\ \/\_\ /\ \  
   \ \ \ \ \ ,__/\/_/// /__ 
    \ \ \ \ \ \/    // /_\ \
     \ \_\ \ \_\   /\______/
      \/_/  \/_/   \/_____/

explication

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.

GreenY - api v2


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.


Installation

git clone https://gitlab.com/ydays3993040/greeny/api-node-js.git
npm install

and then

npm run start

execute seeder

npm run seeder

drop table

npx prisma migrate reset	

create api v2

create a model

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[]  
}

Avec docker

Se mettre à la racine du projet et execute la commande suivante

docker-compose up -d

regarder la table

docker exec -it postgres_container psql -U postgres -d apiv2.0

create a migration

npx prisma migrate dev --name add-user-model

create routes

Cree 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;

create controller

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);
};

create middlewares

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();
};

create a service

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

About

Module Back end Greeny

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages