Implemented a merge utility function for object updates in database.js to handle array merging correctly, enhancing cache update logic for improved data integrity.
All checks were successful
farmcontrol/farmcontrol-api/pipeline/head This commit looks good
All checks were successful
farmcontrol/farmcontrol-api/pipeline/head This commit looks good
This commit is contained in:
parent
c710f46a6f
commit
8423db2858
@ -37,6 +37,13 @@ cacheLogger.level = config.server.logLevel;
|
|||||||
|
|
||||||
const CACHE_TTL_SECONDS = parseInt(config.database.redis.cacheTtl || '30', 10);
|
const CACHE_TTL_SECONDS = parseInt(config.database.redis.cacheTtl || '30', 10);
|
||||||
|
|
||||||
|
const mergeObjectUpdates = (target, source) =>
|
||||||
|
_.mergeWith(target, source, (objValue, srcValue) => {
|
||||||
|
if (Array.isArray(objValue) || Array.isArray(srcValue)) {
|
||||||
|
return srcValue;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
export const retrieveObjectCache = async ({ model, id, populate = [] }) => {
|
export const retrieveObjectCache = async ({ model, id, populate = [] }) => {
|
||||||
if (!model || !id) return undefined;
|
if (!model || !id) return undefined;
|
||||||
|
|
||||||
@ -79,13 +86,13 @@ export const updateObjectCache = async ({ model, id, object, populate = [] }) =>
|
|||||||
for (const key of matchingKeys) {
|
for (const key of matchingKeys) {
|
||||||
logger.trace('Updating object cache:', key);
|
logger.trace('Updating object cache:', key);
|
||||||
const cachedObject = (await redisServer.getKey(key)) || {};
|
const cachedObject = (await redisServer.getKey(key)) || {};
|
||||||
const mergedObject = _.merge(cachedObject, object);
|
const mergedObject = mergeObjectUpdates(cachedObject, object);
|
||||||
await redisServer.setKey(key, mergedObject, CACHE_TTL_SECONDS);
|
await redisServer.setKey(key, mergedObject, CACHE_TTL_SECONDS);
|
||||||
mergedObjects.push(mergedObject);
|
mergedObjects.push(mergedObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
const cacheObject = (await redisServer.getKey(cacheKey)) || {};
|
const cacheObject = (await redisServer.getKey(cacheKey)) || {};
|
||||||
const mergedObject = _.merge(cacheObject, object);
|
const mergedObject = mergeObjectUpdates(cacheObject, object);
|
||||||
await redisServer.setKey(cacheKey, mergedObject, CACHE_TTL_SECONDS);
|
await redisServer.setKey(cacheKey, mergedObject, CACHE_TTL_SECONDS);
|
||||||
|
|
||||||
cacheLogger.trace('Updated object cache:', {
|
cacheLogger.trace('Updated object cache:', {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user