mongo reposityory
This commit is contained in:
parent
4995182651
commit
20ec2747ae
5 changed files with 268 additions and 49 deletions
|
@ -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,
|
||||
|
|
98
js/index.js
98
js/index.js
|
@ -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
89
js/mongoWorkshop.js
Normal 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
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue