app.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import createError from "http-errors";
  2. import express from 'express';
  3. import path from 'path';
  4. import cookieParser from 'cookie-parser';
  5. import logger from 'morgan';
  6. import mongoose from "mongoose";
  7. import {passport} from "./passport.js";
  8. import {router as authRouter} from "./routes/auth.js";
  9. import {router as memberRouter} from "./routes/members.js";
  10. import {router as appointmentsRouter} from "./routes/appointments.js";
  11. import {fileURLToPath} from "url";
  12. const __filename = fileURLToPath(import.meta.url);
  13. const __dirname = path.dirname(__filename);
  14. const app = express();
  15. const DB_CONNECTION_STRING = process.env.DB_CONNECTION.toString();
  16. async function connect() {
  17. await mongoose.connect(DB_CONNECTION_STRING)
  18. .then(() => console.log('Connected to the database'))
  19. .catch(err => console.error('Database connection error:', err));
  20. }
  21. // view engine setup
  22. app.set('views', path.join(__dirname, 'views'));
  23. app.set('view engine', 'pug');
  24. app.use(logger('dev'));
  25. app.use(express.json());
  26. app.use(express.urlencoded({ extended: false }));
  27. app.use(cookieParser());
  28. app.use(express.static(path.join(__dirname, 'public')));
  29. app.use(passport.initialize());
  30. app.use('/api/users', memberRouter);
  31. app.use('/api/schedule', appointmentsRouter);
  32. app.use('/api/auth', authRouter);
  33. // catch 404 and forward to error handler
  34. app.use(function(req, res, next) {
  35. next(createError(404));
  36. });
  37. // error handler
  38. app.use(function(err, req, res, next) {
  39. // set locals, only providing error in development
  40. res.locals.message = err.message;
  41. res.locals.error = req.app.get('env') === 'development' ? err : {};
  42. // render the error page
  43. res.status(err.status || 500);
  44. res.render('error');
  45. });
  46. connect();
  47. export {app};