UNPKG

@magnetarjs/plugin-simple-store

Version:
25 lines (24 loc) 1.07 kB
import { objGetOrSet } from 'getorset-anything'; import { isFullString, isNumber } from 'is-what'; export function insertActionFactory(data, simpleStoreOptions, makeBackup) { return function ({ payload, collectionPath, docId, pluginModuleConfig, }) { const collectionMap = objGetOrSet(data, collectionPath, () => new Map()); const _docId = docId || (isFullString(payload['id']) ? payload['id'] : isNumber(payload['id']) ? `${payload['id']}` : simpleStoreOptions.generateRandomId()); if (makeBackup) makeBackup(collectionPath, _docId); // reset the doc to be able to overwrite collectionMap.set(_docId, {}); const docDataToMutate = collectionMap.get(_docId); if (!docDataToMutate) throw new Error(`Document data not found for id: ${collectionPath} ${_docId}`); Object.entries(payload).forEach(([key, value]) => { docDataToMutate[key] = value; }); return _docId; }; }