FunctionProject/backend/app.js
Divlo c9f817930c backend: Ajout de Sequelize, GET /functions
TODO: Trier par catégorie et chercher les fonctions
2020-03-20 16:49:45 +01:00

47 lines
1.5 KiB
JavaScript

/* Modules */
require('dotenv').config();
const path = require('path');
const express = require('express');
const helmet = require('helmet');
const cors = require('cors');
const morgan = require('morgan');
/* Files Imports & Variables */
const sequelize = require('./assets/utils/database');
const { PORT } = require('./assets/config/config');
const errorHandling = require('./assets/utils/errorHandling');
const app = express();
/* Middlewares */
app.use(helmet());
app.use(cors());
app.use(morgan('dev'));
app.use(express.json());
/* Routes */
app.use('/images', express.static(path.join(__dirname, "assets", "images")));
app.use('/functions', require('./routes/functions'));
app.use('/categories', require('./routes/categories'));
/* Errors Handling */
app.use((_req, _res, next) => errorHandling(next, { statusCode: 404, message: "La route n'existe pas!" })); // 404
app.use((error, _req, res, _next) => {
console.log(error);
const { statusCode, message } = error;
return res.status(statusCode || 500).json({ message });
});
/* Database Relations */
const Functions = require('./models/functions');
const Categories = require('./models/categories');
Categories.hasOne(Functions, { constraints: true, onDelete: 'CASCADE'});
Functions.belongsTo(Categories);
/* Server */
// sequelize.sync({ force: true })
sequelize.sync()
.then(() => {
app.listen(PORT, () => console.log('\x1b[36m%s\x1b[0m', `Started on port ${PORT}.`));
})
.catch((error) => console.log(error));