feat: change list modele function functioné
This commit is contained in:
parent
30707747dc
commit
5a0b1f1a0f
@ -14,16 +14,12 @@ $$
|
|||||||
LANGUAGE SQL;
|
LANGUAGE SQL;
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
-- Liste des modèles faisables à partir d'un membre
|
-- Liste des modèles faisables à partir d'un membre
|
||||||
CREATE OR REPLACE FUNCTION modeles_faisables_membre(int) RETURNS TABLE(
|
CREATE OR REPLACE FUNCTION modeles_faisables_membre(int) RETURNS TABLE(
|
||||||
id_modele int ,
|
id_modele int
|
||||||
nom_modele VARCHAR(255) ,
|
|
||||||
url_notice_modele VARCHAR(2048) ,
|
|
||||||
id_membre int , id_modele_etendu int
|
|
||||||
) AS
|
) AS
|
||||||
$$
|
$$
|
||||||
SELECT *
|
SELECT id_modele
|
||||||
FROM modeles
|
FROM modeles
|
||||||
WHERE id_modele not IN
|
WHERE id_modele not IN
|
||||||
(
|
(
|
||||||
|
@ -4,36 +4,36 @@ import { Model } from '../types/model';
|
|||||||
import { Either, eitherLeft, eitherRight } from '../utils/utils';
|
import { Either, eitherLeft, eitherRight } from '../utils/utils';
|
||||||
|
|
||||||
type DBMembre = {
|
type DBMembre = {
|
||||||
id_membre: number;
|
id_membre: number;
|
||||||
nom_membre: string;
|
nom_membre: string;
|
||||||
mdp_membre: string;
|
mdp_membre: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
type DBMembreAndNbModels = {
|
type DBMembreAndNbModels = {
|
||||||
id_membre: number;
|
id_membre: number;
|
||||||
nom_membre: string;
|
nom_membre: string;
|
||||||
mdp_membre: string;
|
mdp_membre: string;
|
||||||
nb_modele: number;
|
nb_modele: number;
|
||||||
};
|
};
|
||||||
|
|
||||||
function db2member(data: DBMembre): Member {
|
function db2member(data: DBMembre): Member {
|
||||||
const member: Member = {
|
const member: Member = {
|
||||||
id_member: data.id_membre,
|
id_member: data.id_membre,
|
||||||
name: data.nom_membre,
|
name: data.nom_membre,
|
||||||
password: data.mdp_membre,
|
password: data.mdp_membre,
|
||||||
};
|
};
|
||||||
return member;
|
return member;
|
||||||
}
|
}
|
||||||
|
|
||||||
function db2memberAndNbModels(data: DBMembreAndNbModels): MemberAndNbModels {
|
function db2memberAndNbModels(data: DBMembreAndNbModels): MemberAndNbModels {
|
||||||
const memberAndNbModels: MemberAndNbModels = {
|
const memberAndNbModels: MemberAndNbModels = {
|
||||||
id_member: data.id_membre,
|
id_member: data.id_membre,
|
||||||
name: data.nom_membre,
|
name: data.nom_membre,
|
||||||
password: data.mdp_membre,
|
password: data.mdp_membre,
|
||||||
nb_models: data.nb_modele,
|
nb_models: data.nb_modele,
|
||||||
};
|
};
|
||||||
|
|
||||||
return memberAndNbModels;
|
return memberAndNbModels;
|
||||||
}
|
}
|
||||||
|
|
||||||
const getMember = async (idOrName: number | string): Promise<Either<Member, string>> => {
|
const getMember = async (idOrName: number | string): Promise<Either<Member, string>> => {
|
||||||
@ -86,13 +86,13 @@ function userAdapter(member: Member): User {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const memberService = {
|
const memberService = {
|
||||||
getMember,
|
getMember,
|
||||||
createMember,
|
createMember,
|
||||||
getDefaultUser,
|
getDefaultUser,
|
||||||
getDefaultMember,
|
getDefaultMember,
|
||||||
userAdapter,
|
userAdapter,
|
||||||
getAllMembers,
|
getAllMembers,
|
||||||
getAllMembersByNbModels,
|
getAllMembersByNbModels,
|
||||||
};
|
};
|
||||||
|
|
||||||
export default memberService;
|
export default memberService;
|
||||||
|
@ -5,16 +5,16 @@ import { Piece } from '../types/piece';
|
|||||||
import { getPiece } from './pieces.service';
|
import { getPiece } from './pieces.service';
|
||||||
|
|
||||||
type DBModel = {
|
type DBModel = {
|
||||||
id_modele: number;
|
id_modele: number;
|
||||||
nom_modele: string;
|
nom_modele: string;
|
||||||
url_notice_modele: string;
|
url_notice_modele: string;
|
||||||
id_membre: number;
|
id_membre: number;
|
||||||
id_modele_2: number;
|
id_modele_2: number;
|
||||||
};
|
};
|
||||||
|
|
||||||
async function getPiecesFromModel(id_model: number): Promise<Array<Pair<Piece, number>>> {
|
async function getPiecesFromModel(id_model: number): Promise<Array<Pair<Piece, number>>> {
|
||||||
const client = new_client();
|
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();
|
const arr: Array<Pair<Piece, number>> = new Array();
|
||||||
for (let i = 0; i < res.rows.length; ++i) {
|
for (let i = 0; i < res.rows.length; ++i) {
|
||||||
const piece: Either<Piece, string> = await getPiece(res.rows[i]['id_piece']);
|
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) {
|
async function db2Model(data: DBModel) {
|
||||||
const model: Model = {
|
const model: Model = {
|
||||||
id: data.id_modele,
|
id: data.id_modele,
|
||||||
name: data.nom_modele,
|
name: data.nom_modele,
|
||||||
url: data.url_notice_modele,
|
url: data.url_notice_modele,
|
||||||
creator: data.id_membre,
|
creator: data.id_membre,
|
||||||
inheritFrom: data.id_modele_2,
|
inheritFrom: data.id_modele_2,
|
||||||
pieces: await getPiecesFromModel(data.id_modele)
|
pieces: await getPiecesFromModel(data.id_modele)
|
||||||
};
|
};
|
||||||
|
|
||||||
return model;
|
return model;
|
||||||
}
|
}
|
||||||
|
|
||||||
const getModel = async (idOrName: number | string): Promise<Either<Model, string>> => {
|
const getModel = async (idOrName: number | string): Promise<Either<Model, string>> => {
|
||||||
@ -66,8 +66,8 @@ const getAllModelsFromFans = async () => {
|
|||||||
const client = new_client();
|
const client = new_client();
|
||||||
|
|
||||||
const res = await client.query(
|
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) }));
|
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 client = new_client();
|
||||||
|
|
||||||
const res = await client.query(
|
const res = await client.query(
|
||||||
"SELECT modeles_faisables_membre($1)",
|
"SELECT * FROM modeles WHERE id_modele in (SELECT id_modele FROM modeles_faisables_membre($1))",
|
||||||
[id_member]
|
[id_member]
|
||||||
);
|
);
|
||||||
|
|
||||||
return Promise.all(res.rows.map(async (el) => { return await db2Model(el) }));
|
return Promise.all(res.rows.map(async (el) => { return await db2Model(el) }));
|
||||||
}
|
}
|
||||||
@ -87,8 +87,8 @@ const getAllModelsByNote = async () => {
|
|||||||
const client = new_client();
|
const client = new_client();
|
||||||
|
|
||||||
const res = await client.query(
|
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) }));
|
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 client = new_client();
|
||||||
const res = await client.query(
|
const res = await client.query(
|
||||||
"INSERT INTO modeles \
|
"INSERT INTO modeles \
|
||||||
(nom_modele, url_notice_modele, id_membre, id_modele_2) \
|
(nom_modele, url_notice_modele, id_membre, id_modele_2) \
|
||||||
VALUES ($1, $2, $3, $4) \
|
VALUES ($1, $2, $3, $4) \
|
||||||
RETURNING *;",
|
RETURNING *;",
|
||||||
[`${name}`, `${url}`, `${creator}`, `${inheritFrom}`]);
|
[`${name}`, `${url}`, `${creator}`, `${inheritFrom}`]);
|
||||||
|
|
||||||
if (res.rows.length === 0) {
|
if (res.rows.length === 0) {
|
||||||
return eitherRight<Model, string>("Something went wrong");
|
return eitherRight<Model, string>("Something went wrong");
|
||||||
@ -114,12 +114,12 @@ const createModel = async (name: string, url: string, creator: number, inheritFr
|
|||||||
}
|
}
|
||||||
|
|
||||||
const modelService = {
|
const modelService = {
|
||||||
getModel,
|
getModel,
|
||||||
getAllModels,
|
getAllModels,
|
||||||
createModel,
|
createModel,
|
||||||
getAllModelsFromFans,
|
getAllModelsFromFans,
|
||||||
getAllModelsByNote,
|
getAllModelsByNote,
|
||||||
getAllBuildableModels,
|
getAllBuildableModels,
|
||||||
};
|
};
|
||||||
|
|
||||||
export default modelService;
|
export default modelService;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user