| 1 |
const dbName = "smartPostShow"; |
| 2 |
const storeName = "postsStore"; |
| 3 |
|
| 4 |
// Open or create the IndexedDB |
| 5 |
const openDB = () => { |
| 6 |
return new Promise((resolve, reject) => { |
| 7 |
const request = indexedDB.open(dbName, 1); |
| 8 |
|
| 9 |
request.onerror = (event) => reject(`Error opening DB: ${event.target.error}`); |
| 10 |
request.onsuccess = (event) => resolve(event.target.result); |
| 11 |
|
| 12 |
request.onupgradeneeded = (event) => { |
| 13 |
const db = event.target.result; |
| 14 |
if (!db.objectStoreNames.contains(storeName)) { |
| 15 |
db.createObjectStore(storeName, { |
| 16 |
keyPath: "id", |
| 17 |
autoIncrement: true, |
| 18 |
}); |
| 19 |
} |
| 20 |
}; |
| 21 |
}); |
| 22 |
}; |
| 23 |
|
| 24 |
export const addPostsInIndexedDb = async (posts) => { |
| 25 |
try { |
| 26 |
const db = await openDB(); |
| 27 |
const transaction = db.transaction([storeName], "readwrite"); |
| 28 |
const store = transaction.objectStore(storeName); |
| 29 |
|
| 30 |
await store.add(posts); |
| 31 |
return "Post added successfully"; |
| 32 |
} catch (error) { |
| 33 |
console.error(`Error adding post: ${error}`); |
| 34 |
throw error; |
| 35 |
} |
| 36 |
}; |
| 37 |
|
| 38 |
export const removePostsFromIndexedDb = async () => { |
| 39 |
try { |
| 40 |
const db = await openDB(); |
| 41 |
const transaction = db.transaction([storeName], "readwrite"); |
| 42 |
const store = transaction.objectStore(storeName); |
| 43 |
await store.clear(); |
| 44 |
} catch (error) { |
| 45 |
console.error(`Error removing all posts: ${error}`); |
| 46 |
throw error; |
| 47 |
} |
| 48 |
}; |
| 49 |
|
| 50 |
export const getAllPostsFromIndexedDb = async (id) => { |
| 51 |
try { |
| 52 |
const db = await openDB(); |
| 53 |
const transaction = db.transaction([storeName], "readonly"); |
| 54 |
const store = transaction.objectStore(storeName); |
| 55 |
return new Promise((resolve, reject) => { |
| 56 |
const request = store.getAll(); |
| 57 |
request.onsuccess = () => resolve(request?.result?.find((d) => d.key === id)); |
| 58 |
request.onerror = (event) => reject(`Error fetching posts: ${event.target.error}`); |
| 59 |
}); |
| 60 |
} catch (error) { |
| 61 |
console.error(error); |
| 62 |
} |
| 63 |
}; |
| 64 |
|