@@ -8,8 +8,7 @@ import type {
|
||||
} from "@hereconnect/types";
|
||||
import { PushSubscription } from "web-push";
|
||||
|
||||
export interface ServiceDoc {
|
||||
_id: string;
|
||||
export interface ServiceSeqTrackerDocument {
|
||||
lastSeq: string | number;
|
||||
}
|
||||
|
||||
@@ -35,14 +34,15 @@ export const webPushSubscriptionsDb = new PouchDB<
|
||||
skip_setup: true,
|
||||
});
|
||||
|
||||
export const { messagesDb, serviceDb } = (() => {
|
||||
export const { messagesDb, serviceSeqTrackerDb } = (() => {
|
||||
const messagesDB = new PouchDB(messagesDbUrl, {
|
||||
skip_setup: true,
|
||||
});
|
||||
|
||||
return {
|
||||
messagesDb: messagesDB as PouchDB.Database<MessageDocument>,
|
||||
serviceDb: messagesDB as PouchDB.Database<ServiceDoc>,
|
||||
serviceSeqTrackerDb:
|
||||
messagesDB as PouchDB.Database<ServiceSeqTrackerDocument>,
|
||||
} as const;
|
||||
})();
|
||||
|
||||
@@ -52,3 +52,33 @@ export const userChatSettingsDb = new PouchDB<UserChatSettingsDocument>(
|
||||
skip_setup: true,
|
||||
},
|
||||
);
|
||||
|
||||
export const checkDatabases = async () => {
|
||||
const entries = await Promise.all(
|
||||
Object.entries({
|
||||
serverSettingsDb,
|
||||
qrDb,
|
||||
webPushSubscriptionsDb,
|
||||
messagesDb,
|
||||
userChatSettingsDb,
|
||||
} as const).map(
|
||||
async ([name, db]): Promise<
|
||||
[string, Awaited<ReturnType<typeof db.info>>]
|
||||
> => {
|
||||
const info = await db.info();
|
||||
return [name, info];
|
||||
},
|
||||
),
|
||||
);
|
||||
|
||||
for (const [name, info] of entries) {
|
||||
if ("error" in info && "reason" in info) {
|
||||
throw new Error(`[${name}] ${info.error}: ${info.reason}`);
|
||||
}
|
||||
if ("error" in info) {
|
||||
throw new Error(`[${name}] ${info.error}`);
|
||||
}
|
||||
}
|
||||
|
||||
return Object.fromEntries(entries);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user