121 lines
4.3 KiB
JavaScript
121 lines
4.3 KiB
JavaScript
export default class BilliDB {
|
|
DB_VERSION;
|
|
DB_NAME;
|
|
constructor(dbName, dbVersion) {
|
|
this.DB_NAME = dbName;
|
|
this.DB_VERSION = dbVersion;
|
|
}
|
|
async getDb() {
|
|
return new Promise((resolve, reject) => {
|
|
const request = window.indexedDB.open(this.DB_NAME, this.DB_VERSION);
|
|
request.onerror = e => {
|
|
console.log("Error opening db", e);
|
|
reject("Error");
|
|
};
|
|
request.onsuccess = e => {
|
|
console.log("connect erfolgreich");
|
|
// @ts-ignore
|
|
resolve(e.target.result);
|
|
};
|
|
request.onupgradeneeded = e => {
|
|
console.log("onupgradeneeded");
|
|
// @ts-ignore
|
|
const db = e.target.result;
|
|
db.createObjectStore("cameras", { autoIncrement: false, keyPath: 'id' });
|
|
db.createObjectStore("brands", { autoIncrement: false, keyPath: 'schluessel' });
|
|
db.createObjectStore("conditions", { autoIncrement: false, keyPath: 'schluessel' });
|
|
db.createObjectStore("buildtypes", { autoIncrement: false, keyPath: 'schluessel' });
|
|
};
|
|
});
|
|
}
|
|
async saveItem(item, storeId) {
|
|
const db = await this.getDb();
|
|
return new Promise((resolve, reject) => {
|
|
console.log("Starting Add Transaction");
|
|
// @ts-ignore
|
|
const trans = db.transaction([storeId], 'readwrite');
|
|
trans.oncomplete = (e) => {
|
|
resolve(e);
|
|
};
|
|
trans.onerror = (e) => {
|
|
console.log("on Error", e);
|
|
reject(e);
|
|
};
|
|
const store = trans.objectStore(storeId);
|
|
store.add(item);
|
|
store.onerror = (e) => {
|
|
console.log("Error on Store", e);
|
|
};
|
|
store.oncomplete = (e) => {
|
|
console.log("oncomplete on Store", e);
|
|
};
|
|
store.onsuccess = (e) => {
|
|
console.log("onsuccess on Store", e);
|
|
};
|
|
});
|
|
}
|
|
async saveItems(items, storeId) {
|
|
const db = await this.getDb();
|
|
return new Promise((resolve, reject) => {
|
|
console.log("Starting Add Transaction");
|
|
// @ts-ignore
|
|
const trans = db.transaction([storeId], 'readwrite');
|
|
trans.oncomplete = (e) => {
|
|
resolve(e);
|
|
};
|
|
trans.onerror = (e) => {
|
|
console.log("on Error", e);
|
|
reject(e);
|
|
};
|
|
const store = trans.objectStore(storeId);
|
|
items.forEach((item) => {
|
|
store.add(item);
|
|
});
|
|
store.onerror = (e) => {
|
|
console.log("Error on Store", e);
|
|
};
|
|
store.oncomplete = (e) => {
|
|
console.log("oncomplete on Store", e);
|
|
};
|
|
store.onsuccess = (e) => {
|
|
console.log("onsuccess on Store", e);
|
|
};
|
|
});
|
|
}
|
|
async getItems(storeId) {
|
|
console.log("DB-getItems", storeId);
|
|
const db = await this.getDb();
|
|
return new Promise((resolve, reject) => {
|
|
console.log("DB-getItems: Starting Get Transaction");
|
|
const items = [];
|
|
// @ts-ignore
|
|
const trans = db.transaction([storeId], 'readonly');
|
|
trans.oncomplete = (e) => {
|
|
resolve(items);
|
|
};
|
|
trans.onerror = (e) => {
|
|
console.log("on Error", e);
|
|
reject(e);
|
|
};
|
|
const store = trans.objectStore(storeId);
|
|
console.log("--> We have try to get a cursor");
|
|
store.openCursor().onsuccess = (e) => {
|
|
console.log("--> We have a cursor", e.target.result);
|
|
const cursor = e.target.result;
|
|
if (cursor) {
|
|
items.push(cursor.value);
|
|
cursor.continue();
|
|
}
|
|
console.log("onsuccess on getAll", items);
|
|
// resolve(e.target.result);
|
|
};
|
|
store.onerror = (e) => {
|
|
console.log("Error on getAll", e);
|
|
};
|
|
store.oncomplete = (e) => {
|
|
console.log("oncomplete on getAll", e);
|
|
};
|
|
});
|
|
}
|
|
}
|
|
//# sourceMappingURL=index.js.map
|