From 7ea5ec21203890933a42962080c1865ffc619e7b Mon Sep 17 00:00:00 2001 From: Guillaume WANG <guillaume.wang@polytechnique.edu> Date: Tue, 27 Feb 2018 18:02:43 +0100 Subject: [PATCH] Restructured JS source files --- src/admin_view/admin_view.js | 82 ++++++++++++++++++++++++++++++++ src/index.js | 82 ++++---------------------------- src/{ => ldap_auth}/ldap_auth.js | 0 src/{ => ldap_data}/ldap_data.js | 0 src/server.js | 19 +++++--- src/views/layout.pug | 1 + 6 files changed, 105 insertions(+), 79 deletions(-) create mode 100644 src/admin_view/admin_view.js rename src/{ => ldap_auth}/ldap_auth.js (100%) rename src/{ => ldap_data}/ldap_data.js (100%) diff --git a/src/admin_view/admin_view.js b/src/admin_view/admin_view.js new file mode 100644 index 0000000..72641e7 --- /dev/null +++ b/src/admin_view/admin_view.js @@ -0,0 +1,82 @@ +/** + * @file admin_view + * @summary Interface "administrateur" de l'acces aux BDD + * + */ +import express from 'express'; +import knex from '../../db/knex_router'; + +const router = express.Router(); + +let port = 3000; + +router.get('/', function (req, res) { + console.log('Connecting to ' + req.url); + res.render('home', { title: 'Home', port: port }); +}); + +router.get('/db?', function (req, res) { + let table_name = req.query.table; + let columns = req.query.columns; + + res.redirect(`db/${table_name}?columns=${columns}`); +}); + +/** + * @function Knex API: Get table + * @summary Effectue une requête pour une table dans la BDD + * @argument {string} table_name - La table voulue par l'utilisateur. + */ +router.get('/db/:table_name?', function (req, res) { + + // get columns from query + let columns; + if (req.query.columns) { + columns = req.query.columns.split(','); + } else { + columns = null; + } + console.log(columns); + + knex.select(columns).from(req.params.table_name).then(function (table) { + res.setHeader("Content-Type", "application/json"); + res.write(JSON.stringify(table, null, 2)); + res.end(); + }, function () { + res.status(400); + res.render('error', { + status: res.statusCode, + error_message: "Bad request: can't find table " + req.params.table_name + }); + res.end(); + } + ); +}); + +/** + * @function Error 404 catcher + * @summary Catche les requêtes en dehors des URL acceptées + */ +router.use((req, res, next) => { + let err = new Error('Not found'); + err.status = 404; + next(err); +}); + +/** + * @function Error 404 handler + * @summary Gère les erreurs 404 + */ + +router.use((err, req, res, next) => { + res.locals.message = err.message; + + res.status(err.status || 500); + let error_message = res.statusCode == 404 ? 'Not found.' : 'Internal server error.'; + res.render('error', { + status: res.statusCode, + error_message: error_message + }); +}); + +export default router; \ No newline at end of file diff --git a/src/index.js b/src/index.js index 7e96a3e..f9c12e2 100644 --- a/src/index.js +++ b/src/index.js @@ -1,4 +1,5 @@ import server from './server'; +import router from './admin_view/admin_view'; import colors from 'colors'; import { graphqlExpress, graphiqlExpress } from 'graphql-server-express'; import makeExecutableSchema from 'graphql-tools'; @@ -6,79 +7,14 @@ import knex from '../db/knex_router'; import path from 'path'; /** - * @function Home - * @summary Renvoie l'accueil du backend + * @file index + * @summary Entry point de webpack + * */ -server.get('/', function(req, res) { - console.log('Connecting to '+req.url); - res.render('home', {title: 'Home', port: port}); -}); +server.use(router); -server.get('/db?', function(req, res) { - let table_name = req.query.table; - let columns = req.query.columns; +let port = process.env.PORT || 3000; - res.redirect(`db/${table_name}?columns=${columns}`); -}); - -/** - * @function Knex API: Get table - * @summary Effectue une requête pour une table dans la BDD - * @argument {string} table_name - La table voulue par l'utilisateur. - */ -server.get('/db/:table_name?', function(req, res) { - - // get columns from query - let columns; - if (req.query.columns) { - columns = req.query.columns.split(','); - } else { - columns = null; - } - console.log(columns); - - knex.select(columns).from(req.params.table_name).then(function(table) { - res.setHeader("Content-Type", "application/json"); - res.write(JSON.stringify(table,null,2)); - res.end(); - },function() { - res.status(400); - res.render('error', { - status: res.statusCode, - error_message: "Bad request: can't find table " + req.params.table_name - }); - res.end(); - } - ); -}); - -/** - * @function Error 404 catcher - * @summary Catche les requêtes en dehors des URL acceptées - */ -server.use((req, res, next) => { - let err = new Error('Not found'); - err.status = 404; - next(err); -}); - -/** - * @function Error 404 handler - * @summary Gère les erreurs 404 - */ - -server.use((err, req, res, next) => { - res.locals.message = err.message; - - res.status(err.status || 500); - let error_message = res.statusCode == 404 ? 'Not found.' : 'Internal server error.'; - res.render('error', { - status: res.statusCode, - error_message: error_message - }); -}); - -// define port server is to listen on -const port = process.env.PORT || 3000; - -server.listen(port, () => console.log(colors.blue('Express server running on port', port))); \ No newline at end of file +server.listen(port, () => { + console.log(colors.blue(`Express server listening on port ${port}`)); +}); \ No newline at end of file diff --git a/src/ldap_auth.js b/src/ldap_auth/ldap_auth.js similarity index 100% rename from src/ldap_auth.js rename to src/ldap_auth/ldap_auth.js diff --git a/src/ldap_data.js b/src/ldap_data/ldap_data.js similarity index 100% rename from src/ldap_data.js rename to src/ldap_data/ldap_data.js diff --git a/src/server.js b/src/server.js index 2563f70..b24da82 100644 --- a/src/server.js +++ b/src/server.js @@ -3,28 +3,35 @@ import bodyParser from 'body-parser'; import favicon from 'serve-favicon'; import morgan from 'morgan'; import path from 'path'; -import ldap_auth from './ldap_auth'; +import ldap_auth from './ldap_auth/ldap_auth'; + +/** + * @file server.js + * @summary Cree le serveur express avec tous les middleware qui vont bien + * +*/ const server = express(); +// on sait pas a quoi ca sert mais il parait que c'est utile server.use(bodyParser.json()); server.use(bodyParser.urlencoded({ extended: false })); -// setting up view engine +// setting up view engine for pug let viewpath = path.resolve('./','src','views'); console.log(viewpath); server.set('views', viewpath); server.set('view engine', 'pug'); -// setting up ldap authentication -ldap_auth(server); - -// a capital sigma symbol +// favicon: capital sigma symbol server.use(favicon(path.resolve('./','assets','favicon.ico'))); // Morgan is middleware for logging requests server.use(morgan('dev')); +// setting up ldap authentication +ldap_auth(server); + export default server; diff --git a/src/views/layout.pug b/src/views/layout.pug index bfc94dd..6bb139b 100644 --- a/src/views/layout.pug +++ b/src/views/layout.pug @@ -10,3 +10,4 @@ html(lang="en") title API server - #{title} body block content + \ No newline at end of file -- GitLab