diff --git a/packages/medusa/src/api/routes/admin/products/add-option.js b/packages/medusa/src/api/routes/admin/products/add-option.js index a03ac8f34f..26960b7b13 100644 --- a/packages/medusa/src/api/routes/admin/products/add-option.js +++ b/packages/medusa/src/api/routes/admin/products/add-option.js @@ -23,6 +23,7 @@ export default async (req, res) => { "tags", "handle", "images", + "thumbnail", "options", "published", ], diff --git a/packages/medusa/src/api/routes/admin/products/create-product.js b/packages/medusa/src/api/routes/admin/products/create-product.js index 0c1400fd00..c4c7d700e5 100644 --- a/packages/medusa/src/api/routes/admin/products/create-product.js +++ b/packages/medusa/src/api/routes/admin/products/create-product.js @@ -9,6 +9,7 @@ export default async (req, res) => { title: Validator.string().required(), }), images: Validator.array().items(Validator.string()), + thumbnail: Validator.string().optional(), variants: Validator.array().items({ title: Validator.string().required(), sku: Validator.string(), @@ -45,6 +46,7 @@ export default async (req, res) => { const productService = req.scope.resolve("productService") const shippingProfileService = req.scope.resolve("shippingProfileService") + value.thumbnail = value.thumbnail || value.images[0] let newProduct = await productService.createDraft(value) if (variants) { @@ -70,16 +72,20 @@ export default async (req, res) => { const { _id } = await shippingProfileService.retrieveDefault() await shippingProfileService.addProduct(_id, newProduct._id) - newProduct = await productService.decorate(newProduct, [ - "title", - "description", - "tags", - "handle", - "images", - "options", - "variants", - "published", - ]) + newProduct = await productService.decorate( + newProduct, + [ + "title", + "description", + "tags", + "handle", + "images", + "thumbnail", + "options", + "published", + ], + ["variants"] + ) res.json({ product: newProduct }) } catch (err) { throw err diff --git a/packages/medusa/src/api/routes/admin/products/create-variant.js b/packages/medusa/src/api/routes/admin/products/create-variant.js index 7cfed5f766..eb7b744206 100644 --- a/packages/medusa/src/api/routes/admin/products/create-variant.js +++ b/packages/medusa/src/api/routes/admin/products/create-variant.js @@ -31,16 +31,20 @@ export default async (req, res) => { try { const productService = req.scope.resolve("productService") const product = await productService.createVariant(id, value) - const data = await productService.decorate(product, [ - "title", - "description", - "tags", - "handle", - "images", - "options", - "variants", - "published", - ]) + const data = await productService.decorate( + product, + [ + "title", + "description", + "tags", + "thumbnail", + "handle", + "images", + "options", + "published", + ], + ["variants"] + ) res.json({ product: data }) } catch (err) { throw err diff --git a/packages/medusa/src/api/routes/admin/products/delete-option.js b/packages/medusa/src/api/routes/admin/products/delete-option.js index 7e450bcd24..302d442ad3 100644 --- a/packages/medusa/src/api/routes/admin/products/delete-option.js +++ b/packages/medusa/src/api/routes/admin/products/delete-option.js @@ -11,6 +11,7 @@ export default async (req, res) => { "description", "tags", "handle", + "thumbnail", "images", "options", "published", diff --git a/packages/medusa/src/api/routes/admin/products/delete-variant.js b/packages/medusa/src/api/routes/admin/products/delete-variant.js index 6b27d24e8b..7345168354 100644 --- a/packages/medusa/src/api/routes/admin/products/delete-variant.js +++ b/packages/medusa/src/api/routes/admin/products/delete-variant.js @@ -4,15 +4,20 @@ export default async (req, res) => { try { const productService = req.scope.resolve("productService") const product = await productService.deleteVariant(id, variant_id) - const data = await productService.decorate(product, [ - "title", - "description", - "tags", - "handle", - "images", - "options", - "published", - ], ["variants"]) + const data = await productService.decorate( + product, + [ + "title", + "description", + "tags", + "handle", + "images", + "thumbnail", + "options", + "published", + ], + ["variants"] + ) res.json({ variant_id, diff --git a/packages/medusa/src/api/routes/admin/products/get-product.js b/packages/medusa/src/api/routes/admin/products/get-product.js index a964d2fd58..3bee285762 100644 --- a/packages/medusa/src/api/routes/admin/products/get-product.js +++ b/packages/medusa/src/api/routes/admin/products/get-product.js @@ -10,6 +10,7 @@ export default async (req, res) => { "title", "description", "tags", + "thumbnail", "handle", "images", "options", diff --git a/packages/medusa/src/api/routes/admin/products/list-products.js b/packages/medusa/src/api/routes/admin/products/list-products.js index 7644198224..3114333737 100644 --- a/packages/medusa/src/api/routes/admin/products/list-products.js +++ b/packages/medusa/src/api/routes/admin/products/list-products.js @@ -11,6 +11,7 @@ export default async (req, res) => { "title", "description", "tags", + "thumbnail", "handle", "images", "options", diff --git a/packages/medusa/src/api/routes/admin/products/publish-product.js b/packages/medusa/src/api/routes/admin/products/publish-product.js index 4f7cc97dbc..bf669ade46 100644 --- a/packages/medusa/src/api/routes/admin/products/publish-product.js +++ b/packages/medusa/src/api/routes/admin/products/publish-product.js @@ -6,16 +6,20 @@ export default async (req, res) => { const product = await productService.retrieve(id) await productService.publish(product._id) let publishedProduct = await productService.retrieve(product._id) - publishedProduct = await productService.decorate(publishedProduct, [ - "title", - "description", - "tags", - "handle", - "images", - "options", - "variants", - "published", - ]) + publishedProduct = await productService.decorate( + publishedProduct, + [ + "title", + "description", + "tags", + "handle", + "thumbnail", + "images", + "options", + "published", + ], + ["variants"] + ) res.json({ product: publishedProduct }) } catch (error) { throw error diff --git a/packages/medusa/src/api/routes/admin/products/update-option.js b/packages/medusa/src/api/routes/admin/products/update-option.js index 1a07876fae..650f462b8c 100644 --- a/packages/medusa/src/api/routes/admin/products/update-option.js +++ b/packages/medusa/src/api/routes/admin/products/update-option.js @@ -25,8 +25,8 @@ export default async (req, res) => { "tags", "handle", "images", + "thumbnail", "options", - "variants", "published", ], ["variants"] diff --git a/packages/medusa/src/api/routes/admin/products/update-product.js b/packages/medusa/src/api/routes/admin/products/update-product.js index 9ad7fbf188..495e311aa1 100644 --- a/packages/medusa/src/api/routes/admin/products/update-product.js +++ b/packages/medusa/src/api/routes/admin/products/update-product.js @@ -11,6 +11,7 @@ export default async (req, res) => { images: Validator.array() .items(Validator.string()) .optional(), + thumbnail: Validator.string().optional(), variants: Validator.array() .items({ _id: Validator.string(), @@ -50,9 +51,13 @@ export default async (req, res) => { try { const productService = req.scope.resolve("productService") const oldProduct = await productService.retrieve(id) - await productService.update(oldProduct._id, value) - let newProduct = await productService.retrieve(oldProduct._id) - newProduct = await productService.decorate( + + if (!oldProduct.thumbnail && value.images) { + value.thumbnail = value.thumbnail || value.images[0] + } + + const product = await productService.update(oldProduct._id, value) + const data = await productService.decorate( newProduct, [ "title", @@ -60,12 +65,13 @@ export default async (req, res) => { "tags", "handle", "images", + "thumbnail", "options", "published", ], ["variants"] ) - res.json({ product: newProduct }) + res.json({ product: data }) } catch (err) { throw err } diff --git a/packages/medusa/src/api/routes/admin/products/update-variant.js b/packages/medusa/src/api/routes/admin/products/update-variant.js index cc8a23e2a2..92796fe84b 100644 --- a/packages/medusa/src/api/routes/admin/products/update-variant.js +++ b/packages/medusa/src/api/routes/admin/products/update-variant.js @@ -76,16 +76,21 @@ export default async (req, res) => { } const product = await productService.retrieve(id) - const data = await productService.decorate(product, [ - "title", - "description", - "tags", - "handle", - "images", - "options", - "variants", - "published", - ]) + const data = await productService.decorate( + product, + [ + "title", + "description", + "tags", + "handle", + "images", + "options", + "thumbnail", + "variants", + "published", + ], + ["variants"] + ) res.json({ product: data }) } catch (err) { throw err diff --git a/packages/medusa/src/api/routes/admin/uploads/create-upload.js b/packages/medusa/src/api/routes/admin/uploads/create-upload.js index 0125f0a4c5..3ccbd43218 100644 --- a/packages/medusa/src/api/routes/admin/uploads/create-upload.js +++ b/packages/medusa/src/api/routes/admin/uploads/create-upload.js @@ -4,11 +4,8 @@ export default async (req, res) => { try { const fileService = req.scope.resolve("fileService") - console.log(fileService) - const result = await Promise.all( req.files.map(async f => { - console.log(f) return fileService.upload(f).then(result => { fs.unlinkSync(f.path) return result diff --git a/packages/medusa/src/models/product.js b/packages/medusa/src/models/product.js index fe38f47892..300ecaba94 100644 --- a/packages/medusa/src/models/product.js +++ b/packages/medusa/src/models/product.js @@ -15,6 +15,7 @@ class ProductModel extends BaseModel { tags: { type: String, default: "" }, handle: { type: String, unique: true, sparse: true }, images: { type: [String], default: [] }, + thumbnail: { type: String, default: "" }, options: { type: [OptionSchema], default: [] }, variants: { type: [String], default: [] }, metadata: { type: mongoose.Schema.Types.Mixed, default: {} },