From 5a0b1f1a0fa5e50e8ab7af110083d935413d593d Mon Sep 17 00:00:00 2001 From: Martin Eyben Date: Tue, 3 Dec 2024 11:57:05 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20change=20list=20modele=20function=20fun?= =?UTF-8?q?ction=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PostgreSQL/src/functions.sql | 8 +--- back-end/src/services/member.service.ts | 54 +++++++++++------------ back-end/src/services/model.service.ts | 58 ++++++++++++------------- 3 files changed, 58 insertions(+), 62 deletions(-) diff --git a/PostgreSQL/src/functions.sql b/PostgreSQL/src/functions.sql index b000f65..2fa93ea 100644 --- a/PostgreSQL/src/functions.sql +++ b/PostgreSQL/src/functions.sql @@ -14,16 +14,12 @@ $$ LANGUAGE SQL; ; - -- Liste des modèles faisables à partir d'un membre CREATE OR REPLACE FUNCTION modeles_faisables_membre(int) RETURNS TABLE( - id_modele int , - nom_modele VARCHAR(255) , - url_notice_modele VARCHAR(2048) , - id_membre int , id_modele_etendu int + id_modele int ) AS $$ -SELECT * +SELECT id_modele FROM modeles WHERE id_modele not IN ( diff --git a/back-end/src/services/member.service.ts b/back-end/src/services/member.service.ts index d0f0bac..d24b4d4 100644 --- a/back-end/src/services/member.service.ts +++ b/back-end/src/services/member.service.ts @@ -4,36 +4,36 @@ import { Model } from '../types/model'; import { Either, eitherLeft, eitherRight } from '../utils/utils'; type DBMembre = { - id_membre: number; - nom_membre: string; - mdp_membre: string; + id_membre: number; + nom_membre: string; + mdp_membre: string; }; type DBMembreAndNbModels = { - id_membre: number; - nom_membre: string; - mdp_membre: string; - nb_modele: number; + id_membre: number; + nom_membre: string; + mdp_membre: string; + nb_modele: number; }; function db2member(data: DBMembre): Member { - const member: Member = { - id_member: data.id_membre, - name: data.nom_membre, - password: data.mdp_membre, - }; - return member; + const member: Member = { + id_member: data.id_membre, + name: data.nom_membre, + password: data.mdp_membre, + }; + return member; } function db2memberAndNbModels(data: DBMembreAndNbModels): MemberAndNbModels { - const memberAndNbModels: MemberAndNbModels = { - id_member: data.id_membre, - name: data.nom_membre, - password: data.mdp_membre, - nb_models: data.nb_modele, - }; + const memberAndNbModels: MemberAndNbModels = { + id_member: data.id_membre, + name: data.nom_membre, + password: data.mdp_membre, + nb_models: data.nb_modele, + }; - return memberAndNbModels; + return memberAndNbModels; } const getMember = async (idOrName: number | string): Promise> => { @@ -86,13 +86,13 @@ function userAdapter(member: Member): User { } const memberService = { - getMember, - createMember, - getDefaultUser, - getDefaultMember, - userAdapter, - getAllMembers, - getAllMembersByNbModels, + getMember, + createMember, + getDefaultUser, + getDefaultMember, + userAdapter, + getAllMembers, + getAllMembersByNbModels, }; export default memberService; diff --git a/back-end/src/services/model.service.ts b/back-end/src/services/model.service.ts index f157663..311293a 100644 --- a/back-end/src/services/model.service.ts +++ b/back-end/src/services/model.service.ts @@ -5,16 +5,16 @@ import { Piece } from '../types/piece'; import { getPiece } from './pieces.service'; type DBModel = { - id_modele: number; - nom_modele: string; - url_notice_modele: string; - id_membre: number; - id_modele_2: number; + id_modele: number; + nom_modele: string; + url_notice_modele: string; + id_membre: number; + id_modele_2: number; }; async function getPiecesFromModel(id_model: number): Promise>> { const client = new_client(); - const res = await client.query(`SELECT * FROM necessiter WHERE id_modele = $1;`, [ id_model ]); + const res = await client.query(`SELECT * FROM necessiter WHERE id_modele = $1;`, [id_model]); const arr: Array> = new Array(); for (let i = 0; i < res.rows.length; ++i) { const piece: Either = await getPiece(res.rows[i]['id_piece']); @@ -26,16 +26,16 @@ async function getPiecesFromModel(id_model: number): Promise> => { @@ -66,8 +66,8 @@ const getAllModelsFromFans = async () => { const client = new_client(); const res = await client.query( - "SELECT * FROM modeles WHERE id_membre IS NOT NULL" - ); + "SELECT * FROM modeles WHERE id_membre IS NOT NULL" + ); return Promise.all(res.rows.map(async (el) => { return await db2Model(el) })); } @@ -76,9 +76,9 @@ const getAllBuildableModels = async (id_member: number) => { const client = new_client(); const res = await client.query( - "SELECT modeles_faisables_membre($1)", - [id_member] - ); + "SELECT * FROM modeles WHERE id_modele in (SELECT id_modele FROM modeles_faisables_membre($1))", + [id_member] + ); return Promise.all(res.rows.map(async (el) => { return await db2Model(el) })); } @@ -87,8 +87,8 @@ const getAllModelsByNote = async () => { const client = new_client(); const res = await client.query( - "SELECT modeles.*, AVG(note_noter) as note_moyenne FROM noter JOIN modeles on noter.id_modele = modeles.id_modele GROUP BY modeles.id_modele ORDER BY note_moyenne DESC;" - ); + "SELECT modeles.*, AVG(note_noter) as note_moyenne FROM noter JOIN modeles on noter.id_modele = modeles.id_modele GROUP BY modeles.id_modele ORDER BY note_moyenne DESC;" + ); return Promise.all(res.rows.map(async (el) => { return await db2Model(el) })); } @@ -100,11 +100,11 @@ const createModel = async (name: string, url: string, creator: number, inheritFr } const client = new_client(); const res = await client.query( - "INSERT INTO modeles \ + "INSERT INTO modeles \ (nom_modele, url_notice_modele, id_membre, id_modele_2) \ VALUES ($1, $2, $3, $4) \ RETURNING *;", - [`${name}`, `${url}`, `${creator}`, `${inheritFrom}`]); + [`${name}`, `${url}`, `${creator}`, `${inheritFrom}`]); if (res.rows.length === 0) { return eitherRight("Something went wrong"); @@ -114,12 +114,12 @@ const createModel = async (name: string, url: string, creator: number, inheritFr } const modelService = { - getModel, - getAllModels, - createModel, - getAllModelsFromFans, - getAllModelsByNote, - getAllBuildableModels, + getModel, + getAllModels, + createModel, + getAllModelsFromFans, + getAllModelsByNote, + getAllBuildableModels, }; export default modelService;