Adding documents origin.
This commit is contained in:
parent
9dacad9af3
commit
cbd5eb1e04
|
@ -26,13 +26,12 @@ export const watchDbLegacy = async () => {
|
||||||
|
|
||||||
const [status, setStatus] = createSignal<any>({});
|
const [status, setStatus] = createSignal<any>({});
|
||||||
const [syncState, setSyncState] = createSignal<any>({});
|
const [syncState, setSyncState] = createSignal<any>({});
|
||||||
|
const [remoteUrl, setRemoteUrl] = createSignal<string>();
|
||||||
|
|
||||||
const updateStatus = async () => {
|
const updateStatus = async () => {
|
||||||
const dbInfo = await db.info();
|
const dbInfo = await db.info();
|
||||||
const localDbInfo = await localDb.info();
|
const localDbInfo = await localDb.info();
|
||||||
const remoteDbInfo = remoteDb
|
const remoteDbInfo = remoteDb ? await remoteDb.info() : undefined;
|
||||||
? await remoteDb.info()
|
|
||||||
: undefined;
|
|
||||||
const tasks = PouchDB.activeTasks.list();
|
const tasks = PouchDB.activeTasks.list();
|
||||||
const newStatus = {
|
const newStatus = {
|
||||||
...status(),
|
...status(),
|
||||||
|
@ -107,6 +106,59 @@ export const watchDbLegacy = async () => {
|
||||||
|
|
||||||
const timerId = setInterval(updateStatus, 15000);
|
const timerId = setInterval(updateStatus, 15000);
|
||||||
|
|
||||||
|
const findDocumentsWithoutOrigin = async () => {
|
||||||
|
const allDocs = await db.allDocs({ include_docs: true });
|
||||||
|
return allDocs.rows
|
||||||
|
.filter((row: any) => !row.doc.origin)
|
||||||
|
.map((row: any) => row.doc._id);
|
||||||
|
};
|
||||||
|
|
||||||
|
createEffect(async () => {
|
||||||
|
if (!!state().remoteUrl && remoteUrl() !== state().remoteUrl) {
|
||||||
|
setRemoteUrl(state().remoteUrl);
|
||||||
|
// Check documents and update without origin
|
||||||
|
const documentsWithoutOrigin = await findDocumentsWithoutOrigin();
|
||||||
|
console.log({
|
||||||
|
caller: 'watchDbLegacy / addOrigin',
|
||||||
|
remoteUrl: remoteUrl(),
|
||||||
|
nbDocumentsWithoutOrigin: documentsWithoutOrigin.length,
|
||||||
|
});
|
||||||
|
for (const docId of documentsWithoutOrigin) {
|
||||||
|
while (true) {
|
||||||
|
await sleep(100);
|
||||||
|
const doc = await db.get(docId);
|
||||||
|
console.log({
|
||||||
|
caller: 'watchDbLegacy / addOrigin',
|
||||||
|
remoteUrl: remoteUrl(),
|
||||||
|
docId,
|
||||||
|
doc,
|
||||||
|
});
|
||||||
|
try {
|
||||||
|
db.put({ ...doc, origin: remoteUrl() });
|
||||||
|
break;
|
||||||
|
} catch (error) {
|
||||||
|
if (error.name === 'conflict') {
|
||||||
|
console.log({
|
||||||
|
caller: 'watchDbLegacy / addOrigin',
|
||||||
|
docId,
|
||||||
|
doc,
|
||||||
|
error,
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
console.error({
|
||||||
|
caller: 'watchDbLegacy / addOrigin',
|
||||||
|
docId,
|
||||||
|
doc,
|
||||||
|
error,
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// db.compact();
|
// db.compact();
|
||||||
const openIDb = (name: string) =>
|
const openIDb = (name: string) =>
|
||||||
new Promise((resolve, reject) => {
|
new Promise((resolve, reject) => {
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import { cloneDeep } from 'lodash';
|
import { cloneDeep } from 'lodash';
|
||||||
|
import { state } from '../db-admin/health-legacy';
|
||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
var localDb: any;
|
var localDb: any;
|
||||||
|
@ -25,6 +26,8 @@ export const put = async (
|
||||||
_id,
|
_id,
|
||||||
_rev: current._rev,
|
_rev: current._rev,
|
||||||
type,
|
type,
|
||||||
|
shared: current.shared,
|
||||||
|
origin: current.origin ?? state().remoteUrl,
|
||||||
doc: update(current.doc),
|
doc: update(current.doc),
|
||||||
};
|
};
|
||||||
await targetDb.put(putDoc);
|
await targetDb.put(putDoc);
|
||||||
|
|
Loading…
Reference in New Issue