mongo reposityory

This commit is contained in:
jleveau 2020-10-12 16:09:41 +02:00
parent 4995182651
commit 20ec2747ae
5 changed files with 268 additions and 49 deletions

View file

@ -1,5 +1,9 @@
inMemoryWorkshop = []
let inMemoryWorkshop;
function init() {
inMemoryWorkshop = [];
return Promise.resolve();
}
function getWorkshopList() {
return new Promise((resolve, ) => {
@ -38,13 +42,14 @@ function removeWorkshopByName(name) {
})
}
function updateWorkshop(name) {
function updateWorkshop(name, description) {
return new Promise((resolve, reject) => {
reject(new Error("Not implemented"))
})
}
module.exports = {
init,
getWorkshopList,
getWorkshopByName,
addWorkshop,

View file

@ -1,64 +1,70 @@
const express = require('express')
const app = express()
const InMemoryWorkshop = require("./inMemoryWorkshop")
const path = require("path")
const ejs = require('ejs')
var bodyParser = require('body-parser')
const repository = require('./inMemoryWorkshop');
//const repository = require("./mongoWorkshop");
app.use(bodyParser.urlencoded({ extended: false }))
repository.init().then(() => {
// set the view engine to ejs
app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, '..', '/ejs'));
app.use(express.static(path.join(__dirname , '..', 'css')));
app.use(bodyParser.urlencoded({ extended: false }))
app.get('/', function (req, res) {
InMemoryWorkshop.getWorkshopList()
.then(workshops => {
res.render("index", {
workshops: workshops
})
})
})
app.get('/workshop', function (req, res) {
console.log("get")
res.render('workshop')
})
app.post('/workshop', function (req, res) {
const name = req.body.name
const description = req.body.description
InMemoryWorkshop.addWorkshop(name, description).then(() => {
InMemoryWorkshop.getWorkshopList()
// set the view engine to ejs
app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, '..', '/ejs'));
app.use(express.static(path.join(__dirname , '..', 'css')));
app.get('/', function (req, res) {
repository.getWorkshopList()
.then(workshops => {
res.render("index", {
workshops: workshops
})
})
})
.catch(e =>res.send(e.message))
})
app.get('/workshop/:name', function (req, res) {
const workshopName = req.params.name
InMemoryWorkshop.getWorkshopByName(workshopName)
.then(workshop => {
res.render('ejs/workshop', workshop)
app.get('/workshop', function (req, res) {
console.log("get")
res.render('workshop')
})
.catch(e =>ejs.send(e.message))
app.post('/workshop', function (req, res) {
const name = req.body.name
const description = req.body.description
repository.addWorkshop(name, description).then(() => {
repository.getWorkshopList()
.then(workshops => {
res.render("index", {
workshops: workshops
})
})
})
.catch(e =>res.send(e.message))
})
app.get('/workshop/:name', function (req, res) {
const workshopName = req.params.name
repository.getWorkshopByName(workshopName)
.then(workshop => {
res.render('ejs/workshop', workshop)
})
.catch(e =>ejs.send(e.message))
})
app.post('/remove-workshop', function (req, res) {
res.status(500).send("TODO")
})
app.post('/update-workshop', function(req, res) {
res.status(500).send("TODO")
})
app.listen(3000, function () {
console.log('Workshop app listening on port 3000!')
})
})
app.post('/remove-workshop', function (req, res) {
res.status(500).send("TODO")
})
app.post('/update-workshop', function(req, res) {
res.status(500).send("TODO")
})
app.listen(3000, function () {
console.log('Workshop app listening on port 3000!')
})

89
js/mongoWorkshop.js Normal file
View file

@ -0,0 +1,89 @@
const MongoClient = require('mongodb').MongoClient;
const url = 'mongodb://localhost:27017';
const dbName = 'workshopDatabase';
const COLLECTION_NAME = "workshops"
let db;
function init() {
return new Promise((resolve, reject) => {
MongoClient.connect(url, function(err, client) {
if (err) {
return reject(err)
}
console.log("Connected successfully to server");
db = client.db(dbName);
resolve();
});
})
}
function getWorkshopList() {
return new Promise((resolve, reject) => {
const collection = db.collection(COLLECTION_NAME);
collection.find({}).toArray(function(err, workshops) {
if (err) {
return reject(err);
}
return resolve(workshops)
})
})
}
function getWorkshopByName(name) {
return new Promise((resolve, reject) => {
if (!name) {
reject(new Error("name parameter is required"))
}
const collection = db.collection(COLLECTION_NAME);
collection.find({
name
}).toArray(function(err, workshops) {
if (err) {
return reject(err);
}
if (workshops.length > 0) {
return resolve(workshops[0])
} else {
return resolve(null)
}
})
})
}
function addWorkshop(name, description) {
if (!name) {
return Promise.reject(new Error("Workshop name required"));
}
if (!description) {
return Promise.reject(new Error("Workshop description required"));
}
const collection = db.collection(COLLECTION_NAME);
return collection.insert({
name, description
}).then(() => {return})
}
function removeWorkshopByName(name) {
const collection = db.collection(COLLECTION_NAME);
return collection.deleteMany({
name
}).then(() => {return})
}
function updateWorkshop(name, description) {
const collection = db.collection(COLLECTION_NAME);
return collection.updateMany({
name
}, {
description
}).then(() => {return})
}
module.exports = {
init,
getWorkshopList,
getWorkshopByName,
addWorkshop,
removeWorkshopByName,
updateWorkshop
}