38 lines
843 B
JavaScript
38 lines
843 B
JavaScript
import core from 'pouchdb-core';
|
|
import idb from 'pouchdb-adapter-idb';
|
|
import http from 'pouchdb-adapter-http';
|
|
import replication from 'pouchdb-replication';
|
|
import find from 'pouchdb-find';
|
|
|
|
const PouchDB = core
|
|
.plugin(idb)
|
|
.plugin(http)
|
|
.plugin(replication)
|
|
.plugin(find);
|
|
|
|
export function generateAttachmentUrl(dbName, docId, attachmentKey) {
|
|
return `/_doc_attachments/${dbName}/${docId}/${attachmentKey}`;
|
|
}
|
|
|
|
const dbs = new Map();
|
|
export function getDatabase(name = 'gallery') {
|
|
if (!dbs.has(name)) {
|
|
dbs.set(name, new PouchDB(name));
|
|
}
|
|
return dbs.get(name);
|
|
}
|
|
|
|
export async function getOrCreate(doc) {
|
|
const db = getDatabase();
|
|
try {
|
|
const results = await db.get(doc._id);
|
|
return [results, false];
|
|
} catch (e) {
|
|
if (e.status === 404) {
|
|
const results = db.put(doc);
|
|
return [results, true];
|
|
}
|
|
throw e;
|
|
}
|
|
}
|