@rws-framework/client
Version:
This package provides the core client-side framework for Realtime Web Suit (RWS), enabling modular, asynchronous web components, state management, and integration with backend services. It is located in `.dev/client`.
49 lines (41 loc) • 1.68 kB
text/typescript
import RWSService from './_service';
class IndexedDBService extends RWSService {
static _DEFAULT: boolean = true;
openDB(dbName: string, storeName: string): Promise<IDBDatabase> {
return new Promise((resolve, reject) => {
const request = indexedDB.open(dbName, 1);
request.onupgradeneeded = () => {
const db = request.result;
if (!db.objectStoreNames.contains(storeName)) {
db.createObjectStore(storeName);
}
};
request.onsuccess = () => resolve(request.result);
request.onerror = () => reject(request.error);
});
}
getFromDB(db: IDBDatabase, store: string, key: string): Promise<{
css: string,
timestamp: number
} | null> {
return new Promise((resolve, reject) => {
const tx = db.transaction(store, 'readonly');
const request = tx.objectStore(store).get(key);
request.onsuccess = () => resolve(request.result ?? null);
request.onerror = () => reject(request.error);
});
}
saveToDB(db: IDBDatabase, store: string, key: string, value: {
css: string,
timestamp: number
}): Promise<void> {
return new Promise((resolve, reject) => {
const tx = db.transaction(store, 'readwrite');
const request = tx.objectStore(store).put(value, key);
request.onsuccess = () => resolve();
request.onerror = () => reject(request.error);
});
}
}
export default IndexedDBService.getSingleton();
export { IndexedDBService as IndexedDBServiceInstance };