Skip to content

Commit 512f5b4

Browse files
committed
➕ADD: Listado de Modelos
Se genera el listado de modelos disponibles dentro de la api Issue # 6
1 parent 43634f5 commit 512f5b4

3 files changed

Lines changed: 48 additions & 22 deletions

File tree

app/config/env-config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ module.exports = {
88
"process.env.APP_PORT": APP_PORT,
99
"process.env.ODBC": `mongodb+srv://${USER_DB}:${PASS}@cluster0-eke4y.mongodb.net/${DB}?retryWrites=true&w=majority`,
1010
"process.env.HOST": HOST,
11+
"process.env.README": "https://github.com/OrcaPracticas/workshop-mongo/blob/develop/README.md",
1112
"process.env.CONFIG": {
1213
useNewUrlParser: true,
1314
useUnifiedTopology: true,

app/src/server/index.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,10 @@ import ApiRouter from "./router";
1212
// ======================== CONSTANTES ======================== //
1313

1414
const PORT = process.env.APP_PORT;
15+
const HOST_APP = process.env.HOST;
16+
const README_APP = process.env.README;
1517
const ROOT_PATH = Path.join(__dirname, "../../");
18+
const PATH = `${ROOT_PATH}src/models`;
1619
const Helpers = Tools.instance;
1720
const Server = Express();
1821

@@ -57,9 +60,10 @@ Server.use(ApiRouter(Router, Helpers));
5760
Server.use("/", (request, response) => {
5861
const { path = "" } = request;
5962
if (path === "/") {
63+
const LIST_MODELS = Helpers.listModels(PATH, HOST_APP, README_APP);
6064
Helpers.messages("Solicitud recibida", "s");
6165
response.status(200);
62-
response.send("<h1>API</h1>");
66+
response.json(LIST_MODELS);
6367
} else {
6468
Helpers.error(response, `Ruta no encontrada ${path}`, "Not found");
6569
}

app/src/tools/Helpers.js

Lines changed: 42 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,11 @@
11
import Colors from "cli-color";
2+
import { readdirSync } from "fs";
23

34
/* eslint-disable class-methods-use-this */
45
class Helper {
56
// Propiedad privada
67
static #instanceClass = null;
78

8-
/**
9-
* Permite conseguir los parametros que son enviados a las consultas.
10-
*
11-
* @param {Express} request Objeto referen te a expess.
12-
*
13-
* @returns {void}.
14-
*/
15-
prepareSetting(request) {
16-
const { body = {}, params } = request;
17-
const { field = "" } = params;
18-
params.field = (/_?id/.test(field)) ? "_id" : field;
19-
if (params.Model === "pokemon" && !body.img) {
20-
const { name = "default" } = body;
21-
const IMG = this.formatString(name);
22-
body.img = `${process.env.HOST}/pokemons/${IMG}.jpg`;
23-
}
24-
const setting = { body, Model: params.Model };
25-
delete params.Model;
26-
return { setting, ...params };
27-
}
28-
299
/**
3010
* Permite manejar el error 404
3111
*
@@ -101,6 +81,26 @@ class Helper {
10181
response.setHeader("Cache-Control", `max-age=${ttl}`);
10282
}
10383

84+
/**
85+
* Permite listar los modelos referentes a las colecciones disponibles.
86+
*
87+
* @param {String} path Ruta de donde se pueden cargar los modelos.
88+
* @param {String} host Url del host donde se esta probando.
89+
*
90+
* @return {Object}.
91+
*/
92+
listModels(path, host, readme) {
93+
const CONTENT = readdirSync(path);
94+
const models = CONTENT.reduce((list, file) => {
95+
if (file !== "index.js") {
96+
const MODEL = file.replace(/\..*/g, "");
97+
list[MODEL] = `${host}/${MODEL}/all`;
98+
}
99+
return list;
100+
}, {});
101+
return { readme, models };
102+
}
103+
104104
/**
105105
* Permite el envio de mensajes
106106
*
@@ -148,6 +148,27 @@ class Helper {
148148
console.log(log(` [${msg}] => ${auxText}`)); // eslint-disable-line
149149
}
150150

151+
/**
152+
* Permite conseguir los parametros que son enviados a las consultas.
153+
*
154+
* @param {Express} request Objeto referen te a expess.
155+
*
156+
* @returns {void}.
157+
*/
158+
prepareSetting(request) {
159+
const { body = {}, params } = request;
160+
const { field = "" } = params;
161+
params.field = (/_?id/.test(field)) ? "_id" : field;
162+
if (params.Model === "pokemon" && !body.img) {
163+
const { name = "default" } = body;
164+
const IMG = this.formatString(name);
165+
body.img = `${process.env.HOST}/pokemons/${IMG}.jpg`;
166+
}
167+
const setting = { body, Model: params.Model };
168+
delete params.Model;
169+
return { setting, ...params };
170+
}
171+
151172
/**
152173
* Permite conseguir una instancia de la clase.
153174
*

0 commit comments

Comments
 (0)