Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | 43x 43x 43x 43x 6x 6x 6x 6x 5x 5x 3x 3x 8x 2x 2x 2x 2x 1x 1x | import { DocumentStore } from '../types'; import { EMPTY, Observable, from } from 'rxjs'; import { Logger } from 'ts-log'; import { PouchDbStore } from './PouchDbStore'; import { sanitizePouchDbDoc } from './util'; /** PouchDB implementation that uses a shared db for multiple PouchDbDocumentStores */ export class PouchDbDocumentStore<T extends {}> extends PouchDbStore<T> implements DocumentStore<T> { readonly #docId: string; /** * @param dbName PouchDB database name * @param docId unique document id within the db * @param logger will silently swallow the errors if not set */ constructor(dbName: string, docId: string, logger: Logger) { super(dbName, logger); this.#docId = docId; } get(): Observable<T> { if (this.destroyed) return EMPTY; return new Observable((observer) => { this.db .get(this.#docId) .then((doc) => { observer.next(sanitizePouchDbDoc(doc)); observer.complete(); }) .catch(observer.complete.bind(observer)); }); } set(doc: T): Observable<void> { return this.forcePut(this.#docId, doc); } delete(): Observable<void> { Iif (this.destroyed) return EMPTY; return from( (async () => { const _rev = await this.getRev(this.#docId); if (!_rev) { // assuming already deleted return; } await this.db.remove({ _id: this.#docId, _rev }); })() ); } } |