74 lines
3.7 KiB
JavaScript
74 lines
3.7 KiB
JavaScript
import { jobModel } from '../../schemas/production/job.schema.js';
|
|
import { subJobModel } from '../../schemas/production/subjob.schema.js';
|
|
import { printerModel } from '../../schemas/production/printer.schema.js';
|
|
import { filamentModel } from '../../schemas/management/filament.schema.js';
|
|
import { gcodeFileModel } from '../../schemas/production/gcodefile.schema.js';
|
|
import { partModel } from '../../schemas/management/part.schema.js';
|
|
import { productModel } from '../../schemas/management/product.schema.js';
|
|
import { vendorModel } from '../../schemas/management/vendor.schema.js';
|
|
import { filamentStockModel } from '../../schemas/inventory/filamentstock.schema.js';
|
|
import { stockEventModel } from '../../schemas/inventory/stockevent.schema.js';
|
|
import { stockAuditModel } from '../../schemas/inventory/stockaudit.schema.js';
|
|
import { partStockModel } from '../../schemas/inventory/partstock.schema.js';
|
|
import { auditLogModel } from '../../schemas/management/auditlog.schema.js';
|
|
import { userModel } from '../../schemas/management/user.schema.js';
|
|
import { noteTypeModel } from '../../schemas/management/notetype.schema.js';
|
|
import { noteModel } from '../../schemas/misc/note.schema.js';
|
|
import { documentSizeModel } from '../../schemas/management/documentsize.schema.js';
|
|
import { documentTemplateModel } from '../../schemas/management/documenttemplate.schema.js';
|
|
import { hostModel } from '../../schemas/management/host.schema.js';
|
|
|
|
// Map prefixes to models and id fields
|
|
const PREFIX_MODEL_MAP = {
|
|
PRN: { model: printerModel, idField: '_id', type: 'printer' },
|
|
FIL: { model: filamentModel, idField: '_id', type: 'filament' },
|
|
GCF: { model: gcodeFileModel, idField: '_id', type: 'gcodeFile' },
|
|
JOB: { model: jobModel, idField: '_id', type: 'job' },
|
|
PRT: { model: partModel, idField: '_id', type: 'part' },
|
|
PRD: { model: productModel, idField: '_id', type: 'product' },
|
|
VEN: { model: vendorModel, idField: '_id', type: 'vendor' },
|
|
SJB: { model: subJobModel, idField: '_id', type: 'subJob' },
|
|
FLS: { model: filamentStockModel, idField: '_id', type: 'filamentStock' },
|
|
SEV: { model: stockEventModel, idField: '_id', type: 'stockEvent' },
|
|
SAU: { model: stockAuditModel, idField: '_id', type: 'stockAudit' },
|
|
PTS: { model: partStockModel, idField: '_id', type: 'partStock' },
|
|
PDS: { model: null, idField: '_id', type: 'productStock' }, // No productStockModel found
|
|
ADL: { model: auditLogModel, idField: '_id', type: 'auditLog' },
|
|
USR: { model: userModel, idField: '_id', type: 'user' },
|
|
NTY: { model: noteTypeModel, idField: '_id', type: 'noteType' },
|
|
NTE: { model: noteModel, idField: '_id', type: 'note' },
|
|
DSZ: { model: documentSizeModel, idField: '_id', type: 'documentSize' },
|
|
DTP: { model: documentTemplateModel, idField: '_id', type: 'documentTemplate' },
|
|
HST: { model: hostModel, idField: '_id', type: 'host' },
|
|
};
|
|
|
|
/**
|
|
* Get all models from the PREFIX_MODEL_MAP
|
|
* @returns {Array} Array of model entries with model, idField, and type properties
|
|
*/
|
|
export const getAllModels = () => {
|
|
return Object.values(PREFIX_MODEL_MAP);
|
|
};
|
|
|
|
/**
|
|
* Get a model by its type name
|
|
* @param {string} name - The type name of the model (e.g., 'printer', 'filament', 'job')
|
|
* @returns {Object|null} The model entry or null if not found
|
|
*/
|
|
export const getModelByName = (name) => {
|
|
const entry = Object.values(PREFIX_MODEL_MAP).find((entry) => entry.type === name);
|
|
return entry || null;
|
|
};
|
|
|
|
/**
|
|
* Get a model by its prefix
|
|
* @param {string} prefix - The prefix of the model (e.g., 'PRN', 'FIL', 'JOB')
|
|
* @returns {Object|null} The model entry or null if not found
|
|
*/
|
|
export const getModelByPrefix = (prefix) => {
|
|
return PREFIX_MODEL_MAP[prefix] || null;
|
|
};
|
|
|
|
// Export the PREFIX_MODEL_MAP for backward compatibility
|
|
export { PREFIX_MODEL_MAP };
|