diff --git a/packages/pouchorm/src/plugin.js b/packages/pouchorm/src/plugin.js index 896ab08..624c11d 100644 --- a/packages/pouchorm/src/plugin.js +++ b/packages/pouchorm/src/plugin.js @@ -56,8 +56,7 @@ export function PouchORM(PouchDB) { async function _delete(id) { try { const doc = await find(id); - doc._deleted = true; - await _db.put(doc); + await doc.delete(); } catch (e) { if (e.status !== 404) { throw e; @@ -83,17 +82,31 @@ export function PouchORM(PouchDB) { _baseSelector: { value: _baseSelector } }); - Object.defineProperties(cls, { + const methods = { getOrCreate: { value: getOrCreate }, find: { value: find }, index: { value: _index }, delete: { value: _delete }, - subscribe: { value: watch }, - db: { value: _db }, - name: { value: name }, - prefix: { value: prefix }, - selector: { value: _baseSelector } - }); + subscribe: { value: watch } + }; + + Object.defineProperties( + cls, + Object.assign( + { + db: { value: _db }, + name: { value: name }, + prefix: { value: prefix }, + selector: { value: _baseSelector } + }, + Object.entries(methods) + .filter(([name, obj]) => cls[name] === undefined) + .reduce((acc, [name, obj]) => { + acc[name] = obj; + return acc; + }, {}) + ) + ); return cls; };