diff --git a/packages/gallery/src/services/db.js b/packages/gallery/src/services/db.js index 721567d..94a749a 100644 --- a/packages/gallery/src/services/db.js +++ b/packages/gallery/src/services/db.js @@ -19,7 +19,7 @@ export const PouchDB = core export class TypeSpec { constructor(props) { this._populateId(props); - Object.assign(this, props); + Object.assign(this, props, { type: this._prefix }); } static getSequence(doc) { @@ -88,6 +88,9 @@ export function PouchORM(PouchDB) { PouchDB.registerType = (name, cls, db) => { const prefix = name.toLowerCase(); const _db = db || PouchDB(prefix); + const _baseSelector = Object.freeze({ + _id: { $gt: `${prefix}_0`, $lt: `${prefix}_\ufff0` } + }); if (!cls.hasOwnProperty('validate')) { warn(`${cls.name} has no validation.`); @@ -104,7 +107,7 @@ export function PouchORM(PouchDB) { const selector = Object.assign( isSelector && idOrSelector._deleted ? { _deleted: true } : { _deleted: { exists: false } }, - isSelector ? idOrSelector : { _id: { $gt: `${prefix}_0`, $lt: `${prefix}_\ufff0` } } + isSelector ? idOrSelector : _baseSelector ); if (live) { return LiveArray(_db, idOrSelector, instantiate); @@ -141,7 +144,8 @@ export function PouchORM(PouchDB) { _name: { value: name }, _prefix: { value: prefix }, _db: { value: _db }, - _cls: { value: cls } + _cls: { value: cls }, + _baseSelector: { value: _baseSelector } }); Object.defineProperties(cls, { @@ -149,7 +153,8 @@ export function PouchORM(PouchDB) { find: { value: find }, delete: { value: _delete }, db: { value: _db }, - name: { value: name } + name: { value: name }, + selector: { value: _baseSelector } }); return cls;