button zum prüfen
This commit is contained in:
66
services/storeStatusCache.js
Normal file
66
services/storeStatusCache.js
Normal file
@@ -0,0 +1,66 @@
|
||||
const { readStoreStatus, writeStoreStatus } = require('./storeStatusStore');
|
||||
|
||||
const storeStatusCache = new Map();
|
||||
|
||||
function normalizeStatusEntry(entry = {}) {
|
||||
const status = Number(entry.teamSearchStatus);
|
||||
const fetchedAt = Number(entry.fetchedAt) || 0;
|
||||
return {
|
||||
teamSearchStatus: Number.isFinite(status) ? status : null,
|
||||
fetchedAt
|
||||
};
|
||||
}
|
||||
|
||||
(function bootstrapStoreStatusCache() {
|
||||
try {
|
||||
const cached = readStoreStatus();
|
||||
Object.entries(cached || {}).forEach(([storeId, entry]) => {
|
||||
if (!storeId) {
|
||||
return;
|
||||
}
|
||||
storeStatusCache.set(String(storeId), normalizeStatusEntry(entry));
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('[STORE-STATUS] Bootstrap fehlgeschlagen:', error.message);
|
||||
}
|
||||
})();
|
||||
|
||||
function getStoreStatus(storeId) {
|
||||
if (!storeId) {
|
||||
return null;
|
||||
}
|
||||
return storeStatusCache.get(String(storeId)) || null;
|
||||
}
|
||||
|
||||
function setStoreStatus(storeId, data = {}) {
|
||||
if (!storeId) {
|
||||
return null;
|
||||
}
|
||||
const normalized = normalizeStatusEntry(data);
|
||||
storeStatusCache.set(String(storeId), normalized);
|
||||
return normalized;
|
||||
}
|
||||
|
||||
function bulkSetStoreStatus(entries = []) {
|
||||
entries.forEach((entry) => {
|
||||
if (!entry || !entry.storeId) {
|
||||
return;
|
||||
}
|
||||
setStoreStatus(entry.storeId, entry);
|
||||
});
|
||||
}
|
||||
|
||||
function persistStoreStatusCache() {
|
||||
const payload = {};
|
||||
storeStatusCache.forEach((value, key) => {
|
||||
payload[key] = value;
|
||||
});
|
||||
writeStoreStatus(payload);
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
getStoreStatus,
|
||||
setStoreStatus,
|
||||
bulkSetStoreStatus,
|
||||
persistStoreStatusCache
|
||||
};
|
||||
Reference in New Issue
Block a user