mirror of
https://github.com/vladmandic/sdnext.git
synced 2026-01-27 15:02:48 +03:00
82 lines
2.1 KiB
JavaScript
82 lines
2.1 KiB
JavaScript
let db;
|
|
|
|
async function initIndexDB() {
|
|
async function createDB() {
|
|
return new Promise((resolve, reject) => {
|
|
const request = indexedDB.open('SDNext');
|
|
request.onerror = (evt) => reject(evt);
|
|
request.onsuccess = (evt) => {
|
|
db = evt.target.result;
|
|
const countAll = db
|
|
.transaction(['thumbs'], 'readwrite')
|
|
.objectStore('thumbs')
|
|
.count();
|
|
countAll.onsuccess = () => log('initIndexDB', countAll.result);
|
|
resolve();
|
|
};
|
|
request.onupgradeneeded = (evt) => {
|
|
db = evt.target.result;
|
|
const store = db.createObjectStore('thumbs', { keyPath: 'hash' });
|
|
store.createIndex('hash', 'hash', { unique: true });
|
|
const index = store.index('hash');
|
|
resolve();
|
|
};
|
|
});
|
|
}
|
|
|
|
if (!db) await createDB();
|
|
}
|
|
|
|
async function add(record) {
|
|
if (!db) return null;
|
|
return new Promise((resolve, reject) => {
|
|
const request = db
|
|
.transaction(['thumbs'], 'readwrite')
|
|
.objectStore('thumbs')
|
|
.add(record);
|
|
request.onsuccess = (evt) => resolve(evt);
|
|
request.onerror = (evt) => reject(evt);
|
|
});
|
|
}
|
|
|
|
async function del(hash) {
|
|
if (!db) return null;
|
|
return new Promise((resolve, reject) => {
|
|
const request = db
|
|
.transaction(['thumbs'], 'readwrite')
|
|
.objectStore('thumbs')
|
|
.delete(hash);
|
|
request.onsuccess = (evt) => resolve(evt);
|
|
request.onerror = (evt) => reject(evt);
|
|
});
|
|
}
|
|
|
|
async function get(hash) {
|
|
if (!db) return null;
|
|
return new Promise((resolve, reject) => {
|
|
const request = db
|
|
.transaction(['thumbs'], 'readwrite')
|
|
.objectStore('thumbs')
|
|
.get(hash);
|
|
request.onsuccess = () => resolve(request.result);
|
|
request.onerror = (evt) => reject(evt);
|
|
});
|
|
}
|
|
|
|
async function put(record) {
|
|
if (!db) return null;
|
|
return new Promise((resolve, reject) => {
|
|
const request = db
|
|
.transaction(['thumbs'], 'readwrite')
|
|
.objectStore('thumbs')
|
|
.put(record);
|
|
request.onsuccess = (evt) => resolve(evt);
|
|
request.onerror = (evt) => reject(evt);
|
|
});
|
|
}
|
|
|
|
window.idbAdd = add;
|
|
window.idbDel = del;
|
|
window.idbGet = get;
|
|
window.idbPut = put;
|