diff --git a/back-end/src/controllers/marque.controller.ts b/back-end/src/controllers/marque.controller.ts index 1ccabea..beca463 100644 --- a/back-end/src/controllers/marque.controller.ts +++ b/back-end/src/controllers/marque.controller.ts @@ -1,43 +1,7 @@ import { Request, Response } from 'express'; -import { new_client } from '../db/db_client'; import { Marque } from '../types/marque'; -import { Either, eitherLeft, eitherRight } from '../utils/utils'; - -const getMarque = async (idOrName: number | string): Promise> => { - const client = new_client(); - await client.connect(); - let res; - if (typeof idOrName !== 'number') { - res = await client.query("SELECT * FROM marques WHERE nom_marque=$1;", [`${idOrName}`]); - } else { - res = await client.query("SELECT * FROM marques WHERE id_marque=$1;", [idOrName]); - } - if (res.rows.length === 0) { - await client.end(); - return eitherRight("Does not exist."); - } - const marque: Marque = { id_marque: res.rows[0].id_marque, name: res.rows[0].nom_marque }; - await client.end(); - - return eitherLeft(marque); -} - -const createMarque = async (name: string): Promise> => { - const gettingMarque = await getMarque(name); - if (!gettingMarque.hasRight) { - return eitherRight("Already in database."); - } - const client = new_client(); - await client.connect(); - const res = await client.query("INSERT INTO marques (nom_membre) VALUES ($1) RETURNING *;", [`${name}`]); - if (res.rows.length === 0) { - await client.end(); - return eitherRight("Something went wrong"); - } - const marque: Marque = { id_marque: res.rows[0].id_marque, name: res.rows[0].nom_marque }; - await client.end(); - return eitherLeft(marque); -}; +import marqueService from '../services/marque.service'; +import { Either } from '../utils/utils'; const register = async (req: Request, res: Response) => { if (!req || !req.body || !req.body.name) { @@ -45,7 +9,7 @@ const register = async (req: Request, res: Response) => { return; } const name: string = req.body.name; - const marque: Either = await createMarque(name); + const marque: Either = await marqueService.createMarque(name); if (marque.hasRight) { res.status(403).send(marque.right); return; @@ -54,4 +18,8 @@ const register = async (req: Request, res: Response) => { res.status(200).send(marque); } -export { register }; +const marqueController = { + register +}; + +export default marqueController; diff --git a/back-end/src/routes/marque.route.ts b/back-end/src/routes/marque.route.ts index b0619e5..4967d8f 100644 --- a/back-end/src/routes/marque.route.ts +++ b/back-end/src/routes/marque.route.ts @@ -1,8 +1,8 @@ import express from 'express'; -import { register } from '../controllers/marque.controller'; +import marqueController from '../controllers/marque.controller'; const router = express.Router(); -router.post('/register', register); +router.post('/register', marqueController.register); export default router; diff --git a/back-end/src/services/marque.service.ts b/back-end/src/services/marque.service.ts new file mode 100644 index 0000000..47eaf48 --- /dev/null +++ b/back-end/src/services/marque.service.ts @@ -0,0 +1,47 @@ +import { Request, Response } from 'express'; +import { new_client } from '../db/db_client'; +import { Marque } from '../types/marque'; +import { Either, eitherLeft, eitherRight } from '../utils/utils'; + +const getMarque = async (idOrName: number | string): Promise> => { + const client = new_client(); + await client.connect(); + let res; + if (typeof idOrName !== 'number') { + res = await client.query("SELECT * FROM marques WHERE nom_marque=$1;", [`${idOrName}`]); + } else { + res = await client.query("SELECT * FROM marques WHERE id_marque=$1;", [idOrName]); + } + if (res.rows.length === 0) { + await client.end(); + return eitherRight("Does not exist."); + } + const marque: Marque = { id_marque: res.rows[0].id_marque, name: res.rows[0].nom_marque }; + await client.end(); + + return eitherLeft(marque); +} + +const createMarque = async (name: string): Promise> => { + const gettingMarque = await getMarque(name); + if (!gettingMarque.hasRight) { + return eitherRight("Already in database."); + } + const client = new_client(); + await client.connect(); + const res = await client.query("INSERT INTO marques (nom_membre) VALUES ($1) RETURNING *;", [`${name}`]); + if (res.rows.length === 0) { + await client.end(); + return eitherRight("Something went wrong"); + } + const marque: Marque = { id_marque: res.rows[0].id_marque, name: res.rows[0].nom_marque }; + await client.end(); + return eitherLeft(marque); +}; + +const marqueService = { + getMarque, + createMarque +}; + +export default marqueService;