diff --git a/Repo/Components/adminPanel/productPanel/productAddForm/addProduct.js b/Repo/Components/adminPanel/productPanel/productAddForm/addProduct.js
index 313a08c..4ec7e62 100644
--- a/Repo/Components/adminPanel/productPanel/productAddForm/addProduct.js
+++ b/Repo/Components/adminPanel/productPanel/productAddForm/addProduct.js
@@ -14,8 +14,10 @@ const addProduct = async (
form.append('Name', Name);
form.append('Description', Description);
- form.append('Types', Types);
- form.append('Categorys', Categorys);
+
+ form.append("Types", JSON.stringify(Types))
+ form.append("Categorys", JSON.stringify(Categorys))
+
form.append("MainImage", MainImage);
form.append("Gallery", Gallery);
axios({
diff --git a/Repo/Components/adminPanel/productPanel/productAddForm/addType.jsx b/Repo/Components/adminPanel/productPanel/productAddForm/addType.jsx
index 43431b6..8ed6345 100644
--- a/Repo/Components/adminPanel/productPanel/productAddForm/addType.jsx
+++ b/Repo/Components/adminPanel/productPanel/productAddForm/addType.jsx
@@ -1,4 +1,5 @@
import React, { useState } from "react";
+import { HexColorPicker } from "react-colorful";
export default function AddType({ add }) {
const [Name, setName] = useState();
@@ -7,7 +8,8 @@ export default function AddType({ add }) {
const [Inventory, setInventory] = useState();
return (
-
+
+
setName(e.target.value)}
@@ -20,12 +22,12 @@ export default function AddType({ add }) {
placeholder="قیمت"
type="text"
/>
- setColor(e.target.value)}
placeholder="رنگ"
type="text"
- />
+ /> */}
setInventory(parseInt(e.target.value))}
@@ -33,6 +35,45 @@ export default function AddType({ add }) {
type="number"
/>
add(Name, Price, Color, Inventory)}>ADD
+
);
}
diff --git a/Repo/Services/ProductService.js b/Repo/Services/ProductService.js
index d527948..a4f256c 100644
--- a/Repo/Services/ProductService.js
+++ b/Repo/Services/ProductService.js
@@ -1,38 +1,51 @@
-import { PrismaClient, Prisma } from '@prisma/client'
+import { PrismaClient } from '@prisma/client'
import { AddTypeAsync } from '../methode/TypeMethodes'
import { AddCategoryAsync } from '../methode/CategoryMethodes'
-import { ProductImageUpload } from './UploadImage'
-
+import { IncomingForm } from 'formidable'
+import fs from 'fs'
const prisma = new PrismaClient()
export const AddProductAsync = async (req, res, next) => {
- // const { Name, Description, MainImage, Types, Categorys, Gallery } = req.body
-
- let exist = await prisma.Product.findMany({
- where: {
- Name,
- }
- })
+ const form = new IncomingForm();
+ form.parse(req, async function (err, fields, files) {
+ let { Name, Description, Types, Categorys } = fields
+ Types = JSON.parse(Types)
+ Categorys = JSON.parse(Categorys)
- if (!exist[0]) {
- let product = await prisma.Product.create({
- data: {
+ let exist = await prisma.Product.findMany({
+ where: {
Name,
- Description,
- MainImage,
}
})
- ProductImageUpload(req)
+ if (!exist[0]) {
+ let MainImage = await saveFile(files.MainImage);
+ let product = await prisma.Product.create({
+ data: {
+ Name,
+ Description,
+ MainImage,
+ }
+ })
+ Types.map(async T => await AddTypeAsync(T, product.Product_Id))
+ Categorys.map(async C => await AddCategoryAsync(C, product.Product_Id))
- Types.map(async T => await AddTypeAsync(T, product.Product_Id))
- Categorys.map(async C => await AddCategoryAsync(C, product.Product_Id))
+ return product;
+ }
+ })
- return product;
- }
return "there is another product with this name";
}
+
+const saveFile = async (file) => {
+ const oldPath = file.filepath;
+ let newPath = `./public/${file.originalFilename}`
+ fs.rename(oldPath, newPath, function (err) { })
+ return newPath;
+};
+
+
export const UpdateProductAsync = async (req, res, next) => {
const { Product_Id, Name, Description, MainImage } = req.body
@@ -59,4 +72,4 @@ export const DeletProductAsync = async (req, res, next) => {
})
return product;
-}
\ No newline at end of file
+}
diff --git a/Repo/Services/UploadImage.js b/Repo/Services/UploadImage.js
deleted file mode 100644
index adf4b9c..0000000
--- a/Repo/Services/UploadImage.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import { IncomingForm } from 'formidable'
-import fs from 'fs'
-
-
-export const ProductImageUpload = async (req) => {
- const form = new IncomingForm();
- form.parse(req, async function (err, fields, files) {
- await saveFile(files.MainImage);
- });
-};
-
-const saveFile = async (file) => {
- const oldPath = file.filepath;
- let newPath = `./public/${file.originalFilename}`
- fs.rename(oldPath, newPath, function (err) { })
- return;
-};
diff --git a/package-lock.json b/package-lock.json
index e88e278..e1b82ae 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -5,18 +5,18 @@
"requires": true,
"dependencies": {
"@babel/runtime": {
- "version": "7.17.8",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.8.tgz",
- "integrity": "sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA==",
+ "version": "7.17.9",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz",
+ "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==",
"dev": true,
"requires": {
"regenerator-runtime": "^0.13.4"
}
},
"@babel/runtime-corejs3": {
- "version": "7.17.8",
- "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.17.8.tgz",
- "integrity": "sha512-ZbYSUvoSF6dXZmMl/CYTMOvzIFnbGfv4W3SEHYgMvNsFTeLaF2gkGAF4K2ddmtSK4Emej+0aYcnSC6N5dPCXUQ==",
+ "version": "7.17.9",
+ "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.17.9.tgz",
+ "integrity": "sha512-WxYHHUWF2uZ7Hp1K+D1xQgbgkGUfA+5UPOegEXGt2Y5SMog/rYCVaifLZDbw8UkNXozEqqrZTy6bglL7xTaCOw==",
"dev": true,
"requires": {
"core-js-pure": "^3.20.2",
@@ -180,23 +180,23 @@
}
},
"@prisma/client": {
- "version": "3.11.0",
- "resolved": "https://registry.npmjs.org/@prisma/client/-/client-3.11.0.tgz",
- "integrity": "sha512-d42o/tlalaWMmNOR4r5BiR6YYTYEV82eZ2lNKOm5ht3WyYwI9e+zy2MyZnNO4Fx5e08RAhW+GRVcEgKl5faUaQ==",
+ "version": "3.12.0",
+ "resolved": "https://registry.npmjs.org/@prisma/client/-/client-3.12.0.tgz",
+ "integrity": "sha512-4NEQjUcWja/NVBvfuDFscWSk1/rXg3+wj+TSkqXCb1tKlx/bsUE00rxsvOvGg7VZ6lw1JFpGkwjwmsOIc4zvQw==",
"requires": {
- "@prisma/engines-version": "3.11.0-48.b371888aaf8f51357c7457d836b86d12da91658b"
+ "@prisma/engines-version": "3.12.0-37.22b822189f46ef0dc5c5b503368d1bee01213980"
}
},
"@prisma/engines": {
- "version": "3.11.0-48.b371888aaf8f51357c7457d836b86d12da91658b",
- "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-3.11.0-48.b371888aaf8f51357c7457d836b86d12da91658b.tgz",
- "integrity": "sha512-m9iZd5F5vP6A2IvKWfHpOO/qK8OOO9nbsV/pdyEkF/1WNe0E8SIWFBKb+HcMLkG9OFbDDBy8QItXmp/mIULuwQ==",
+ "version": "3.12.0-37.22b822189f46ef0dc5c5b503368d1bee01213980",
+ "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-3.12.0-37.22b822189f46ef0dc5c5b503368d1bee01213980.tgz",
+ "integrity": "sha512-zULjkN8yhzS7B3yeEz4aIym4E2w1ChrV12i14pht3ePFufvsAvBSoZ+tuXMvfSoNTgBS5E4bolRzLbMmbwkkMQ==",
"dev": true
},
"@prisma/engines-version": {
- "version": "3.11.0-48.b371888aaf8f51357c7457d836b86d12da91658b",
- "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-3.11.0-48.b371888aaf8f51357c7457d836b86d12da91658b.tgz",
- "integrity": "sha512-bhMW1XybXZyqCf+9QqjP7Oi7xgVHcISVyOZNMm51qeZsy12M1RtHaCcXUFeMMV0JOCZZuPFVr3+0KVpQqK35CQ=="
+ "version": "3.12.0-37.22b822189f46ef0dc5c5b503368d1bee01213980",
+ "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-3.12.0-37.22b822189f46ef0dc5c5b503368d1bee01213980.tgz",
+ "integrity": "sha512-o+jo8d7ZEiVpcpNWUDh3fj2uPQpBxl79XE9ih9nkogJbhw6P33274SHnqheedZ7PyvPIK/mvU8MLNYgetgXPYw=="
},
"@rushstack/eslint-patch": {
"version": "1.1.1",
@@ -211,41 +211,41 @@
"dev": true
},
"@typescript-eslint/parser": {
- "version": "5.15.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.15.0.tgz",
- "integrity": "sha512-NGAYP/+RDM2sVfmKiKOCgJYPstAO40vPAgACoWPO/+yoYKSgAXIFaBKsV8P0Cc7fwKgvj27SjRNX4L7f4/jCKQ==",
+ "version": "5.18.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.18.0.tgz",
+ "integrity": "sha512-+08nYfurBzSSPndngnHvFw/fniWYJ5ymOrn/63oMIbgomVQOvIDhBoJmYZ9lwQOCnQV9xHGvf88ze3jFGUYooQ==",
"dev": true,
"requires": {
- "@typescript-eslint/scope-manager": "5.15.0",
- "@typescript-eslint/types": "5.15.0",
- "@typescript-eslint/typescript-estree": "5.15.0",
+ "@typescript-eslint/scope-manager": "5.18.0",
+ "@typescript-eslint/types": "5.18.0",
+ "@typescript-eslint/typescript-estree": "5.18.0",
"debug": "^4.3.2"
}
},
"@typescript-eslint/scope-manager": {
- "version": "5.15.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.15.0.tgz",
- "integrity": "sha512-EFiZcSKrHh4kWk0pZaa+YNJosvKE50EnmN4IfgjkA3bTHElPtYcd2U37QQkNTqwMCS7LXeDeZzEqnsOH8chjSg==",
+ "version": "5.18.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.18.0.tgz",
+ "integrity": "sha512-C0CZML6NyRDj+ZbMqh9FnPscg2PrzSaVQg3IpTmpe0NURMVBXlghGZgMYqBw07YW73i0MCqSDqv2SbywnCS8jQ==",
"dev": true,
"requires": {
- "@typescript-eslint/types": "5.15.0",
- "@typescript-eslint/visitor-keys": "5.15.0"
+ "@typescript-eslint/types": "5.18.0",
+ "@typescript-eslint/visitor-keys": "5.18.0"
}
},
"@typescript-eslint/types": {
- "version": "5.15.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.15.0.tgz",
- "integrity": "sha512-yEiTN4MDy23vvsIksrShjNwQl2vl6kJeG9YkVJXjXZnkJElzVK8nfPsWKYxcsGWG8GhurYXP4/KGj3aZAxbeOA==",
+ "version": "5.18.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.18.0.tgz",
+ "integrity": "sha512-bhV1+XjM+9bHMTmXi46p1Led5NP6iqQcsOxgx7fvk6gGiV48c6IynY0apQb7693twJDsXiVzNXTflhplmaiJaw==",
"dev": true
},
"@typescript-eslint/typescript-estree": {
- "version": "5.15.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.15.0.tgz",
- "integrity": "sha512-Hb0e3dGc35b75xLzixM3cSbG1sSbrTBQDfIScqdyvrfJZVEi4XWAT+UL/HMxEdrJNB8Yk28SKxPLtAhfCbBInA==",
+ "version": "5.18.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.18.0.tgz",
+ "integrity": "sha512-wa+2VAhOPpZs1bVij9e5gyVu60ReMi/KuOx4LKjGx2Y3XTNUDJgQ+5f77D49pHtqef/klglf+mibuHs9TrPxdQ==",
"dev": true,
"requires": {
- "@typescript-eslint/types": "5.15.0",
- "@typescript-eslint/visitor-keys": "5.15.0",
+ "@typescript-eslint/types": "5.18.0",
+ "@typescript-eslint/visitor-keys": "5.18.0",
"debug": "^4.3.2",
"globby": "^11.0.4",
"is-glob": "^4.0.3",
@@ -254,23 +254,23 @@
},
"dependencies": {
"semver": {
- "version": "7.3.5",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
- "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+ "version": "7.3.6",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz",
+ "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==",
"dev": true,
"requires": {
- "lru-cache": "^6.0.0"
+ "lru-cache": "^7.4.0"
}
}
}
},
"@typescript-eslint/visitor-keys": {
- "version": "5.15.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.15.0.tgz",
- "integrity": "sha512-+vX5FKtgvyHbmIJdxMJ2jKm9z2BIlXJiuewI8dsDYMp5LzPUcuTT78Ya5iwvQg3VqSVdmxyM8Anj1Jeq7733ZQ==",
+ "version": "5.18.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.18.0.tgz",
+ "integrity": "sha512-Hf+t+dJsjAKpKSkg3EHvbtEpFFb/1CiOHnvI8bjHgOD4/wAw3gKrA0i94LrbekypiZVanJu3McWJg7rWDMzRTg==",
"dev": true,
"requires": {
- "@typescript-eslint/types": "5.15.0",
+ "@typescript-eslint/types": "5.18.0",
"eslint-visitor-keys": "^3.0.0"
}
},
@@ -448,9 +448,9 @@
"dev": true
},
"caniuse-lite": {
- "version": "1.0.30001319",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001319.tgz",
- "integrity": "sha512-xjlIAFHucBRSMUo1kb5D4LYgcN1M45qdKP++lhqowDpwJwGkpIRTt5qQqnhxjj1vHcI7nrJxWhCC1ATrCEBTcw=="
+ "version": "1.0.30001325",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001325.tgz",
+ "integrity": "sha512-sB1bZHjseSjDtijV1Hb7PB2Zd58Kyx+n/9EotvZ4Qcz2K3d0lWB8dB4nb8wN/TsOGFq3UuAm0zQZNQ4SoR7TrQ=="
},
"chalk": {
"version": "4.1.2",
@@ -562,9 +562,9 @@
}
},
"doctrine": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
- "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
"dev": true,
"requires": {
"esutils": "^2.0.2"
@@ -670,17 +670,6 @@
"strip-json-comments": "^3.1.0",
"text-table": "^0.2.0",
"v8-compile-cache": "^2.0.3"
- },
- "dependencies": {
- "doctrine": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2"
- }
- }
}
},
"eslint-config-next": {
@@ -722,16 +711,16 @@
}
},
"eslint-import-resolver-typescript": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.5.0.tgz",
- "integrity": "sha512-qZ6e5CFr+I7K4VVhQu3M/9xGv9/YmwsEXrsm3nimw8vWaVHRDrQRp26BgCypTxBp3vUp4o5aVEJRiy0F2DFddQ==",
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.7.1.tgz",
+ "integrity": "sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==",
"dev": true,
"requires": {
- "debug": "^4.3.1",
- "glob": "^7.1.7",
- "is-glob": "^4.0.1",
- "resolve": "^1.20.0",
- "tsconfig-paths": "^3.9.0"
+ "debug": "^4.3.4",
+ "glob": "^7.2.0",
+ "is-glob": "^4.0.3",
+ "resolve": "^1.22.0",
+ "tsconfig-paths": "^3.14.1"
}
},
"eslint-module-utils": {
@@ -756,9 +745,9 @@
}
},
"eslint-plugin-import": {
- "version": "2.25.4",
- "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz",
- "integrity": "sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==",
+ "version": "2.26.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz",
+ "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==",
"dev": true,
"requires": {
"array-includes": "^3.1.4",
@@ -766,14 +755,14 @@
"debug": "^2.6.9",
"doctrine": "^2.1.0",
"eslint-import-resolver-node": "^0.3.6",
- "eslint-module-utils": "^2.7.2",
+ "eslint-module-utils": "^2.7.3",
"has": "^1.0.3",
- "is-core-module": "^2.8.0",
+ "is-core-module": "^2.8.1",
"is-glob": "^4.0.3",
- "minimatch": "^3.0.4",
+ "minimatch": "^3.1.2",
"object.values": "^1.1.5",
- "resolve": "^1.20.0",
- "tsconfig-paths": "^3.12.0"
+ "resolve": "^1.22.0",
+ "tsconfig-paths": "^3.14.1"
},
"dependencies": {
"debug": {
@@ -785,6 +774,15 @@
"ms": "2.0.0"
}
},
+ "doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2"
+ }
+ },
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
@@ -835,6 +833,15 @@
"string.prototype.matchall": "^4.0.6"
},
"dependencies": {
+ "doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2"
+ }
+ },
"resolve": {
"version": "2.0.0-next.3",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz",
@@ -854,9 +861,9 @@
}
},
"eslint-plugin-react-hooks": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.3.0.tgz",
- "integrity": "sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA==",
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.4.0.tgz",
+ "integrity": "sha512-U3RVIfdzJaeKDQKEJbz5p3NW8/L80PCATJAfuojwbaEL+gBjfGdhUcGde+WGUW46Q5sr/NgxevsIiDtNXrvZaQ==",
"dev": true
},
"eslint-scope": {
@@ -1520,13 +1527,10 @@
}
},
"lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.7.3.tgz",
+ "integrity": "sha512-WY9wjJNQt9+PZilnLbuFKM+SwDull9+6IAguOrarOMoOHTcJ9GnXSO11+Gw6c7xtDkBkthR57OZMtZKYr+1CEw==",
+ "dev": true
},
"merge2": {
"version": "1.4.1",
@@ -1783,12 +1787,12 @@
"dev": true
},
"prisma": {
- "version": "3.11.0",
- "resolved": "https://registry.npmjs.org/prisma/-/prisma-3.11.0.tgz",
- "integrity": "sha512-8SdsLPhKR3mOfoo2o73h9mNn3v5kA/RqGA26Sv6qDS78Eh2uepPqt5e8/nwj5EOblYm5HEGuitaXQrOCLb6uTw==",
+ "version": "3.12.0",
+ "resolved": "https://registry.npmjs.org/prisma/-/prisma-3.12.0.tgz",
+ "integrity": "sha512-ltCMZAx1i0i9xuPM692Srj8McC665h6E5RqJom999sjtVSccHSD8Z+HSdBN2183h9PJKvC5dapkn78dd0NWMBg==",
"dev": true,
"requires": {
- "@prisma/engines": "3.11.0-48.b371888aaf8f51357c7457d836b86d12da91658b"
+ "@prisma/engines": "3.12.0-37.22b822189f46ef0dc5c5b503368d1bee01213980"
}
},
"prop-types": {
@@ -1828,6 +1832,11 @@
"object-assign": "^4.1.1"
}
},
+ "react-colorful": {
+ "version": "5.5.1",
+ "resolved": "https://registry.npmjs.org/react-colorful/-/react-colorful-5.5.1.tgz",
+ "integrity": "sha512-M1TJH2X3RXEt12sWkpa6hLc/bbYS0H6F4rIqjQZ+RxNBstpY67d9TrFXtqdZwhpmBXcCwEi7stKqFue3ZRkiOg=="
+ },
"react-dom": {
"version": "17.0.2",
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz",
@@ -2169,12 +2178,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
}
}
}
diff --git a/package.json b/package.json
index b7d3f83..e42b887 100644
--- a/package.json
+++ b/package.json
@@ -17,6 +17,7 @@
"jsonwebtoken": "^8.5.1",
"next": "12.1.0",
"react": "17.0.2",
+ "react-colorful": "^5.5.1",
"react-dom": "17.0.2",
"react-multi-select-component": "^4.2.4"
},
diff --git a/prisma/migrations/20220408121349_fix/migration.sql b/prisma/migrations/20220408121349_fix/migration.sql
new file mode 100644
index 0000000..3c01180
--- /dev/null
+++ b/prisma/migrations/20220408121349_fix/migration.sql
@@ -0,0 +1,22 @@
+BEGIN TRY
+
+BEGIN TRAN;
+
+-- DropForeignKey
+ALTER TABLE [dbo].[Type] DROP CONSTRAINT [Type_Product_Id_fkey];
+
+-- AddForeignKey
+ALTER TABLE [dbo].[Type] ADD CONSTRAINT [Type_Product_Id_fkey] FOREIGN KEY ([Product_Id]) REFERENCES [dbo].[Product]([Product_Id]) ON DELETE CASCADE ON UPDATE CASCADE;
+
+COMMIT TRAN;
+
+END TRY
+BEGIN CATCH
+
+IF @@TRANCOUNT > 0
+BEGIN
+ ROLLBACK TRAN;
+END;
+THROW
+
+END CATCH
diff --git a/prisma/schema.prisma b/prisma/schema.prisma
index ea8134a..6464ada 100644
--- a/prisma/schema.prisma
+++ b/prisma/schema.prisma
@@ -70,7 +70,7 @@ model Type {
Price String
Inventory Int
- Product Product @relation(fields:[Product_Id],references:[Product_Id])
+ Product Product @relation(fields:[Product_Id],references:[Product_Id],onDelete: Cascade)
Product_Id Int
ProductPack ProductPack[]
}
diff --git a/public/tatiana-pavlova-Zc9y_Ijgebc-unsplash.jpg b/public/tatiana-pavlova-Zc9y_Ijgebc-unsplash.jpg
new file mode 100644
index 0000000..597b3dd
Binary files /dev/null and b/public/tatiana-pavlova-Zc9y_Ijgebc-unsplash.jpg differ
diff --git a/public/ulrich-derboven-6HRncCxcwEU-unsplash.jpg b/public/ulrich-derboven-6HRncCxcwEU-unsplash.jpg
new file mode 100644
index 0000000..f7911ec
Binary files /dev/null and b/public/ulrich-derboven-6HRncCxcwEU-unsplash.jpg differ