lego/back-end/src/services/marque.service.ts
2024-11-10 17:04:37 +01:00

48 lines
1.6 KiB
TypeScript

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<Either<Marque, string>> => {
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<Marque, string>("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, string>(marque);
}
const createMarque = async (name: string): Promise<Either<Marque, string>> => {
const gettingMarque = await getMarque(name);
if (!gettingMarque.hasRight) {
return eitherRight<Marque, string>("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<Marque, string>("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, string>(marque);
};
const marqueService = {
getMarque,
createMarque
};
export default marqueService;