feat: change list modele function functioné
This commit is contained in:
parent
30707747dc
commit
5a0b1f1a0f
@ -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
|
||||
(
|
||||
|
@ -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<Either<Member, string>> => {
|
||||
@ -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;
|
||||
|
@ -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<Array<Pair<Piece, number>>> {
|
||||
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<Pair<Piece, number>> = new Array();
|
||||
for (let i = 0; i < res.rows.length; ++i) {
|
||||
const piece: Either<Piece, string> = await getPiece(res.rows[i]['id_piece']);
|
||||
@ -26,16 +26,16 @@ async function getPiecesFromModel(id_model: number): Promise<Array<Pair<Piece, n
|
||||
}
|
||||
|
||||
async function db2Model(data: DBModel) {
|
||||
const model: Model = {
|
||||
id: data.id_modele,
|
||||
name: data.nom_modele,
|
||||
url: data.url_notice_modele,
|
||||
creator: data.id_membre,
|
||||
inheritFrom: data.id_modele_2,
|
||||
const model: Model = {
|
||||
id: data.id_modele,
|
||||
name: data.nom_modele,
|
||||
url: data.url_notice_modele,
|
||||
creator: data.id_membre,
|
||||
inheritFrom: data.id_modele_2,
|
||||
pieces: await getPiecesFromModel(data.id_modele)
|
||||
};
|
||||
};
|
||||
|
||||
return model;
|
||||
return model;
|
||||
}
|
||||
|
||||
const getModel = async (idOrName: number | string): Promise<Either<Model, string>> => {
|
||||
@ -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<Model, string>("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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user