Refactor model entry retrieval in database utilities
All checks were successful
farmcontrol/farmcontrol-ws/pipeline/head This commit looks good
All checks were successful
farmcontrol/farmcontrol-ws/pipeline/head This commit looks good
- Changed the getModelEntryByType function to use dynamic import for models, caching the result to improve performance. - Updated the editNotification function to await the model entry retrieval, ensuring proper asynchronous handling of model data.
This commit is contained in:
parent
c36765cc47
commit
7e8879164a
@ -2,7 +2,6 @@ import { ObjectId } from 'mongodb';
|
|||||||
import { auditLogModel } from './schemas/management/auditlog.schema.js';
|
import { auditLogModel } from './schemas/management/auditlog.schema.js';
|
||||||
import { notificationModel } from './schemas/misc/notification.schema.js';
|
import { notificationModel } from './schemas/misc/notification.schema.js';
|
||||||
import { userNotifierModel } from './schemas/misc/usernotifier.schema.js';
|
import { userNotifierModel } from './schemas/misc/usernotifier.schema.js';
|
||||||
import { models } from './schemas/models.js';
|
|
||||||
import { natsServer } from './nats.js';
|
import { natsServer } from './nats.js';
|
||||||
|
|
||||||
import { customAlphabet } from 'nanoid';
|
import { customAlphabet } from 'nanoid';
|
||||||
@ -21,8 +20,13 @@ function omitSensitive(obj) {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getModelEntryByType(parentType) {
|
let modelsCache = null;
|
||||||
return Object.values(models).find(
|
|
||||||
|
async function getModelEntryByType(parentType) {
|
||||||
|
if (!modelsCache) {
|
||||||
|
modelsCache = (await import('./schemas/models.js')).models;
|
||||||
|
}
|
||||||
|
return Object.values(modelsCache).find(
|
||||||
entry => entry.type === parentType || entry.model?.modelName === parentType
|
entry => entry.type === parentType || entry.model?.modelName === parentType
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -496,7 +500,7 @@ async function editNotification(
|
|||||||
) {
|
) {
|
||||||
if (NOTIFICATION_EXCLUDED_MODELS.includes(parentType)) return;
|
if (NOTIFICATION_EXCLUDED_MODELS.includes(parentType)) return;
|
||||||
|
|
||||||
const modelEntry = getModelEntryByType(parentType);
|
const modelEntry = await getModelEntryByType(parentType);
|
||||||
const user = notificationUserFromOwner(owner, ownerType);
|
const user = notificationUserFromOwner(owner, ownerType);
|
||||||
const objectName =
|
const objectName =
|
||||||
oldValue?.name ?? newValue?.name ?? modelEntry?.label ?? parentType;
|
oldValue?.name ?? newValue?.name ?? modelEntry?.label ?? parentType;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user