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 | 41x 41x 41x 41x 5x 5x 5x 5x 4x 4x 3x 3x 7x | import { DocumentStore } from '../types'; import { EMPTY, Observable } 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); } } |