@positivegrid/pg-mongoose-schema 27.8.4 → 28.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +5 -0
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -0
- package/dist/models/banks.d.ts +3 -0
- package/dist/models/banks.js +33 -0
- package/dist/models/banks.js.map +1 -0
- package/dist/models/device.d.ts +3 -0
- package/dist/models/device.js +48 -0
- package/dist/models/device.js.map +1 -0
- package/dist/models/featuredList.d.ts +3 -0
- package/dist/models/featuredList.js +70 -0
- package/dist/models/featuredList.js.map +1 -0
- package/dist/models/hardware.d.ts +3 -0
- package/dist/models/hardware.js +213 -0
- package/dist/models/hardware.js.map +1 -0
- package/dist/models/homeConfig.d.ts +3 -0
- package/dist/models/homeConfig.js +38 -0
- package/dist/models/homeConfig.js.map +1 -0
- package/dist/models/oauth.d.ts +3 -0
- package/dist/models/oauth.js +48 -0
- package/dist/models/oauth.js.map +1 -0
- package/dist/models/partner.d.ts +3 -0
- package/dist/models/partner.js +165 -0
- package/dist/models/partner.js.map +1 -0
- package/dist/models/payment.d.ts +3 -0
- package/dist/models/payment.js +859 -0
- package/dist/models/payment.js.map +1 -0
- package/dist/models/pgConfig.d.ts +3 -0
- package/dist/models/pgConfig.js +64 -0
- package/dist/models/pgConfig.js.map +1 -0
- package/dist/models/preset.d.ts +3 -0
- package/dist/models/preset.js +802 -0
- package/dist/models/preset.js.map +1 -0
- package/dist/models/promotion.d.ts +3 -0
- package/dist/models/promotion.js +585 -0
- package/dist/models/promotion.js.map +1 -0
- package/dist/models/redeem.d.ts +3 -0
- package/dist/models/redeem.js +26 -0
- package/dist/models/redeem.js.map +1 -0
- package/dist/models/toneTheme.d.ts +3 -0
- package/dist/models/toneTheme.js +29 -0
- package/dist/models/toneTheme.js.map +1 -0
- package/dist/models/toneThemeFeaturedList.d.ts +3 -0
- package/dist/models/toneThemeFeaturedList.js +18 -0
- package/dist/models/toneThemeFeaturedList.js.map +1 -0
- package/dist/models/user.d.ts +3 -0
- package/dist/models/user.js +565 -0
- package/dist/models/user.js.map +1 -0
- package/dist/models/userTrack.d.ts +3 -0
- package/dist/models/userTrack.js +82 -0
- package/dist/models/userTrack.js.map +1 -0
- package/dist/types/banks.types.d.ts +25 -0
- package/dist/types/banks.types.js +3 -0
- package/dist/types/banks.types.js.map +1 -0
- package/dist/types/device.types.d.ts +41 -0
- package/dist/types/device.types.js +3 -0
- package/dist/types/device.types.js.map +1 -0
- package/dist/types/featuredList.types.d.ts +32 -0
- package/dist/types/featuredList.types.js +3 -0
- package/dist/types/featuredList.types.js.map +1 -0
- package/dist/types/hardware.types.d.ts +123 -0
- package/dist/types/hardware.types.js +3 -0
- package/dist/types/hardware.types.js.map +1 -0
- package/dist/types/homeConfig.types.d.ts +24 -0
- package/dist/types/homeConfig.types.js +3 -0
- package/dist/types/homeConfig.types.js.map +1 -0
- package/dist/types/index.d.ts +17 -0
- package/dist/types/index.js +34 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/oauth.types.d.ts +38 -0
- package/dist/types/oauth.types.js +3 -0
- package/dist/types/oauth.types.js.map +1 -0
- package/dist/types/partner.types.d.ts +91 -0
- package/dist/types/partner.types.js +3 -0
- package/dist/types/partner.types.js.map +1 -0
- package/dist/types/payment.types.d.ts +304 -0
- package/dist/types/payment.types.js +3 -0
- package/dist/types/payment.types.js.map +1 -0
- package/dist/types/pgConfig.types.d.ts +35 -0
- package/dist/types/pgConfig.types.js +3 -0
- package/dist/types/pgConfig.types.js.map +1 -0
- package/dist/types/preset.types.d.ts +110 -0
- package/dist/types/preset.types.js +3 -0
- package/dist/types/preset.types.js.map +1 -0
- package/dist/types/promotion.types.d.ts +282 -0
- package/dist/types/promotion.types.js +3 -0
- package/dist/types/promotion.types.js.map +1 -0
- package/dist/types/redeem.types.d.ts +16 -0
- package/dist/types/redeem.types.js +3 -0
- package/dist/types/redeem.types.js.map +1 -0
- package/dist/types/toneTheme.types.d.ts +16 -0
- package/dist/types/toneTheme.types.js +3 -0
- package/dist/types/toneTheme.types.js.map +1 -0
- package/dist/types/toneThemeFeaturedList.types.d.ts +9 -0
- package/dist/types/toneThemeFeaturedList.types.js +3 -0
- package/dist/types/toneThemeFeaturedList.types.js.map +1 -0
- package/dist/types/user.types.d.ts +166 -0
- package/dist/types/user.types.js +6 -0
- package/dist/types/user.types.js.map +1 -0
- package/dist/types/userTrack.types.d.ts +39 -0
- package/dist/types/userTrack.types.js +12 -0
- package/dist/types/userTrack.types.js.map +1 -0
- package/package.json +38 -12
- package/index.js +0 -28
- package/models/banks.js +0 -42
- package/models/device.js +0 -51
- package/models/featuredList.js +0 -91
- package/models/hardware.js +0 -256
- package/models/homeConfig.js +0 -86
- package/models/oauth.js +0 -52
- package/models/partner.js +0 -265
- package/models/payment.js +0 -899
- package/models/pgConfig.js +0 -88
- package/models/preset.js +0 -845
- package/models/promotion.js +0 -590
- package/models/redeem.js +0 -26
- package/models/toneTheme.js +0 -78
- package/models/toneThemeFeaturedList.js +0 -49
- package/models/user.js +0 -639
- package/models/userTrack.js +0 -107
package/models/partner.js
DELETED
|
@@ -1,265 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
module.exports = function (mongoose) {
|
|
4
|
-
const Schema = mongoose.Schema
|
|
5
|
-
const ObjectId = Schema.Types.ObjectId
|
|
6
|
-
const _ = require('lodash')
|
|
7
|
-
const debug = require('debug')('model:partner')
|
|
8
|
-
|
|
9
|
-
const PartnerSalesMetaSchema = new Schema({
|
|
10
|
-
partner_name: { type: String, required: true }, // thomann/b2b_redeem
|
|
11
|
-
sales_product: { type: ObjectId, ref: 'Product', default: null },
|
|
12
|
-
sales_bundle: { type: ObjectId, ref: 'Bundle', default: null },
|
|
13
|
-
b2b_redeem_id: { type: Number, default: null }, // Map to b2b redeem code product ID on BigCommerce (NOT product!)
|
|
14
|
-
pg_sales_price: { type: Number, default: 0, required: true }, // The price which the product we sell on BigCommerce
|
|
15
|
-
purchase_price: { type: Number, default: 0, required: true }, // The price we gave to our partner
|
|
16
|
-
status: { type: Number, default: 1, required: true }, // 1: active, 2: inactive
|
|
17
|
-
created_on: { type: Date, default: Date.now }
|
|
18
|
-
}, { collection: 'pg_partner_sales_meta' })
|
|
19
|
-
PartnerSalesMetaSchema.index({ partner_name: 1, status: 1 })
|
|
20
|
-
PartnerSalesMetaSchema.index({ sales_product: 1, sales_bundle: 1, status: 1 })
|
|
21
|
-
|
|
22
|
-
const PURCHASE_ITEM_TYPE = ['license', 'bundle']
|
|
23
|
-
const PartnerRedeemSchema = new Schema({
|
|
24
|
-
partner_name: { type: String, required: true },
|
|
25
|
-
sales_item_id: { type: ObjectId, ref: 'PartnerSalesMeta', required: true },
|
|
26
|
-
purchase_price: { type: Number, default: 0, required: true },
|
|
27
|
-
redeem_keycode: { type: String, required: true },
|
|
28
|
-
buyer: { type: Schema.Types.Mixed, default: null },
|
|
29
|
-
order_number: { type: String, default: null },
|
|
30
|
-
status: { type: Number, required: true, default: 1 }, // 1: active 2: refund
|
|
31
|
-
metadata: { type: Schema.Types.Mixed, default: null },
|
|
32
|
-
created_on: { type: Date, default: Date.now },
|
|
33
|
-
updated_on: { type: Date, default: Date.now }
|
|
34
|
-
}, { collection: 'pg_partner_redeem' })
|
|
35
|
-
|
|
36
|
-
const PartnerSalesHistorySchema = new Schema({
|
|
37
|
-
partner_name: { type: String, required: true },
|
|
38
|
-
sku: { type: String, required: true },
|
|
39
|
-
title: { type: String, required: true },
|
|
40
|
-
previous_price: { type: Number, required: true },
|
|
41
|
-
current_price: { type: Number, required: true },
|
|
42
|
-
updated_on: { type: Date, default: Date.now }
|
|
43
|
-
}, { collection: 'pg_partner_sales_history' })
|
|
44
|
-
PartnerSalesHistorySchema.index({ partner_name: 1, sku: 1 })
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* B2bRedeemSchema is the db table for B2B redeem purchase records.
|
|
48
|
-
* Our dealer will purchase the redeem code they need and all detail will save in pg_b2b_redeem_order and pg_b2b_redeem
|
|
49
|
-
* https://docs.google.com/document/d/1sYJ8iNocF6xipbcNA06MrL0Wt1m_kEzAHstVBfvZ4ng/edit?usp=sharing
|
|
50
|
-
*/
|
|
51
|
-
const B2bRedeemOrderSchema = new Schema({
|
|
52
|
-
dealer_id: { type: ObjectId, ref: 'auth_user', required: true }, // Dealer also need to signup a PG account first.
|
|
53
|
-
order_id: { type: Number, default: null, required: true }, // we use BigCommerce system for now.
|
|
54
|
-
order_detail: [{
|
|
55
|
-
product_id: { type: ObjectId, ref: 'jamup_product', default: null },
|
|
56
|
-
bundle_id: { type: ObjectId, ref: 'jamup_bundle', default: null },
|
|
57
|
-
quantity: { type: Number, default: 0 }
|
|
58
|
-
}],
|
|
59
|
-
order_amount: { type: Number, default: 0, required: true },
|
|
60
|
-
status: { type: Number, default: 0, required: true }, // 0:inactive/1:code_shipped/2:receive_order/3:refund
|
|
61
|
-
created_on: { type: Date, default: Date.now }
|
|
62
|
-
}, { collection: 'pg_b2b_redeem_order' })
|
|
63
|
-
B2bRedeemOrderSchema.index({ dealer_id: 1, order_id: 1 })
|
|
64
|
-
|
|
65
|
-
const B2bRedeemSchema = new Schema({
|
|
66
|
-
redeem_code: { type: String, required: true },
|
|
67
|
-
status: { type: Number, default: 1, required: true }, //1:active/2:refund/3:delete
|
|
68
|
-
redeem_order_id: { type: ObjectId, ref: 'pg_b2b_redeem_order', required: true },
|
|
69
|
-
apply_user_id: { type: ObjectId, ref: 'auth_user', default: null, required: true },
|
|
70
|
-
created_on: { type: Date, default: Date.now }
|
|
71
|
-
}, { collection: 'pg_b2b_redeem' })
|
|
72
|
-
|
|
73
|
-
const B2bDealerSchema = new Schema({
|
|
74
|
-
dealer_id: { type: ObjectId, ref: 'User', required: true },
|
|
75
|
-
business_name: { type: String, required: true },
|
|
76
|
-
business_address: { type: String, required: true },
|
|
77
|
-
business_phone: { type: String, required: true },
|
|
78
|
-
business_website: { type: String, default: null },
|
|
79
|
-
business_tax_id: { type: String, default: null },
|
|
80
|
-
business_vat_id: { type: String, default: null },
|
|
81
|
-
members: [{ type: String }], // members' email which can receive purchased redeem code as well.
|
|
82
|
-
created_on: { type: Date, default: Date.now }
|
|
83
|
-
}, { collection: 'b2b_dealer_profile' })
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* This table is used for special redeem code promotion for our OEM partners.
|
|
87
|
-
* The fields in this table will map to the redeem code metadata:
|
|
88
|
-
* redeem_product -> product_name
|
|
89
|
-
* product_type -> type
|
|
90
|
-
* partner_name -> OEM_Name
|
|
91
|
-
* https://docs.google.com/document/d/1wyJwGm6zHNLDVnJWV9FGxznqwBFZMpG8IcXUQCurjwI/edit?usp=sharing
|
|
92
|
-
*/
|
|
93
|
-
const OEM_PROMOTION_TYPE = [
|
|
94
|
-
'discount_coupon'
|
|
95
|
-
]
|
|
96
|
-
const OemRedeemPromotionSchema = new Schema({
|
|
97
|
-
redeem_product: { type: String, required: true },
|
|
98
|
-
product_type: { type: String, required: true },
|
|
99
|
-
partner_name: { type: String, required: true },
|
|
100
|
-
promotion_type: { type: String, enum: OEM_PROMOTION_TYPE, required: true },
|
|
101
|
-
promotion_data: { type: Schema.Types.Mixed, required: true },
|
|
102
|
-
status: { type: Number, default: 1, required: true }, // 0:disable/1:enable
|
|
103
|
-
created_on: { type: Date, default: Date.now }
|
|
104
|
-
}, { collection: 'pg_oem_redeem_promotion' })
|
|
105
|
-
|
|
106
|
-
function _identifyItemTypeBySku (sku) {
|
|
107
|
-
if (/^B(.*)/.test(sku)) {
|
|
108
|
-
return 'bundle'
|
|
109
|
-
} else if (/^(L|C|U)(.*)/.test(sku)) {
|
|
110
|
-
return 'product'
|
|
111
|
-
} else {
|
|
112
|
-
return false
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
PartnerSalesMetaSchema.static({
|
|
117
|
-
getPartnerSalesMeta: function (partnerName) {
|
|
118
|
-
const self = this
|
|
119
|
-
return new Promise((resolve, reject) => {
|
|
120
|
-
self.aggregate([
|
|
121
|
-
{
|
|
122
|
-
'$match': {
|
|
123
|
-
'partner_name': partnerName,
|
|
124
|
-
'status': 1
|
|
125
|
-
}
|
|
126
|
-
},
|
|
127
|
-
{
|
|
128
|
-
'$lookup': {
|
|
129
|
-
'from': 'jamup_bundle',
|
|
130
|
-
'foreignField': '_id',
|
|
131
|
-
'localField': 'sales_bundle',
|
|
132
|
-
'as': 'bundle'
|
|
133
|
-
}
|
|
134
|
-
},
|
|
135
|
-
{
|
|
136
|
-
'$lookup': {
|
|
137
|
-
'from': 'jamup_product',
|
|
138
|
-
'foreignField': '_id',
|
|
139
|
-
'localField': 'sales_product',
|
|
140
|
-
'as': 'product'
|
|
141
|
-
}
|
|
142
|
-
},
|
|
143
|
-
])
|
|
144
|
-
.exec()
|
|
145
|
-
.then(data => {
|
|
146
|
-
if (!data) {
|
|
147
|
-
return reject(Error(`Partner ${partnerName} are invalid.`))
|
|
148
|
-
} else {
|
|
149
|
-
return resolve(data)
|
|
150
|
-
}
|
|
151
|
-
})
|
|
152
|
-
.catch(err => {
|
|
153
|
-
return reject(err)
|
|
154
|
-
})
|
|
155
|
-
})
|
|
156
|
-
},
|
|
157
|
-
getSalesMetaWithSku: function (sku, partnerName) {
|
|
158
|
-
const self = this
|
|
159
|
-
return new Promise((resolve, reject) => {
|
|
160
|
-
const skuType = _identifyItemTypeBySku(sku)
|
|
161
|
-
if (skuType === 'bundle') {
|
|
162
|
-
self.aggregate([
|
|
163
|
-
{
|
|
164
|
-
'$match': {
|
|
165
|
-
'partner_name': partnerName,
|
|
166
|
-
'status': 1
|
|
167
|
-
}
|
|
168
|
-
},
|
|
169
|
-
{
|
|
170
|
-
'$lookup': {
|
|
171
|
-
'from': 'jamup_bundle',
|
|
172
|
-
'foreignField': '_id',
|
|
173
|
-
'localField': 'sales_bundle',
|
|
174
|
-
'as': 'sales'
|
|
175
|
-
}
|
|
176
|
-
},
|
|
177
|
-
{ '$unwind': '$sales' },
|
|
178
|
-
{ '$match': { 'sales.sku': sku } }
|
|
179
|
-
])
|
|
180
|
-
.exec()
|
|
181
|
-
.then(data => {
|
|
182
|
-
if (!data) {
|
|
183
|
-
return reject(Error(`SKU ${sku} is not enabled sales bundle.`))
|
|
184
|
-
} else if (Array.isArray(data) && data.length > 1) {
|
|
185
|
-
return reject(Error(`Incorrect bundle sku settings: ${sku}.`))
|
|
186
|
-
} else {
|
|
187
|
-
return resolve(data[0])
|
|
188
|
-
}
|
|
189
|
-
})
|
|
190
|
-
.catch(err => {
|
|
191
|
-
return reject(err)
|
|
192
|
-
})
|
|
193
|
-
} else if (skuType === 'product') {
|
|
194
|
-
self.aggregate([
|
|
195
|
-
{
|
|
196
|
-
'$match': {
|
|
197
|
-
'partner_name': partnerName,
|
|
198
|
-
'status': 1
|
|
199
|
-
}
|
|
200
|
-
},
|
|
201
|
-
{
|
|
202
|
-
'$lookup': {
|
|
203
|
-
'from': 'jamup_product',
|
|
204
|
-
'foreignField': '_id',
|
|
205
|
-
'localField': 'sales_product',
|
|
206
|
-
'as': 'sales'
|
|
207
|
-
}
|
|
208
|
-
},
|
|
209
|
-
{ '$unwind': '$sales' },
|
|
210
|
-
{ '$match': { 'sales.sku': sku } }
|
|
211
|
-
])
|
|
212
|
-
.exec()
|
|
213
|
-
.then(data => {
|
|
214
|
-
if (!data) {
|
|
215
|
-
return reject(Error(`SKU ${sku} is not enabled sales product.`))
|
|
216
|
-
} else if (Array.isArray(data) && data.length > 1) {
|
|
217
|
-
return reject(Error(`Incorrect product sku settings: ${sku}.`))
|
|
218
|
-
} else {
|
|
219
|
-
return resolve(data[0])
|
|
220
|
-
}
|
|
221
|
-
})
|
|
222
|
-
.catch(err => {
|
|
223
|
-
return reject(err)
|
|
224
|
-
})
|
|
225
|
-
} else {
|
|
226
|
-
return reject(Error(`Invalid item sku: ${sku}`))
|
|
227
|
-
}
|
|
228
|
-
})
|
|
229
|
-
}
|
|
230
|
-
})
|
|
231
|
-
|
|
232
|
-
OemRedeemPromotionSchema.static({
|
|
233
|
-
findRedeemFullfillPromotion: async function (redeemData) {
|
|
234
|
-
try {
|
|
235
|
-
if (!_.has(redeemData, 'metadata.OEM_Name')) {
|
|
236
|
-
throw new Error('This is not a OEM redeem code.')
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
if (!_.has(redeemData, 'metadata.product_name') || !_.has(redeemData, 'metadata.type')) {
|
|
240
|
-
throw new Error('This is not a valid redeem code.')
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
const promoData = await this.find({
|
|
244
|
-
'redeem_product': redeemData.metadata.product_name,
|
|
245
|
-
'product_type': redeemData.metadata.type,
|
|
246
|
-
'partner_name': redeemData.metadata.OEM_Name,
|
|
247
|
-
'status': 1
|
|
248
|
-
}).exec()
|
|
249
|
-
|
|
250
|
-
return promoData
|
|
251
|
-
} catch (err) {
|
|
252
|
-
debug('ERR:findRedeemFullfillPromotion %o', err)
|
|
253
|
-
throw err
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
})
|
|
257
|
-
|
|
258
|
-
mongoose.model('PartnerSalesMeta', PartnerSalesMetaSchema)
|
|
259
|
-
mongoose.model('PartnerRedeem', PartnerRedeemSchema)
|
|
260
|
-
mongoose.model('PartnerSalesHistory', PartnerSalesHistorySchema)
|
|
261
|
-
mongoose.model('B2bRedeemOrder', B2bRedeemOrderSchema)
|
|
262
|
-
mongoose.model('B2bRedeem', B2bRedeemSchema)
|
|
263
|
-
mongoose.model('B2bDealer', B2bDealerSchema)
|
|
264
|
-
mongoose.model('OemRedeemPromotion', OemRedeemPromotionSchema)
|
|
265
|
-
}
|