@magnetarjs/plugin-vue3
Version:
Magnetar plugin vue3
25 lines (24 loc) • 1.07 kB
JavaScript
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;
};
}