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