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