diff --git a/package-lock.json b/package-lock.json index dbce1b9..03f684d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2283,6 +2283,15 @@ "wrap-ansi": "^2.0.0" } }, + "cloudinary": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/cloudinary/-/cloudinary-1.13.2.tgz", + "integrity": "sha512-mZWxWxgln6Bkk5QA72BGb1mwRBFs+r94ZzdN37gROPL7FSOslhvFfEvF/Rz/ruPqR7mblMdzVz3wuLQi1oCalw==", + "requires": { + "lodash": "^4.17.11", + "q": "^1.5.1" + } + }, "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", @@ -7001,6 +7010,11 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" + }, "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", diff --git a/package.json b/package.json index c1fd230..e2e6149 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "body-parser": "^1.18.3", "chai": "^4.2.0", "chai-http": "^4.2.0", + "cloudinary": "^1.13.2", "config": "^1.20.1", "consign": "^0.1.6", "cookie-parser": "~1.4.3", diff --git a/server/hepers/uploadToCloudinary.js b/server/hepers/uploadToCloudinary.js new file mode 100644 index 0000000..d691560 --- /dev/null +++ b/server/hepers/uploadToCloudinary.js @@ -0,0 +1,21 @@ +import cloudinary from 'cloudinary'; + +const uploadToCloudinary = async (imageFilePath) => { + cloudinary.config({ + cloud_name: process.env.CLOUDINARY_CLOUD_NAME, + api_key: process.env.CLOUDINARY_API_KEY, + api_secret: process.env.CLOUDINARY_API_SECRET, + }); + + let response = ''; + await cloudinary.v2.uploader + .upload(imageFilePath, (error, result) => { + if (error) response = error; + response = result.url; + }) + .catch(error => error); + + return response; +}; + +export default uploadToCloudinary; diff --git a/server/routes/controllers/productsController.js b/server/routes/controllers/productsController.js index d174867..49f65d6 100644 --- a/server/routes/controllers/productsController.js +++ b/server/routes/controllers/productsController.js @@ -1,5 +1,6 @@ /* import moment from 'moment'; */ import pool from '../../models/db'; +import uploadToCloudinary from '../../hepers/uploadToCloudinary'; const getAllProducts = (req, res) => { const text = 'SELECT * FROM products'; @@ -27,8 +28,9 @@ const getOneProduct = (req, res) => { }); }; -const addProduct = (req, res) => { +const addProduct = async (req, res) => { const { body } = req; + const productImageUrl = await uploadToCloudinary(body.productimage); const text = 'SELECT * FROM products WHERE productname = $1'; pool.query(text, [body.productname], (err, data) => { if (data.rowCount) { @@ -44,7 +46,7 @@ const addProduct = (req, res) => { const values = [ body.productname, body.description, - body.productimage, + productImageUrl, body.price, body.quantity, body.minallowed, @@ -115,4 +117,4 @@ export { addProduct, updateProduct, deleteProduct, -}; \ No newline at end of file +}; diff --git a/server/routes/controllers/usersController.js b/server/routes/controllers/usersController.js index 1d914f9..6fa7a90 100644 --- a/server/routes/controllers/usersController.js +++ b/server/routes/controllers/usersController.js @@ -1,6 +1,7 @@ import jwt from 'jsonwebtoken'; import dotenv from 'dotenv'; import pool from '../../models/db'; +import uploadToCloudinary from '../../hepers/uploadToCloudinary'; dotenv.config(); const secret = process.env.SECRET_KEY; @@ -27,10 +28,9 @@ const getOneUser = (req, res) => { }); }; -const addUser = (req, res) => { - const { - body - } = req; +const addUser = async (req, res) => { + const { body } = req; + const userImageUrl = await uploadToCloudinary(body.userimage); const text = 'SELECT * FROM users WHERE emailaddress = $1'; pool.query(text, [body.emailaddress], (err, data) => { if (data.rowCount) { @@ -47,7 +47,7 @@ const addUser = (req, res) => { body.fullname, body.emailaddress, body.phonenumber, - body.userimage, + userImageUrl, body.password, body.role, ]; @@ -64,7 +64,7 @@ const addUser = (req, res) => { const updateUser = (req, res) => { const { - body + body, } = req; const text = `UPDATE users SET fullname=$1, emailaddress=$2, phonenumber=$3, userimage=$4, password=$5, role=$6 @@ -159,4 +159,4 @@ export { deleteUser, loginUser, getMyProfile, -} +};