From 4b2f4c4bf81faafd2512f86f8272ef44305de855 Mon Sep 17 00:00:00 2001 From: Tom Butcher Date: Sat, 4 Jul 2026 22:03:31 +0100 Subject: [PATCH] Add text indexes to various schemas for improved search capabilities - Introduced text indexes in invoice, payment, tax record, and multiple inventory and management schemas to enhance search functionality. - Updated schemas include invoice, payment, tax record, filament stock, order item, part stock, product stock, purchase order, shipment, stock audit, stock event, stock location, stock transfer, app password, audit log, courier, courier service, document job, document printer, document size, document template, filament, filament SKU, file, host, material, note type, part, part SKU, product, product category, product SKU, tax rate, user, vendor, gcode file, job, printer, subjob, client, listing, listing variant, and marketplace schemas. - Improved search performance and flexibility across the application by leveraging text indexing. --- src/database/schemas/finance/invoice.schema.js | 2 ++ src/database/schemas/finance/payment.schema.js | 2 ++ src/database/schemas/finance/taxrecord.schema.js | 2 ++ src/database/schemas/inventory/filamentstock.schema.js | 2 ++ src/database/schemas/inventory/orderitem.schema.js | 2 ++ src/database/schemas/inventory/partstock.schema.js | 2 ++ src/database/schemas/inventory/productstock.schema.js | 2 ++ src/database/schemas/inventory/purchaseorder.schema.js | 2 ++ src/database/schemas/inventory/shipment.schema.js | 2 ++ src/database/schemas/inventory/stockaudit.schema.js | 2 ++ src/database/schemas/inventory/stockevent.schema.js | 2 ++ src/database/schemas/inventory/stocklocation.schema.js | 2 ++ src/database/schemas/inventory/stocktransfer.schema.js | 2 ++ src/database/schemas/management/apppassword.schema.js | 2 ++ src/database/schemas/management/auditlog.schema.js | 2 ++ src/database/schemas/management/courier.schema.js | 2 ++ src/database/schemas/management/courierservice.schema.js | 2 ++ src/database/schemas/management/documentjob.schema.js | 2 ++ src/database/schemas/management/documentprinter.schema.js | 2 ++ src/database/schemas/management/documentsize.schema.js | 2 ++ src/database/schemas/management/documenttemplate.schema.js | 2 ++ src/database/schemas/management/filament.schema.js | 2 ++ src/database/schemas/management/filamentsku.schema.js | 2 ++ src/database/schemas/management/file.schema.js | 2 ++ src/database/schemas/management/host.schema.js | 2 ++ src/database/schemas/management/material.schema.js | 2 ++ src/database/schemas/management/notetype.schema.js | 2 ++ src/database/schemas/management/part.schema.js | 2 ++ src/database/schemas/management/partsku.schema.js | 2 ++ src/database/schemas/management/product.schema.js | 3 +++ src/database/schemas/management/productcategory.schema.js | 2 ++ src/database/schemas/management/productsku.schema.js | 2 ++ src/database/schemas/management/taxrate.schema.js | 2 ++ src/database/schemas/management/user.schema.js | 2 ++ src/database/schemas/management/vendor.schema.js | 2 ++ src/database/schemas/production/gcodefile.schema.js | 2 +- src/database/schemas/production/job.schema.js | 2 ++ src/database/schemas/production/printer.schema.js | 2 ++ src/database/schemas/production/subjob.schema.js | 2 ++ src/database/schemas/sales/client.schema.js | 2 ++ src/database/schemas/sales/listing.schema.js | 2 ++ src/database/schemas/sales/listingvarient.schema.js | 2 ++ src/database/schemas/sales/marketplace.schema.js | 2 ++ src/database/schemas/sales/salesorder.schema.js | 2 ++ 44 files changed, 88 insertions(+), 1 deletion(-) diff --git a/src/database/schemas/finance/invoice.schema.js b/src/database/schemas/finance/invoice.schema.js index ed7e475..3b7bffe 100644 --- a/src/database/schemas/finance/invoice.schema.js +++ b/src/database/schemas/finance/invoice.schema.js @@ -54,6 +54,8 @@ const invoiceSchema = new Schema( { timestamps: true } ); +invoiceSchema.index({ orderType: 'text', fromType: 'text', toType: 'text' }); + const rollupConfigs = [ { name: 'draft', diff --git a/src/database/schemas/finance/payment.schema.js b/src/database/schemas/finance/payment.schema.js index 4c35a28..bfd5568 100644 --- a/src/database/schemas/finance/payment.schema.js +++ b/src/database/schemas/finance/payment.schema.js @@ -24,6 +24,8 @@ const paymentSchema = new Schema( { timestamps: true } ); +paymentSchema.index({ paymentMethod: 'text', notes: 'text' }); + const rollupConfigs = [ { name: 'draft', diff --git a/src/database/schemas/finance/taxrecord.schema.js b/src/database/schemas/finance/taxrecord.schema.js index 3680196..278bcaa 100644 --- a/src/database/schemas/finance/taxrecord.schema.js +++ b/src/database/schemas/finance/taxrecord.schema.js @@ -19,6 +19,8 @@ const taxRecordSchema = new Schema( { timestamps: true } ); +taxRecordSchema.index({ transactionType: 'text' }); + taxRecordSchema.virtual('id').get(function () { return this._id; }); diff --git a/src/database/schemas/inventory/filamentstock.schema.js b/src/database/schemas/inventory/filamentstock.schema.js index 7a3abca..c5d4dda 100644 --- a/src/database/schemas/inventory/filamentstock.schema.js +++ b/src/database/schemas/inventory/filamentstock.schema.js @@ -49,6 +49,8 @@ const filamentStockSchema = new Schema( { timestamps: true } ); +filamentStockSchema.index({ 'state.type': 'text' }); + filamentStockSchema.pre('validate', async function () { if (!this.filament && this.filamentSku) { const sku = await mongoose diff --git a/src/database/schemas/inventory/orderitem.schema.js b/src/database/schemas/inventory/orderitem.schema.js index f0e8ea1..2a45017 100644 --- a/src/database/schemas/inventory/orderitem.schema.js +++ b/src/database/schemas/inventory/orderitem.schema.js @@ -69,6 +69,8 @@ const orderItemSchema = new Schema( { timestamps: true } ); +orderItemSchema.index({ name: 'text', itemType: 'text', orderType: 'text' }); + const rollupConfigs = [ { name: 'shipped', diff --git a/src/database/schemas/inventory/partstock.schema.js b/src/database/schemas/inventory/partstock.schema.js index a57a3f9..1f4baba 100644 --- a/src/database/schemas/inventory/partstock.schema.js +++ b/src/database/schemas/inventory/partstock.schema.js @@ -43,6 +43,8 @@ const partStockSchema = new Schema( { timestamps: true } ); +partStockSchema.index({ sourceType: 'text', 'state.type': 'text' }); + const rollupConfigs = [ { name: 'totalCurrentQuantity', diff --git a/src/database/schemas/inventory/productstock.schema.js b/src/database/schemas/inventory/productstock.schema.js index d0722d1..f9741a1 100644 --- a/src/database/schemas/inventory/productstock.schema.js +++ b/src/database/schemas/inventory/productstock.schema.js @@ -49,6 +49,8 @@ const productStockSchema = new Schema( { timestamps: true } ); +productStockSchema.index({ 'state.type': 'text' }); + const rollupConfigs = [ { name: 'totalCurrentQuantity', diff --git a/src/database/schemas/inventory/purchaseorder.schema.js b/src/database/schemas/inventory/purchaseorder.schema.js index a7ee7cc..9873c99 100644 --- a/src/database/schemas/inventory/purchaseorder.schema.js +++ b/src/database/schemas/inventory/purchaseorder.schema.js @@ -25,6 +25,8 @@ const purchaseOrderSchema = new Schema( { timestamps: true } ); +purchaseOrderSchema.index({ 'state.type': 'text' }); + const rollupConfigs = [ { name: 'draft', diff --git a/src/database/schemas/inventory/shipment.schema.js b/src/database/schemas/inventory/shipment.schema.js index 1391501..7a889b0 100644 --- a/src/database/schemas/inventory/shipment.schema.js +++ b/src/database/schemas/inventory/shipment.schema.js @@ -34,6 +34,8 @@ const shipmentSchema = new Schema( { timestamps: true } ); +shipmentSchema.index({ trackingNumber: 'text', orderType: 'text' }); + shipmentSchema.statics.recalculate = async function (shipment, user) { if (shipment.orderType !== 'purchaseOrder' && shipment.orderType !== 'salesOrder') { return; diff --git a/src/database/schemas/inventory/stockaudit.schema.js b/src/database/schemas/inventory/stockaudit.schema.js index 75ad18e..24cba7b 100644 --- a/src/database/schemas/inventory/stockaudit.schema.js +++ b/src/database/schemas/inventory/stockaudit.schema.js @@ -28,6 +28,8 @@ const stockAuditSchema = new Schema( { timestamps: true } ); +stockAuditSchema.index({ type: 'text', status: 'text', notes: 'text' }); + // Add virtual id getter stockAuditSchema.virtual('id').get(function () { return this._id; diff --git a/src/database/schemas/inventory/stockevent.schema.js b/src/database/schemas/inventory/stockevent.schema.js index cc0bd31..48c5e2d 100644 --- a/src/database/schemas/inventory/stockevent.schema.js +++ b/src/database/schemas/inventory/stockevent.schema.js @@ -32,6 +32,8 @@ const stockEventSchema = new Schema( { timestamps: true } ); +stockEventSchema.index({ parentType: 'text', ownerType: 'text', unit: 'text' }); + // Add virtual id getter stockEventSchema.virtual('id').get(function () { return this._id; diff --git a/src/database/schemas/inventory/stocklocation.schema.js b/src/database/schemas/inventory/stocklocation.schema.js index af135f1..796d5b5 100644 --- a/src/database/schemas/inventory/stocklocation.schema.js +++ b/src/database/schemas/inventory/stocklocation.schema.js @@ -21,6 +21,8 @@ const stockLocationSchema = new Schema( { timestamps: true } ); +stockLocationSchema.index({ name: 'text' }); + stockLocationSchema.statics.stats = async function () { const total = await this.countDocuments({}); return { total: { count: total } }; diff --git a/src/database/schemas/inventory/stocktransfer.schema.js b/src/database/schemas/inventory/stocktransfer.schema.js index 9d0e706..2ea7bb0 100644 --- a/src/database/schemas/inventory/stocktransfer.schema.js +++ b/src/database/schemas/inventory/stocktransfer.schema.js @@ -48,6 +48,8 @@ const stockTransferSchema = new Schema( { timestamps: true } ); +stockTransferSchema.index({ name: 'text' }); + stockTransferSchema.statics.stats = async function () { const [draft, posted] = await Promise.all([ this.countDocuments({ 'state.type': 'draft' }), diff --git a/src/database/schemas/management/apppassword.schema.js b/src/database/schemas/management/apppassword.schema.js index bcc4f21..e4e3904 100644 --- a/src/database/schemas/management/apppassword.schema.js +++ b/src/database/schemas/management/apppassword.schema.js @@ -13,6 +13,8 @@ const appPasswordSchema = new mongoose.Schema( { timestamps: true } ); +appPasswordSchema.index({ name: 'text' }); + appPasswordSchema.virtual('id').get(function () { return this._id; }); diff --git a/src/database/schemas/management/auditlog.schema.js b/src/database/schemas/management/auditlog.schema.js index 16fb76c..96f9e16 100644 --- a/src/database/schemas/management/auditlog.schema.js +++ b/src/database/schemas/management/auditlog.schema.js @@ -36,6 +36,8 @@ const auditLogSchema = new Schema( { timestamps: true } ); +auditLogSchema.index({ operation: 'text', parentType: 'text', ownerType: 'text' }); + // Add virtual id getter auditLogSchema.virtual('id').get(function () { return this._id; diff --git a/src/database/schemas/management/courier.schema.js b/src/database/schemas/management/courier.schema.js index 50c473e..2d68188 100644 --- a/src/database/schemas/management/courier.schema.js +++ b/src/database/schemas/management/courier.schema.js @@ -14,6 +14,8 @@ const courierSchema = new mongoose.Schema( { timestamps: true } ); +courierSchema.index({ name: 'text', website: 'text', email: 'text', phone: 'text', contact: 'text', country: 'text' }); + courierSchema.virtual('id').get(function () { return this._id; }); diff --git a/src/database/schemas/management/courierservice.schema.js b/src/database/schemas/management/courierservice.schema.js index 2d264e8..db5690c 100644 --- a/src/database/schemas/management/courierservice.schema.js +++ b/src/database/schemas/management/courierservice.schema.js @@ -15,6 +15,8 @@ const courierServiceSchema = new mongoose.Schema( { timestamps: true } ); +courierServiceSchema.index({ name: 'text', website: 'text' }); + courierServiceSchema.virtual('id').get(function () { return this._id; }); diff --git a/src/database/schemas/management/documentjob.schema.js b/src/database/schemas/management/documentjob.schema.js index aba8135..2e0a637 100644 --- a/src/database/schemas/management/documentjob.schema.js +++ b/src/database/schemas/management/documentjob.schema.js @@ -39,6 +39,8 @@ const documentJobSchema = new Schema( { timestamps: true } ); +documentJobSchema.index({ name: 'text', objectType: 'text' }); + // Add virtual id getter documentJobSchema.virtual('id').get(function () { return this._id; diff --git a/src/database/schemas/management/documentprinter.schema.js b/src/database/schemas/management/documentprinter.schema.js index f3bbf6b..09d9be0 100644 --- a/src/database/schemas/management/documentprinter.schema.js +++ b/src/database/schemas/management/documentprinter.schema.js @@ -38,6 +38,8 @@ const documentPrinterSchema = new Schema( { timestamps: true } ); +documentPrinterSchema.index({ name: 'text', tags: 'text' }); + // Add virtual id getter documentPrinterSchema.virtual('id').get(function () { return this._id; diff --git a/src/database/schemas/management/documentsize.schema.js b/src/database/schemas/management/documentsize.schema.js index 9ffd80b..b1caeb5 100644 --- a/src/database/schemas/management/documentsize.schema.js +++ b/src/database/schemas/management/documentsize.schema.js @@ -29,6 +29,8 @@ const documentSizeSchema = new Schema( { timestamps: true } ); +documentSizeSchema.index({ name: 'text' }); + // Add virtual id getter documentSizeSchema.virtual('id').get(function () { return this._id; diff --git a/src/database/schemas/management/documenttemplate.schema.js b/src/database/schemas/management/documenttemplate.schema.js index 042e37b..b3fabe0 100644 --- a/src/database/schemas/management/documenttemplate.schema.js +++ b/src/database/schemas/management/documenttemplate.schema.js @@ -52,6 +52,8 @@ const documentTemplateSchema = new Schema( { timestamps: true } ); +documentTemplateSchema.index({ name: 'text', tags: 'text', objectType: 'text' }); + // Add virtual id getter documentTemplateSchema.virtual('id').get(function () { return this._id; diff --git a/src/database/schemas/management/filament.schema.js b/src/database/schemas/management/filament.schema.js index 1642abc..720ccc4 100644 --- a/src/database/schemas/management/filament.schema.js +++ b/src/database/schemas/management/filament.schema.js @@ -18,6 +18,8 @@ const filamentSchema = new mongoose.Schema({ costWithTax: { type: Number, required: false }, }, { timestamps: true }); +filamentSchema.index({ name: 'text', barcode: 'text', url: 'text' }); + filamentSchema.virtual('id').get(function () { return this._id; }); diff --git a/src/database/schemas/management/filamentsku.schema.js b/src/database/schemas/management/filamentsku.schema.js index 3d4caa5..97e995d 100644 --- a/src/database/schemas/management/filamentsku.schema.js +++ b/src/database/schemas/management/filamentsku.schema.js @@ -19,6 +19,8 @@ const filamentSkuSchema = new Schema( { timestamps: true } ); +filamentSkuSchema.index({ name: 'text', barcode: 'text', description: 'text', color: 'text' }); + // Add virtual id getter filamentSkuSchema.virtual('id').get(function () { return this._id; diff --git a/src/database/schemas/management/file.schema.js b/src/database/schemas/management/file.schema.js index 8e21c90..058b607 100644 --- a/src/database/schemas/management/file.schema.js +++ b/src/database/schemas/management/file.schema.js @@ -13,6 +13,8 @@ const fileSchema = new mongoose.Schema( { timestamps: true } ); +fileSchema.index({ name: 'text', type: 'text', extension: 'text' }); + fileSchema.virtual('id').get(function () { return this._id; }); diff --git a/src/database/schemas/management/host.schema.js b/src/database/schemas/management/host.schema.js index fa26f13..2c29715 100644 --- a/src/database/schemas/management/host.schema.js +++ b/src/database/schemas/management/host.schema.js @@ -63,6 +63,8 @@ const hostSchema = new mongoose.Schema( { timestamps: true } ); +hostSchema.index({ name: 'text', tags: 'text' }); + hostSchema.virtual('id').get(function () { return this._id; }); diff --git a/src/database/schemas/management/material.schema.js b/src/database/schemas/management/material.schema.js index 1cd6b3a..c24d44b 100644 --- a/src/database/schemas/management/material.schema.js +++ b/src/database/schemas/management/material.schema.js @@ -11,6 +11,8 @@ const materialSchema = new mongoose.Schema( { timestamps: true } ); +materialSchema.index({ name: 'text', url: 'text', tags: 'text' }); + materialSchema.virtual('id').get(function () { return this._id; }); diff --git a/src/database/schemas/management/notetype.schema.js b/src/database/schemas/management/notetype.schema.js index b70312b..c7c76d5 100644 --- a/src/database/schemas/management/notetype.schema.js +++ b/src/database/schemas/management/notetype.schema.js @@ -23,6 +23,8 @@ const noteTypeSchema = new Schema( { timestamps: true } ); +noteTypeSchema.index({ name: 'text' }); + // Add virtual id getter noteTypeSchema.virtual('id').get(function () { return this._id; diff --git a/src/database/schemas/management/part.schema.js b/src/database/schemas/management/part.schema.js index da4e5da..682f6e7 100644 --- a/src/database/schemas/management/part.schema.js +++ b/src/database/schemas/management/part.schema.js @@ -21,6 +21,8 @@ const partSchema = new Schema( { timestamps: true } ); +partSchema.index({ name: 'text' }); + // Add virtual id getter partSchema.virtual('id').get(function () { return this._id; diff --git a/src/database/schemas/management/partsku.schema.js b/src/database/schemas/management/partsku.schema.js index 7c8d056..02c443e 100644 --- a/src/database/schemas/management/partsku.schema.js +++ b/src/database/schemas/management/partsku.schema.js @@ -25,6 +25,8 @@ const partSkuSchema = new Schema( { timestamps: true } ); +partSkuSchema.index({ name: 'text', barcode: 'text', description: 'text' }); + // Add virtual id getter partSkuSchema.virtual('id').get(function () { return this._id; diff --git a/src/database/schemas/management/product.schema.js b/src/database/schemas/management/product.schema.js index c3640b4..09e9813 100644 --- a/src/database/schemas/management/product.schema.js +++ b/src/database/schemas/management/product.schema.js @@ -23,6 +23,9 @@ const productSchema = new Schema( }, { timestamps: true } ); + +productSchema.index({ name: 'text', tags: 'text', version: 'text' }); + // Add virtual id getter productSchema.virtual('id').get(function () { return this._id; diff --git a/src/database/schemas/management/productcategory.schema.js b/src/database/schemas/management/productcategory.schema.js index d01ce07..5d735f6 100644 --- a/src/database/schemas/management/productcategory.schema.js +++ b/src/database/schemas/management/productcategory.schema.js @@ -9,6 +9,8 @@ const productCategorySchema = new mongoose.Schema( { timestamps: true } ); +productCategorySchema.index({ name: 'text' }); + productCategorySchema.virtual('id').get(function () { return this._id; }); diff --git a/src/database/schemas/management/productsku.schema.js b/src/database/schemas/management/productsku.schema.js index 9a8e24a..43db50b 100644 --- a/src/database/schemas/management/productsku.schema.js +++ b/src/database/schemas/management/productsku.schema.js @@ -32,6 +32,8 @@ const productSkuSchema = new Schema( { timestamps: true } ); +productSkuSchema.index({ name: 'text', barcode: 'text', description: 'text' }); + // Add virtual id getter productSkuSchema.virtual('id').get(function () { return this._id; diff --git a/src/database/schemas/management/taxrate.schema.js b/src/database/schemas/management/taxrate.schema.js index 898c3ca..074eb63 100644 --- a/src/database/schemas/management/taxrate.schema.js +++ b/src/database/schemas/management/taxrate.schema.js @@ -16,6 +16,8 @@ const taxRateSchema = new mongoose.Schema( { timestamps: true } ); +taxRateSchema.index({ name: 'text', description: 'text', country: 'text' }); + taxRateSchema.virtual('id').get(function () { return this._id; }); diff --git a/src/database/schemas/management/user.schema.js b/src/database/schemas/management/user.schema.js index c7b4d77..283fecb 100644 --- a/src/database/schemas/management/user.schema.js +++ b/src/database/schemas/management/user.schema.js @@ -15,6 +15,8 @@ const userSchema = new mongoose.Schema( { timestamps: true } ); +userSchema.index({ username: 'text', name: 'text', firstName: 'text', lastName: 'text', email: 'text' }); + userSchema.virtual('id').get(function () { return this._id; }); diff --git a/src/database/schemas/management/vendor.schema.js b/src/database/schemas/management/vendor.schema.js index 98ec413..8dfe6d3 100644 --- a/src/database/schemas/management/vendor.schema.js +++ b/src/database/schemas/management/vendor.schema.js @@ -26,6 +26,8 @@ const vendorSchema = new mongoose.Schema( { timestamps: true } ); +vendorSchema.index({ name: 'text', website: 'text', email: 'text', phone: 'text', contact: 'text', country: 'text' }); + vendorSchema.virtual('id').get(function () { return this._id; }); diff --git a/src/database/schemas/production/gcodefile.schema.js b/src/database/schemas/production/gcodefile.schema.js index acd137b..a30eac2 100644 --- a/src/database/schemas/production/gcodefile.schema.js +++ b/src/database/schemas/production/gcodefile.schema.js @@ -30,7 +30,7 @@ gcodeFileSchema.pre('validate', async function () { } }); -gcodeFileSchema.index({ name: 'text', brand: 'text' }); +gcodeFileSchema.index({ name: 'text', gcodeFileName: 'text' }); gcodeFileSchema.virtual('id').get(function () { return this._id; diff --git a/src/database/schemas/production/job.schema.js b/src/database/schemas/production/job.schema.js index 2163e29..07ea0d2 100644 --- a/src/database/schemas/production/job.schema.js +++ b/src/database/schemas/production/job.schema.js @@ -32,6 +32,8 @@ const jobSchema = new mongoose.Schema( { timestamps: true } ); +jobSchema.index({ 'state.type': 'text' }); + const rollupConfigs = [ { name: 'queued', diff --git a/src/database/schemas/production/printer.schema.js b/src/database/schemas/production/printer.schema.js index e54e1ef..35b8398 100644 --- a/src/database/schemas/production/printer.schema.js +++ b/src/database/schemas/production/printer.schema.js @@ -57,6 +57,8 @@ const printerSchema = new Schema( { timestamps: true } ); +printerSchema.index({ name: 'text', tags: 'text', firmware: 'text' }); + const rollupConfigs = [ { name: 'standby', diff --git a/src/database/schemas/production/subjob.schema.js b/src/database/schemas/production/subjob.schema.js index adbae06..02d2522 100644 --- a/src/database/schemas/production/subjob.schema.js +++ b/src/database/schemas/production/subjob.schema.js @@ -43,6 +43,8 @@ const subJobSchema = new mongoose.Schema({ finishedAt: { required: false, type: Date, default: null }, }); +subJobSchema.index({ moonrakerJobId: 'text', 'state.type': 'text' }); + subJobSchema.virtual('id').get(function () { return this._id; }); diff --git a/src/database/schemas/sales/client.schema.js b/src/database/schemas/sales/client.schema.js index 005c820..52dbb62 100644 --- a/src/database/schemas/sales/client.schema.js +++ b/src/database/schemas/sales/client.schema.js @@ -26,6 +26,8 @@ const clientSchema = new mongoose.Schema( { timestamps: true } ); +clientSchema.index({ name: 'text', email: 'text', phone: 'text', country: 'text', tags: 'text' }); + clientSchema.virtual('id').get(function () { return this._id; }); diff --git a/src/database/schemas/sales/listing.schema.js b/src/database/schemas/sales/listing.schema.js index 20f14fd..20ecc48 100644 --- a/src/database/schemas/sales/listing.schema.js +++ b/src/database/schemas/sales/listing.schema.js @@ -26,6 +26,8 @@ const listingSchema = new Schema( { timestamps: true } ); +listingSchema.index({ title: 'text', url: 'text' }); + listingSchema.virtual('id').get(function () { return this._id; }); diff --git a/src/database/schemas/sales/listingvarient.schema.js b/src/database/schemas/sales/listingvarient.schema.js index 12cc007..ffec816 100644 --- a/src/database/schemas/sales/listingvarient.schema.js +++ b/src/database/schemas/sales/listingvarient.schema.js @@ -25,6 +25,8 @@ const listingVarientSchema = new Schema( { timestamps: true } ); +listingVarientSchema.index({ currency: 'text', 'state.type': 'text' }); + listingVarientSchema.virtual('id').get(function () { return this._id; }); diff --git a/src/database/schemas/sales/marketplace.schema.js b/src/database/schemas/sales/marketplace.schema.js index 06caf37..531a8a8 100644 --- a/src/database/schemas/sales/marketplace.schema.js +++ b/src/database/schemas/sales/marketplace.schema.js @@ -28,6 +28,8 @@ const marketplaceSchema = new mongoose.Schema( { timestamps: true } ); +marketplaceSchema.index({ name: 'text', provider: 'text' }); + marketplaceSchema.virtual('id').get(function () { return this._id; }); diff --git a/src/database/schemas/sales/salesorder.schema.js b/src/database/schemas/sales/salesorder.schema.js index 6a2ade7..8db9258 100644 --- a/src/database/schemas/sales/salesorder.schema.js +++ b/src/database/schemas/sales/salesorder.schema.js @@ -30,6 +30,8 @@ const salesOrderSchema = new Schema( { timestamps: true } ); +salesOrderSchema.index({ 'state.type': 'text' }); + const rollupConfigs = [ { name: 'draft',