Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 2bf87d1576 | |||
| e7383305ec | |||
| 3fc60c5f85 | |||
| 72ec88eb14 | |||
| 22c108b086 | |||
| 680b9d6fb1 | |||
| 2e5f38096e |
@@ -0,0 +1,6 @@
|
||||
DB_HOST=localhost
|
||||
DB_USER=user
|
||||
DB_PASSWORD=password
|
||||
DB_NAME=dbName
|
||||
|
||||
PORT=5000
|
||||
@@ -63,7 +63,7 @@ exports.createFolder = async (req, res) => {
|
||||
|
||||
exports.updateFolder = async (req, res) => {
|
||||
|
||||
const folderId = req.params.id
|
||||
const folderId = req.params.id;
|
||||
const jsonFolder = req.body;
|
||||
|
||||
await folder.update({
|
||||
@@ -79,6 +79,18 @@ exports.updateFolder = async (req, res) => {
|
||||
res.status(200).json("ok");
|
||||
}
|
||||
|
||||
exports.deleteFolder = async (req, res) => {
|
||||
const folderId = req.params.id;
|
||||
|
||||
await folder.destroy({
|
||||
where: {
|
||||
folderId:folderId,
|
||||
},
|
||||
});
|
||||
|
||||
res.status(200).json("ok");
|
||||
}
|
||||
|
||||
function findByValue(list, key, value) {
|
||||
|
||||
for (el of list) {
|
||||
|
||||
@@ -0,0 +1,75 @@
|
||||
const page = require('../models/page.model');
|
||||
|
||||
exports.getPages = async (req, res) => {
|
||||
const pages = await page.findAll();
|
||||
res.json(pages);
|
||||
}
|
||||
|
||||
exports.getPageById = async (req, res) => {
|
||||
const id = req.params.id
|
||||
|
||||
const pages = await page.findAll({
|
||||
where: {
|
||||
pageId: id,
|
||||
}},
|
||||
);
|
||||
|
||||
res.json(pages);
|
||||
}
|
||||
|
||||
exports.createPage = async (req, res) => {
|
||||
const jsonPage = req.body
|
||||
|
||||
await page.create({
|
||||
pageTitle: jsonPage.name,
|
||||
pageFolder: jsonPage.folder,
|
||||
})
|
||||
|
||||
res.status(201).json("ok");
|
||||
}
|
||||
|
||||
exports.updatePage = async (req, res) => {
|
||||
const jsonPage = req.body;
|
||||
const pageId = req.params.id;
|
||||
|
||||
await page.update({
|
||||
pageTitle: jsonPage.name,
|
||||
pageFolder: jsonPage.folder,
|
||||
},
|
||||
{
|
||||
where: {
|
||||
pageId: pageId
|
||||
}
|
||||
})
|
||||
|
||||
res.status(200).json("ok");
|
||||
}
|
||||
|
||||
exports.updatePageContent = async (req, res) => {
|
||||
const jsonPage = req.body;
|
||||
const pageId = req.params.id;
|
||||
|
||||
await page.update({
|
||||
pageContent: jsonPage.content,
|
||||
},
|
||||
{
|
||||
where: {
|
||||
pageId: pageId
|
||||
}
|
||||
})
|
||||
|
||||
res.status(200).json("ok");
|
||||
}
|
||||
|
||||
exports.deletePage = async (req, res) => {
|
||||
const pageId = req.params.id;
|
||||
|
||||
await page.destroy(
|
||||
{
|
||||
where: {
|
||||
pageId: pageId
|
||||
}
|
||||
});
|
||||
|
||||
res.status(200).json("ok");
|
||||
}
|
||||
@@ -4,6 +4,7 @@ const express = require('express');
|
||||
const app = express();
|
||||
|
||||
const folderRoutes = require('./routes/folder.routes');
|
||||
const pageRoutes = require('./routes/page.routes');
|
||||
const db = require('./config/db');
|
||||
|
||||
// Middleware pour le parsing des JSON
|
||||
@@ -11,6 +12,7 @@ app.use(express.json());
|
||||
|
||||
// Utilisation des routes
|
||||
app.use('/api', folderRoutes);
|
||||
app.use('/api', pageRoutes);
|
||||
|
||||
// Démarrer l'application et connecter la base de données
|
||||
const port = process.env.PORT || 5000
|
||||
|
||||
@@ -17,12 +17,12 @@ const folder = db.define('Folders', {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: true,
|
||||
references: {
|
||||
model: 'File',
|
||||
model: 'Folders',
|
||||
key: 'folderId',
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
folder.hasMany(folder, { as: 'subFolders', foreignKey: 'folderParent' });
|
||||
folder.hasMany(folder, { as: 'subFolders', foreignKey: 'folderParent', onDelete: 'CASCADE' });
|
||||
|
||||
module.exports = folder;
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
const {Sequelize, DataTypes} = require('sequelize');
|
||||
const db = require('../config/db');
|
||||
|
||||
const folder = require('./folder.model');
|
||||
|
||||
const page = db.define('Pages', {
|
||||
pageId: {
|
||||
type: DataTypes.INTEGER,
|
||||
primaryKey: true,
|
||||
autoIncrement: true,
|
||||
},
|
||||
|
||||
pageTitle: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false,
|
||||
},
|
||||
|
||||
pageFolder: {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: true,
|
||||
references: {
|
||||
model: 'Folders',
|
||||
key: 'folderId',
|
||||
},
|
||||
},
|
||||
|
||||
pageContent: {
|
||||
type: DataTypes.TEXT,
|
||||
allowNull: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
indexes: [
|
||||
{
|
||||
fields: ['pageTitle', 'pageFolder'],
|
||||
unique: true,
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
//page.belongsTo(folder, { as: 'pageParentFolder', foreignKey: 'pageFolder', onDelete: 'CASCADE'})
|
||||
module.exports = page;
|
||||
@@ -9,5 +9,7 @@ router.get('/folders/:id', folderController.getFoldersById);
|
||||
|
||||
router.post('/folders', folderController.createFolder);
|
||||
router.put('/folders/:id', folderController.updateFolder);
|
||||
router.delete('/folders/:id', folderController.deleteFolder);
|
||||
|
||||
|
||||
module.exports = router;
|
||||
@@ -0,0 +1,14 @@
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
|
||||
const pageController = require('../controller/page.controller')
|
||||
|
||||
router.get('/pages', pageController.getPages);
|
||||
router.get('/pages/:id', pageController.getPageById);
|
||||
router.post('/pages', pageController.createPage);
|
||||
|
||||
router.put('/pages/:id', pageController.updatePage);
|
||||
router.put('/pages/:id/content', pageController.updatePageContent);
|
||||
router.delete('/pages/:id', pageController.deletePage);
|
||||
|
||||
module.exports = router;
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
DROP TABLE IF EXISTS Pages;
|
||||
DROP TABLE IF EXISTS Folders;
|
||||
|
||||
-- CREATE TABLES
|
||||
|
||||
CREATE TABLE Folders (
|
||||
folderId INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||||
folderName VARCHAR(50) NOT NULL,
|
||||
folderParent INT UNSIGNED,
|
||||
|
||||
CONSTRAINT sf_folderParent_folderId FOREIGN KEY (folderParent) REFERENCES Folders(folderId) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE Pages (
|
||||
pageId INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||||
pageTitle VARCHAR(50) NOT NULL,
|
||||
pageFolder INT UNSIGNED,
|
||||
pageContent TEXT,
|
||||
|
||||
CONSTRAINT fk_pages_folder FOREIGN KEY (pageFolder) REFERENCES Folders(folderId) ON DELETE CASCADE,
|
||||
CONSTRAINT unique_titel_folder UNIQUE (pageTitle, pageFolder)
|
||||
);
|
||||
|
||||
-- Populate Tables
|
||||
|
||||
|
||||
INSERT INTO Folders (folderId, folderName, folderParent) VALUES
|
||||
(1, "animaux", NULL),
|
||||
(2, "mamifère", 1),
|
||||
(3, "plantes", NULL);
|
||||
|
||||
INSERT INTO Pages (pageTitle, pageFolder, pageContent) VALUES
|
||||
('Vache', 2, 'La vache est un mamifères'),
|
||||
('Pin des Landes', NULL, 'Le pin des landes est un pin que lon retrouve dans les landes'),
|
||||
('Le lézard', 1, 'Le lézard est un reptile à sang froid');
|
||||
Reference in New Issue
Block a user