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