mirror of
https://github.com/vladmandic/automatic
synced 2026-09-19 09:14:35 +02:00
gallery optimizations
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
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;
|
||||
|
||||
onUiLoaded(initIndexDB);
|
||||
Reference in New Issue
Block a user