Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions HW9(http)/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/node_modules
11 changes: 11 additions & 0 deletions HW9(http)/app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
const express = require('express');
const router = require('./router.js');

const app = express();
const port = 3333;

app.use('/', router);

app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`)
});
18 changes: 18 additions & 0 deletions HW9(http)/controller.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
const model = require('./model.js');
const model2 = require('./model2.js');

class Controller {

async getList(req, res) {
const someIdFromReq = req.userId;
const list = await model.getList();
const extraData = await model2.getExtraDataById(someIdFromReq);
// If we work with a view,
// we can generate a page based on the data from the model
// and send it to the router already
res.locals.list = [...list, ...extraData];
}

}

module.exports = new Controller();
13 changes: 13 additions & 0 deletions HW9(http)/middleware.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
const MiddlewareCreator = (controllerMethod) => {
return async(req, res, next) => {
try {
await controllerMethod(req, res);
next();
} catch (e) {
// here we can handle errors
res.status(e.code || 500).send({ error: e.message || 'Something went wrong' });
}
};
};

module.exports = MiddlewareCreator;
15 changes: 15 additions & 0 deletions HW9(http)/model.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
// here we calculate all the business logic

const repository = require('./repository.js');

class Model {

async getList() {
// processing the data depending on the phase of the moon
const listFromDb = await repository.getListFromDb();
return listFromDb.map((elem)=>'User Number ' + elem);
}

}

module.exports = new Model();
16 changes: 16 additions & 0 deletions HW9(http)/model2.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// here we calculate all the business logic

const repository = require('./repository.js');

class Model2 {

async getExtraDataById(id) {
// processing the data depending on the phase of the moon
const listFromDb = await repository.getExtraDataByIdFromDb(id);
return listFromDb.map((elem)=>'User Number ' + elem);
}


}

module.exports = new Model2();
Loading