app.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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. import cors from "cors";
  13. const __filename = fileURLToPath(import.meta.url);
  14. const __dirname = path.dirname(__filename);
  15. const app = express();
  16. const DB_CONNECTION_STRING = process.env.DB_CONNECTION.toString();
  17. async function connect() {
  18. await mongoose.connect(DB_CONNECTION_STRING)
  19. .then(() => console.log('Connected to the database'))
  20. .catch(err => console.error('Database connection error:', err));
  21. }
  22. // view engine setup
  23. app.set('views', path.join(__dirname, 'views'));
  24. app.set('view engine', 'pug');
  25. app.use(cors());
  26. app.use(logger('dev'));
  27. app.use(express.json());
  28. app.use(express.urlencoded({ extended: false }));
  29. app.use(cookieParser());
  30. app.use(express.static(path.join(__dirname, 'public')));
  31. app.use(passport.initialize());
  32. app.use('/api/users', memberRouter);
  33. app.use('/api/schedule', appointmentsRouter);
  34. app.use('/api/auth', authRouter);
  35. // catch 404 and forward to error handler
  36. app.use(function(req, res, next) {
  37. next(createError(404));
  38. });
  39. // error handler
  40. app.use(function(err, req, res, next) {
  41. // set locals, only providing error in development
  42. res.locals.message = err.message;
  43. res.locals.error = req.app.get('env') === 'development' ? err : {};
  44. // render the error page
  45. res.status(err.status || 500);
  46. res.render('error');
  47. });
  48. connect();
  49. app.listen(3000, () => console.log("Server ready on port 3000."));
  50. export { app };