Added routes for Types and Vegetables
This commit is contained in:
parent
a8dc7f8323
commit
e738d80579
17 changed files with 3938 additions and 304 deletions
90
middleware/VegetableTypes.js
Normal file
90
middleware/VegetableTypes.js
Normal file
|
@ -0,0 +1,90 @@
|
|||
const vegetableTypes = require('../models').vegetableTypes
|
||||
|
||||
class VegetableTypes {
|
||||
static getAll (req, callback) {
|
||||
vegetableTypes.findAndCountAll({
|
||||
order: [
|
||||
['name', 'ASC']
|
||||
]
|
||||
})
|
||||
.then(items => {
|
||||
if (!items) {
|
||||
callback(new Error('No vegetable type found'), 204)
|
||||
return false
|
||||
}
|
||||
callback(null, items)
|
||||
})
|
||||
.catch((e) => {
|
||||
callback(e, null)
|
||||
})
|
||||
}
|
||||
|
||||
createOne (req, callback) {
|
||||
vegetableTypes.create(req.body)
|
||||
.then(item => {
|
||||
callback(null, item)
|
||||
})
|
||||
.catch(e => {
|
||||
callback(e, null)
|
||||
})
|
||||
}
|
||||
|
||||
static getOne (req, callback) {
|
||||
vegetableTypes.findById(Number(req.params.vegetableTypesId))
|
||||
.then(item => {
|
||||
if (!item) {
|
||||
callback(new Error('Item vegetable type not found'), 404)
|
||||
return false
|
||||
}
|
||||
callback(null, item)
|
||||
})
|
||||
.catch((e) => {
|
||||
callback(e, null)
|
||||
})
|
||||
}
|
||||
|
||||
patchOne (req, callback) {
|
||||
VegetableTypes.getOne(req, (err, item) => {
|
||||
if (err) {
|
||||
callback(err, item)
|
||||
return false
|
||||
}
|
||||
|
||||
item.update(req.body)
|
||||
.then(animal => {
|
||||
callback(null, animal)
|
||||
})
|
||||
.catch(e => {
|
||||
callback(e, null)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
deleteOne (req, callback) {
|
||||
VegetableTypes.getOne(req, (err, item) => {
|
||||
if (err) {
|
||||
callback(err, item)
|
||||
return false
|
||||
}
|
||||
|
||||
vegetableTypes.destroy({
|
||||
where: {
|
||||
id: req.params.vegetableTypesId
|
||||
}
|
||||
})
|
||||
.then(deleted => {
|
||||
if (deleted === 0) {
|
||||
callback(new Error('Error when trying to delete item'))
|
||||
return false
|
||||
}
|
||||
|
||||
callback(null, null)
|
||||
})
|
||||
.catch(e => {
|
||||
callback(e, null)
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = VegetableTypes
|
223
middleware/Vegetables.js
Normal file
223
middleware/Vegetables.js
Normal file
|
@ -0,0 +1,223 @@
|
|||
const vegetables = require('../models').vegetables
|
||||
const VegetableTypes = require('./VegetableTypes')
|
||||
const uuid = require('uuid/v4')
|
||||
const multer = require('multer')
|
||||
const path = require('path')
|
||||
const fs = require('fs')
|
||||
const Aws = require('../libs/aws')
|
||||
|
||||
class Vegetables {
|
||||
constructor () {
|
||||
this._upload = multer({
|
||||
storage: multer.diskStorage({}),
|
||||
fileFilter: function (req, file, cb) {
|
||||
const filetypes = /jpg|jpeg|png|JPG|JPEG|PNG/
|
||||
const mimetype = filetypes.test(file.mimetype)
|
||||
const extname = filetypes.test(path.extname(file.originalname).toLowerCase())
|
||||
|
||||
if (mimetype && extname) {
|
||||
return cb(null, true)
|
||||
}
|
||||
cb(new Error('Error: File upload only supports the following filetypes - ' + filetypes))
|
||||
}
|
||||
}).single('mainPicture')
|
||||
}
|
||||
|
||||
_createItem (req, callback) {
|
||||
let newItem = req.body
|
||||
newItem.vegetableTypeId = req.params.vegetableTypesId
|
||||
|
||||
vegetables.create(newItem)
|
||||
.then(item => {
|
||||
callback(null, item)
|
||||
})
|
||||
.catch(e => {
|
||||
callback(e, null)
|
||||
})
|
||||
}
|
||||
|
||||
_patchOne (item, values, callback) {
|
||||
item.update(values)
|
||||
.then(item => {
|
||||
callback(null, item)
|
||||
})
|
||||
.catch(e => {
|
||||
callback(e, null)
|
||||
})
|
||||
}
|
||||
|
||||
_deleteOne (item, req, callback) {
|
||||
vegetables.destroy({
|
||||
where: {
|
||||
id: req.params.vegetablesId
|
||||
}
|
||||
})
|
||||
.then(deleted => {
|
||||
if (deleted === 0) {
|
||||
callback(new Error('Error when trying to delete item'))
|
||||
return false
|
||||
}
|
||||
|
||||
callback(null, null)
|
||||
})
|
||||
.catch(e => {
|
||||
callback(e, null)
|
||||
})
|
||||
}
|
||||
|
||||
_deleteMedias (path, callback) {
|
||||
const aws = new Aws()
|
||||
if (!callback) {
|
||||
callback = (e) => {
|
||||
if (e) {
|
||||
console.error(e)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
aws.deleteObjects([path], callback)
|
||||
}
|
||||
|
||||
static getAll (req, callback) {
|
||||
vegetables.findAndCountAll({
|
||||
where: {
|
||||
vegetableTypeId: req.params.vegetableTypesId
|
||||
},
|
||||
order: [
|
||||
['name', 'ASC']
|
||||
]
|
||||
})
|
||||
.then(items => {
|
||||
if (!items) {
|
||||
callback(new Error('No vegetable found'), 204)
|
||||
return false
|
||||
}
|
||||
callback(null, items)
|
||||
})
|
||||
.catch((e) => {
|
||||
callback(e, null)
|
||||
})
|
||||
}
|
||||
|
||||
createOne (req, callback) {
|
||||
VegetableTypes.getOne(req, (err, universe) => {
|
||||
if (err) {
|
||||
callback(err, universe)
|
||||
return false
|
||||
}
|
||||
|
||||
this._upload(req, req.body, (err) => {
|
||||
if (err) {
|
||||
callback(err, null)
|
||||
return false
|
||||
}
|
||||
|
||||
if (req.file) {
|
||||
let aws = new Aws()
|
||||
aws.upload({
|
||||
path: req.file.path,
|
||||
filename: `main_${uuid()}.${req.file.originalname.split('.')[req.file.originalname.split('.').length - 1]}`
|
||||
}, (err, res) => {
|
||||
if (!err) { req.body.mainPicture = res.file }
|
||||
this._createItem(req, callback)
|
||||
fs.unlink(req.file.path, () => {})
|
||||
})
|
||||
} else {
|
||||
this._createItem(req, callback)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
static getOne (req, callback) {
|
||||
vegetables.find({
|
||||
where: {
|
||||
vegetableTypeId: req.params.vegetableTypesId,
|
||||
id: req.params.vegetablesId
|
||||
},
|
||||
include: ['Type']
|
||||
})
|
||||
.then(item => {
|
||||
if (!item) {
|
||||
callback(new Error('Vegetable not found'), 404)
|
||||
return false
|
||||
}
|
||||
callback(null, item)
|
||||
})
|
||||
.catch((e) => {
|
||||
callback(e, null)
|
||||
})
|
||||
}
|
||||
|
||||
patchOne (req, callback) {
|
||||
Vegetables.getOne(req, (err, item) => {
|
||||
if (err) {
|
||||
callback(err, item)
|
||||
return false
|
||||
}
|
||||
|
||||
this._upload(req, req.body, (err) => {
|
||||
if (err) {
|
||||
callback(err, null)
|
||||
return false
|
||||
}
|
||||
|
||||
let values = req.body
|
||||
|
||||
if (req.file) {
|
||||
let aws = new Aws()
|
||||
|
||||
if (item.mainPicture !== null && item.mainPicture !== '') {
|
||||
this._deleteMedias(item.mainPicture)
|
||||
}
|
||||
|
||||
aws.upload({
|
||||
path: req.file.path,
|
||||
filename: `main_${req.params.vegetablesId}${path.extname(req.file.originalname).toLowerCase()}`
|
||||
}, (err, res) => {
|
||||
if (!err) {
|
||||
values.mainPicture = res.file
|
||||
}
|
||||
this._patchOne(item, values, callback)
|
||||
fs.unlink(req.file.path, () => {})
|
||||
})
|
||||
} else {
|
||||
this._patchOne(item, values, callback)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
deleteOne (req, callback) {
|
||||
Vegetables.getOne(req, (err, item) => {
|
||||
if (err) {
|
||||
callback(err, item)
|
||||
return false
|
||||
}
|
||||
|
||||
if (item.mainPicture !== null && item.mainPicture !== '') {
|
||||
const aws = new Aws()
|
||||
if (!callback) {
|
||||
callback = (e) => {
|
||||
if (e) {
|
||||
console.error(e)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this._deleteMedias(item.mainPicture, (e, res) => {
|
||||
if (e) {
|
||||
callback(e, null)
|
||||
return false
|
||||
}
|
||||
|
||||
this._deleteOne(item, req, callback)
|
||||
})
|
||||
} else {
|
||||
this._deleteOne(item, req, callback)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Vegetables
|
Loading…
Add table
Add a link
Reference in a new issue