const express = require('express'); const session = require('express-session'); const RedisStore = require('connect-redis')(session); // const flash = require('express-flasher'); // instantiate new express.js app const app = express(); const config = require('config'); // initialize database connection (async () => { const db = require('./src/models'); await db.sequelize.sync({ alter: true, }); })(); // initialize Redis store for session data const redisClient = require('./src/redis'); // initialize express.js session w/ Redis datastore app.use(session({ store: new RedisStore({ client: redisClient, }), // use Redis datastore resave: false, // don't save session if unmodified saveUninitialized: false, // don't create session until something stored secret: 'lord of the rings', })); // setup flash messaging // app.use(flash.flash()); // app.use(flash.flashRead()); // set up body POST parameters app.use(express.json()); app.use(express.urlencoded({ extended: true, })); // load the template engine app.set('view engine', 'twig'); // enable static file serving app.use(express.static('public')); // load route handlers const homeRoutes = require('./src/routes/home'); const itemRoutes = require('./src/routes/item'); // register route handlers app.get('/', homeRoutes.getIndex); app.get('/item/add', itemRoutes.getAdd); app.post('/item/add', itemRoutes.postAdd); app.get('/item/:id', itemRoutes.getItem); app.get('/item/:id/edit', itemRoutes.getItemEdit); app.post('/item/:id/edit', itemRoutes.postItemEdit); // start app app.listen(config.get('server.port'), config.get('server.address'), () => { console.log(`Overseer is listening on port ${config.get('server.port')}.`); });