feat: add pieces per model
This commit is contained in:
parent
8cda756f6d
commit
a540c522f9
@ -1,6 +1,8 @@
|
|||||||
import { new_client } from '../db/db_client';
|
import { new_client } from '../db/db_client';
|
||||||
import { Model } from '../types/model';
|
import { Model } from '../types/model';
|
||||||
import { Either, eitherLeft, eitherRight } from '../utils/utils';
|
import { Either, eitherLeft, eitherRight, Pair, createPair } from '../utils/utils';
|
||||||
|
import { Piece } from '../types/piece';
|
||||||
|
import { getPiece } from './pieces.service';
|
||||||
|
|
||||||
type DBModel = {
|
type DBModel = {
|
||||||
id_modele: number;
|
id_modele: number;
|
||||||
@ -10,13 +12,27 @@ type DBModel = {
|
|||||||
id_modele_2: number;
|
id_modele_2: number;
|
||||||
};
|
};
|
||||||
|
|
||||||
function db2Model(data: DBModel) {
|
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 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']);
|
||||||
|
if (piece.hasRight)
|
||||||
|
continue;
|
||||||
|
arr.push(createPair(piece.left, res.rows[i]['quantite_necessiter'] as number));
|
||||||
|
}
|
||||||
|
return arr;
|
||||||
|
}
|
||||||
|
|
||||||
|
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)
|
||||||
};
|
};
|
||||||
|
|
||||||
return model;
|
return model;
|
||||||
@ -33,7 +49,7 @@ const getModel = async (idOrName: number | string): Promise<Either<Model, string
|
|||||||
if (res.rows.length === 0) {
|
if (res.rows.length === 0) {
|
||||||
return eitherRight<Model, string>("Does not exist.");
|
return eitherRight<Model, string>("Does not exist.");
|
||||||
}
|
}
|
||||||
const model = db2Model(res.rows[0]);
|
const model = await db2Model(res.rows[0]);
|
||||||
|
|
||||||
return eitherLeft<Model, string>(model);
|
return eitherLeft<Model, string>(model);
|
||||||
}
|
}
|
||||||
@ -42,8 +58,8 @@ const getAllModels = async () => {
|
|||||||
const client = new_client();
|
const client = new_client();
|
||||||
|
|
||||||
const res = await client.query("SELECT * FROM modeles");
|
const res = await client.query("SELECT * FROM modeles");
|
||||||
|
console.log("he");
|
||||||
return res.rows.map(db2Model);
|
return Promise.all(res.rows.map(async (el) => { return await db2Model(el) }));
|
||||||
}
|
}
|
||||||
|
|
||||||
const getAllModelsFromFans = async () => {
|
const getAllModelsFromFans = async () => {
|
||||||
@ -53,7 +69,7 @@ const getAllModelsFromFans = async () => {
|
|||||||
"SELECT * FROM modeles WHERE id_membre IS NOT NULL"
|
"SELECT * FROM modeles WHERE id_membre IS NOT NULL"
|
||||||
);
|
);
|
||||||
|
|
||||||
return res.rows.map(db2Model);
|
return Promise.all(res.rows.map(async (el) => { return await db2Model(el) }));
|
||||||
}
|
}
|
||||||
|
|
||||||
const getAllBuildableModels = async (id_member: number) => {
|
const getAllBuildableModels = async (id_member: number) => {
|
||||||
@ -64,7 +80,7 @@ const getAllBuildableModels = async (id_member: number) => {
|
|||||||
[id_member]
|
[id_member]
|
||||||
);
|
);
|
||||||
|
|
||||||
return res.rows.map(db2Model);
|
return Promise.all(res.rows.map(async (el) => { return await db2Model(el) }));
|
||||||
}
|
}
|
||||||
|
|
||||||
const getAllModelsByNote = async () => {
|
const getAllModelsByNote = async () => {
|
||||||
@ -74,7 +90,7 @@ const getAllModelsByNote = async () => {
|
|||||||
"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 res.rows.map(db2Model);
|
return Promise.all(res.rows.map(async (el) => { return await db2Model(el) }));
|
||||||
}
|
}
|
||||||
|
|
||||||
const createModel = async (name: string, url: string, creator: number, inheritFrom: number): Promise<Either<Model, string>> => {
|
const createModel = async (name: string, url: string, creator: number, inheritFrom: number): Promise<Either<Model, string>> => {
|
||||||
@ -93,7 +109,7 @@ const createModel = async (name: string, url: string, creator: number, inheritFr
|
|||||||
if (res.rows.length === 0) {
|
if (res.rows.length === 0) {
|
||||||
return eitherRight<Model, string>("Something went wrong");
|
return eitherRight<Model, string>("Something went wrong");
|
||||||
}
|
}
|
||||||
const model: Model = db2Model(res.rows[0]);
|
const model: Model = await db2Model(res.rows[0]);
|
||||||
return eitherLeft<Model, string>(model);
|
return eitherLeft<Model, string>(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,6 +21,14 @@
|
|||||||
url : <%= model.url %>
|
url : <%= model.url %>
|
||||||
creator : <%= model.creator %>
|
creator : <%= model.creator %>
|
||||||
inheritFrom : <%= model.inheritFrom %>
|
inheritFrom : <%= model.inheritFrom %>
|
||||||
|
pièces :
|
||||||
|
<% model.pieces.forEach(function(pair) { %>
|
||||||
|
<li>
|
||||||
|
<a href="/pieces/<%=pair.first.id_piece%>">
|
||||||
|
n°<%=pair.first.id_piece%> en <%=pair.second%> exemplaires
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<% }); %>
|
||||||
</pre>
|
</pre>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
|
@ -1,9 +1,13 @@
|
|||||||
|
import { Pair } from '../utils/utils';
|
||||||
|
import { Piece } from './piece';
|
||||||
|
|
||||||
type Model = {
|
type Model = {
|
||||||
id: number;
|
id: number;
|
||||||
name: string;
|
name: string;
|
||||||
url: string;
|
url: string;
|
||||||
creator: number;
|
creator: number;
|
||||||
inheritFrom: number;
|
inheritFrom: number;
|
||||||
|
pieces: Array<Pair<Piece, number>>
|
||||||
};
|
};
|
||||||
|
|
||||||
export { Model };
|
export { Model };
|
||||||
|
Loading…
x
Reference in New Issue
Block a user