Forked from an inaccessible project.
-
Wilson JALLET authoredWilson JALLET authored
index.js 2.21 KiB
import server from './server';
import colors from 'colors';
import { graphqlExpress, graphiqlExpress } from 'graphql-server-express';
import makeExecutableSchema from 'graphql-tools';
import knex from '../db/knex_router';
import path from 'path';
/**
* @function Home
* @summary Renvoie l'accueil du backend
*/
server.get('/', function(req, res) {
console.log('Connecting to '+req.url);
res.render('home', {title: 'Home', port: port});
});
server.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.
*/
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)));