UNPKG

@magnetarjs/plugin-vue3

Version:
25 lines (24 loc) 1.07 kB
import { objGetOrSet } from 'getorset-anything'; import { isFullString, isNumber } from 'is-what'; export function insertActionFactory(data, vue3StoreOptions, 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']}` : vue3StoreOptions.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; }; }