Skip to content

Commit

Permalink
basket and browse
Browse files Browse the repository at this point in the history
  • Loading branch information
Alan Roth committed Aug 3, 2020
1 parent 07d7e91 commit 2d4a4c3
Show file tree
Hide file tree
Showing 187 changed files with 44,693 additions and 114 deletions.
27 changes: 14 additions & 13 deletions app.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,11 @@ var mongoose = require('mongoose')
var path = require('path')
var bodyParser = require('body-parser')
var session = require('express-session')
var cookieParser = require('cookie-parser')

var indexRouter = require('./routes/index')
var usersRouter = require('./routes/users')
var adminRouter = require('./routes/admin')
var basketRouter = require('./routes/basket')

var app = express()

Expand All @@ -17,24 +18,24 @@ var uri = 'mongodb+srv://app-user:[email protected]/bookstore?retry
app.set('views', path.join(__dirname, 'views'))
app.set('view engine', 'pug')

app.use(express.static('public'))

app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: false }))

app.use(cookieParser())
app.use(session({
secret: 'secret',
cookie: {
maxAge: 60000,
secure: false
}
}))

app.use('/', indexRouter)
app.use('/users', usersRouter)
app.use('/basket', basketRouter)
app.use('/admin', adminRouter)

// app.use(session({
// secret: 'secret',
// resave: false,
// saveUninitialized: true,
// cookie: {
// secure: false,
// httpOnly: true,
// maxAge: 1000 * 60 * 60 * 24
// }
// }))

mongoose.connect(uri, { useNewUrlParser: true, useUnifiedTopology: true }).then(() => console.log('Connected to MongoDB'))
.catch(err => console.error("Couldn't connect to MongoDB: " + err))

Expand Down
20 changes: 20 additions & 0 deletions controller/database/addBook.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
var getBook = require('./getBook.js')

const BookModel = require('../../models/book.js')

var addBook = async function (isbn, title, price, author, genre, imagePath, stock) {
if (await getBook({ isbn: isbn })) {
console.log('Book is already in database')
return
}
if (imagePath === null || imagePath === undefined) {
imagePath = '/images/bookimages/placeholder.png'
}
var newBook = new BookModel({ isbn: isbn, title: title, price: price, author: author, genre: genre, image: imagePath, stock: stock })
newBook.save(function (err, book) {
if (err) return console.error(err)
console.log(book.title + ' added to database')
})
}

module.exports = addBook
6 changes: 3 additions & 3 deletions controller/database/add.js → controller/database/addUser.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
var hasUser = require('../util/hasUser.js')
var getUser = require('./getUser')

const UserModel = require('../../models/user.js')

var addUser = async function (username, password) {
if (await hasUser(username)) {
if (await getUser({ username: username })) {
console.log('User is already in database')
return
}
var newUser = new UserModel({ username: username, password: password, isAdmin: false })
newUser.save(function (err, user) {
if (err) return console.error(err)
if (err) return console.log(err)
console.log(user.username + ' added to database')
})
}
Expand Down
15 changes: 15 additions & 0 deletions controller/database/getBook.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
var bookModel = require('../../models/book.js')

var getBook = async function (filter) {
return await bookModel.findOne(filter).exec().then(function (result) {
if (result === null) {
return false
}
if (result === undefined) {
return false
}
return result
})
}

module.exports = getBook
18 changes: 18 additions & 0 deletions controller/database/getBooks.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
var bookModel = require('../../models/book.js')

var getBooks = async function (filter) {
return await bookModel.find(filter).exec().then(function (result) {
if (result === null) {
return false
}
if (result === undefined) {
return false
}

console.log(result)

return result
})
}

module.exports = getBooks
15 changes: 15 additions & 0 deletions controller/database/getUser.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
var userModel = require('../../models/user.js')

var getUser = async function (filter) {
return await userModel.findOne(filter).exec().then(function (result) {
if (result === null) {
return false
}
if (result.username === undefined) {
return false
}
return result
})
}

module.exports = getUser
17 changes: 17 additions & 0 deletions controller/database/removeBook.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
var getBook = require('./getBook')

const BookModel = require('../../models/book.js')

var removeBook = async function (isbn) {
var hasBook = await getBook({ isbn: isbn })
if (hasBook === null || hasBook === undefined || hasBook === false) {
console.log('Book does not exist!')
return
}
await BookModel.findOneAndDelete({ isbn: isbn }, function (err, result) {
if (err) return console.log(err)
console.log(result.title + ' was removed from database!')
})
}

module.exports = removeBook
17 changes: 17 additions & 0 deletions controller/database/removeUser.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
var getUser = require('./getUser')

const UserModel = require('../../models/user.js')

var removeUser = async function (username) {
var hasUser = await getUser(username)
if (hasUser === null || hasUser === undefined || hasUser === false) {
console.log('User does not exist!')
return
}
await UserModel.findOneAndDelete({ username: username }, function (err, result) {
if (err) return console.log(err)
console.log(result.username + ' was removed from database!')
})
}

module.exports = removeUser
18 changes: 18 additions & 0 deletions controller/database/updateBook.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
var getBook = require('./getBook.js')

const BookModel = require('../../models/book.js')

var updateBook = async function (isbn, title, price, author, genre, imagePath, stock) {
var book = await getBook({ isbn: isbn })
if (!book) {
console.log('Book is not in the database!')
return
}

BookModel.findOneAndUpdate({ isbn: book.isbn }, { title: title, price: price, author: author, genre: genre, image: imagePath, stock: stock }, function (err, book) {
if (err) return console.error(err)
console.log(book.title + ' was updated!')
})
}

module.exports = updateBook
18 changes: 0 additions & 18 deletions controller/util/hasUser.js

This file was deleted.

13 changes: 12 additions & 1 deletion models/book.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,19 @@ var Book = mongoose.model('Book', {
isbn: {
type: String,
required: true,
trim: true
trim: true,
unique: true
},
title: {
type: String,
required: true,
trim: true
},
price: {
type: String,
require: true,
trim: true
},
author: {
type: String,
required: true,
Expand All @@ -25,6 +31,11 @@ var Book = mongoose.model('Book', {
type: String,
required: true,
trim: true
},
stock: {
type: Number,
required: true,
trim: true
}
}, 'books')

Expand Down
3 changes: 2 additions & 1 deletion models/user.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ var User = mongoose.model('User', {
username: {
type: String,
required: true,
trim: true
trim: true,
unique: true
},
password: {
type: String,
Expand Down
22 changes: 22 additions & 0 deletions node_modules/bootstrap/LICENSE

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 2d4a4c3

Please sign in to comment.