From cc23a3b0706c41ec57bb25ea3de9c6e39bd04f31 Mon Sep 17 00:00:00 2001 From: Oliver Windall Juhl <59018053+olivermrbl@users.noreply.github.com> Date: Tue, 20 Oct 2020 17:07:47 +0200 Subject: [PATCH] feat(medusa-interfaces): Adds schema options to base model --- packages/medusa-interfaces/src/base-model.js | 21 ++++++++++++++++++-- packages/medusa/src/models/cart.js | 4 ++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/packages/medusa-interfaces/src/base-model.js b/packages/medusa-interfaces/src/base-model.js index d83611298f..e3c63eca30 100644 --- a/packages/medusa-interfaces/src/base-model.js +++ b/packages/medusa-interfaces/src/base-model.js @@ -35,13 +35,30 @@ class BaseModel { return this.constructor.modelName } + /** + * Returns the schema options defined in child class. + * @return {object} the schema options + */ + getSchemaOptions() { + if (!this.constructor.schemaOptions) { + return {} + } + + return this.constructor.schemaOptions + } + /** * @private - * Creates a mongoose model based on schema and model name. + * Creates a mongoose model based on schema, schema options and model name. * @return {Mongooose.Model} the mongoose model */ createMongooseModel_() { - return mongoose.model(this.getModelName(), this.getSchema()) + const schema = this.getSchema() + const options = this.getSchemaOptions() + + const mongooseSchema = new mongoose.Schema(schema, options) + + return mongoose.model(this.getModelName(), mongooseSchema) } /** diff --git a/packages/medusa/src/models/cart.js b/packages/medusa/src/models/cart.js index 1393e3b088..c639685bd3 100644 --- a/packages/medusa/src/models/cart.js +++ b/packages/medusa/src/models/cart.js @@ -13,6 +13,10 @@ import DiscountSchema from "./schemas/discount" class CartModel extends BaseModel { static modelName = "Cart" + static schemaOptions = { + minimize: false, + } + static schema = { email: { type: String }, billing_address: { type: AddressSchema },