Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 69 additions & 0 deletions api.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
const express = require('express');
const api = express();
const morgan = require('morgan');
const bodyParser= require('body-parser');
const mongoose = require('mongoose');

//import routes
const saleRoutes = require('./api/routes/sales');
const userRoutes = require('./api/routes/user');


//conect to DB
mongoose.connect(
'mongodb://' +
process.env.USER + ':' +
process.env.PASSWD +
'@salesbot-shard-00-01-yyrbx.mongodb.net:27017/' +
process.env.DB +
'?ssl=true&replicaSet=SalesBot-shard-0&authSource=admin',
{
useNewUrlParser: true,
dbName: process.env.DB,
}
)
.then(() => {
console.log('\napi connected to database\n')
}).catch(error => {
console.log(error);
});
mongoose.Promise = global.Promise;

//apply middleware
api.use(morgan('dev'));
api.use(bodyParser.urlencoded({extended: false}));
api.use(bodyParser.json());

api.use((req, res, next) => {
res.header('Access-Control-Allow-Origin', '*');
res.header(
'Access-Control-Allow-Headers',
'Origin, X-Requested-With, Content-Type, Accept, Authorization'
);
if(req.methode === 'OPTIONS') {
res.header('Access-Controll-Allow-Methods', 'POST, GET');
return res.status(200).json({});
}
next();
});

//use routes
api.use('/sales', saleRoutes);
api.use('/user', userRoutes);

//error handling
api.use((req, res, next) => {
const error = new Error('not found');
error.status = 404;
next(error);
});

api.use((error, req, res, next) => {
res.status(error.status || 500).json({
error: {
message: error.message
}
});
});

module.exports = api;
47 changes: 47 additions & 0 deletions api/routes/sales.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
const express = require('express');
const router = express.Router();
const mongoose = require('mongoose');

const Sale = require('../../models/sale');

router.get('/', (req, res, next) => {
Sale.find()
.select('link start end description')
.exec()
.then(docs => {
res.status(200).json(response);
})
.catch(err => {
console.error(err);
res.status(500).json({
error: err
});
});
});

router.post('/', (req, res, next) => {
const sale = new Sale({
_id: new mongoose.Types.ObjectId(),
link: req.body.link,
end: req.body.end,
description: req.body.description
});
sale.save()
.then(doc => {
res.status(201).json({
createdSale: {
link: doc.link,
end: doc.end,
description: doc.description
}
});
})
.catch(err => {
console.error(err);
res.status(500).json({
error: err
});
});
});

module.exports = router;
47 changes: 47 additions & 0 deletions api/routes/user.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
const express = require('express');
const router = express.Router();
const mongoose = require('mongoose');
const bcrypt = require('bcrypt');

const User = require('../../models/user');


router.post('/signup', (req, res, next) => {

bcrypt.hash(req.body.password, 10,(err, hash) => {
if(err) {
res.status(500).json({
error: err
});
} else {

const user = new User({
_id: new mongoose.Types.ObjectId(),
email: req.body.email,
password: hash,
});

user
.save()
.then(result => {
console.log(result);
res.status(201).json({
message: 'User created'
});
})
.catch(err => {
console.error(err);
res.status(500).json({
error: err
});
});

}
});


});



module.exports = router;
3 changes: 1 addition & 2 deletions bot.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ mongoose.connect(
}
)
.then(() => {
console.log('\nconnected to database\n')
console.log('\nbot connected to database\n')
}).catch(error => {
console.log(error);
});
Expand Down Expand Up @@ -80,7 +80,6 @@ bot.on("message", message => {
//message.channel.send(SaleLink+SaleEnd+SaleDescription)
let saleData = {
link: SaleLink,
start: Date("now"),
end: theRealDate,
description: SaleDescription
};
Expand Down
4 changes: 3 additions & 1 deletion controllers/sales.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,11 @@ const Sale = require('../models/sale');
const Discord = require('discord.js');

exports.get_all = (message) => {
let date = new Date();
date.setDate(date.getDate() - 1);
this.message = message;
Sale.find()
.where('end').gt(date)
.exec()
.then(docs => {
docs.forEach((doc, idx, message) => {
Expand All @@ -23,7 +26,6 @@ exports.add_sale = (saleData, message) => {
const sale = new Sale({
_id: new mongoose.Types.ObjectId(),
link: saleData.link,
start: saleData.start,
end: saleData.end,
description: saleData.description
});
Expand Down
23 changes: 19 additions & 4 deletions models/sale.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,25 @@ const mongoose = require('mongoose');

const saleSchema = mongoose.Schema({
_id: mongoose.Schema.Types.ObjectId,
link: {type: String, required: true},
start: {type: Date, required: true},
end: {type: Date, required: true},
description: {type: String, required: true},
link: {
type: String,
required: true
},
end: {
type: Date,
required: true,
validate: [notInPastValidator, 'End date can not be in the past']
},
description: {
type: String,
required: true
},
});

function notInPastValidator(value) {
let date = new Date();
date.setDate(date.getDate() - 1)
return date <= value;
}

module.exports = mongoose.model('Sale', saleSchema);
10 changes: 10 additions & 0 deletions models/user.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
const mongoose = require('mongoose');

const userSchema = mongoose.Schema({
_id: mongoose.Schema.Types.ObjectId,
email: {type: String, required: true},
password: {type: String, required: true}
});


module.exports = mongoose.model('User', userSchema);
Loading