CODE · 1.1 KB
src/project-store.js
Workspace snapshot · 09/04 13:35
const DB_NAME = "ai-banner-lab";
const STORE = "projects";
function database() {
return new Promise((resolve, reject) => {
const request = indexedDB.open(DB_NAME, 1);
request.onupgradeneeded = () => request.result.createObjectStore(STORE, { keyPath: "id" });
request.onsuccess = () => resolve(request.result);
request.onerror = () => reject(request.error);
});
}
export async function saveProject(project) {
const db = await database();
await new Promise((resolve, reject) => {
const transaction = db.transaction(STORE, "readwrite");
transaction.objectStore(STORE).put(project);
transaction.oncomplete = resolve;
transaction.onerror = () => reject(transaction.error);
});
db.close();
}
export async function listProjects() {
const db = await database();
const projects = await new Promise((resolve, reject) => {
const request = db.transaction(STORE, "readonly").objectStore(STORE).getAll();
request.onsuccess = () => resolve(request.result.sort((a, b) => b.updatedAt - a.updatedAt).slice(0, 20));
request.onerror = () => reject(request.error);
});
db.close();
return projects;
}