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 },