UNPKG

1.26 kBJavaScriptView Raw
1require('q3-schema-types');
2const { Schema } = require('mongoose');
3const {
4 withNorthAmericanCurrency,
5 withDateRange,
6} = require('q3-schema-utils');
7const { conditionalSkuThreshold } = require('./validation');
8
9const RebateTierSchema = new Schema({
10 quantity: Number,
11 value: Number,
12});
13
14const RebatesSchema = new Schema({
15 name: {
16 type: String,
17 required: true,
18 searchable: true,
19 },
20 description: {
21 type: String,
22 required: true,
23 searchable: true,
24 },
25 couponCode: {
26 type: String,
27 dedupe: true,
28 searchable: true,
29 },
30 value: {
31 type: Number,
32 min: [0, 'Cannot be negative'],
33 },
34 maximumPerOrder: Number,
35 maximumPerProduct: Number,
36 maximumPerHistory: Number,
37 requiredSkus: {
38 type: Schema.Types.CommaDelimited,
39 searchable: true,
40 },
41 conditionalSkus: Schema.Types.CommaDelimited,
42 conditionalSkuThreshold: {
43 validate: conditionalSkuThreshold,
44 type: Number,
45 },
46 tiers: [RebateTierSchema],
47 symbol: {
48 type: String,
49 default: '$',
50 enum: ['$', '%', '='],
51 required: true,
52 },
53});
54
55RebatesSchema.plugin(withDateRange);
56RebatesSchema.plugin(withNorthAmericanCurrency);
57
58module.exports = RebatesSchema;