27 lines
1.1 KiB
JavaScript
27 lines
1.1 KiB
JavaScript
import { openDB } from "idb";
|
|
|
|
const DBNAME = 'IM_DB';
|
|
const STORE_NAME = 'messages';
|
|
const CONVERSARION_STORE_NAME = 'conversations';
|
|
const CONTACT_STORE_NAME = 'contacts';
|
|
|
|
export const dbPromise = openDB(DBNAME, 5, {
|
|
upgrade(db) {
|
|
if (!db.objectStoreNames.contains(STORE_NAME)) {
|
|
const store = db.createObjectStore(STORE_NAME, { keyPath: 'msgId' });
|
|
store.createIndex('by-sessionId', 'sessionId');
|
|
store.createIndex('by-time', 'timeStamp');
|
|
store.createIndex('by-session-time', ['sessionId', 'timeStamp']);
|
|
}
|
|
if (!db.objectStoreNames.contains(CONVERSARION_STORE_NAME)) {
|
|
const store = db.createObjectStore(CONVERSARION_STORE_NAME, { keyPath: 'id' });
|
|
store.createIndex('by-id', 'id');
|
|
}
|
|
if (!db.objectStoreNames.contains(CONTACT_STORE_NAME)) {
|
|
const store = db.createObjectStore(CONTACT_STORE_NAME, { keyPath: 'id' });
|
|
store.createIndex('by-id', 'id');
|
|
store.createIndex('by-username', 'username');
|
|
store.createIndex('by-friendId', 'friendId', { unique: true });
|
|
}
|
|
}
|
|
}) |