/
UzhvaD
/
Web_application_development_Course_work
Обзор
Документация
Войти
/
UzhvaD
/
Web_application_development_Course_work
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
js/database.js
135 строк
5 KB
UzhvaD
create: style.css, app.js, database.js, scheduler.js, transforms.js, ui.js, utils.js
03 май 2026, 16:07
Верифицирован
03 май 2026, 16:07
b7726da
Код
Авторство
О чём код?
// ==================== РАБОТА С INDEXEDDB ==================== let dbInstance = null; async function initDatabase() { return new Promise((resolve, reject) => { const request = indexedDB.open('ETLServiceDB', 1); request.onerror = () => reject(request.error); request.onsuccess = () => { dbInstance = request.result; resolve(dbInstance); }; request.onupgradeneeded = (event) => { const db = event.target.result; if (!db.objectStoreNames.contains('databases')) { const store = db.createObjectStore('databases', { keyPath: 'name' }); store.createIndex('updatedAt', 'updatedAt'); } if (!db.objectStoreNames.contains('logs')) { db.createObjectStore('logs', { keyPath: 'id', autoIncrement: true }); } }; }); } async function getAllDatabases() { return new Promise((resolve, reject) => { const tx = dbInstance.transaction(['databases'], 'readonly'); const store = tx.objectStore('databases'); const request = store.getAll(); request.onsuccess = () => resolve(request.result || []); request.onerror = () => reject(request.error); }); } async function getDatabase(name) { return new Promise((resolve, reject) => { const tx = dbInstance.transaction(['databases'], 'readonly'); const store = tx.objectStore('databases'); const request = store.get(name); request.onsuccess = () => resolve(request.result || null); request.onerror = () => reject(request.error); }); } async function saveDatabase(name, dataCsv, columns) { return new Promise((resolve, reject) => { const tx = dbInstance.transaction(['databases'], 'readwrite'); const store = tx.objectStore('databases'); const request = store.put({ name: name, dataCsv: dataCsv, columns: columns, updatedAt: new Date().toISOString() }); request.onsuccess = () => resolve(); request.onerror = () => reject(request.error); }); } async function deleteDatabase(name) { return new Promise((resolve, reject) => { const tx = dbInstance.transaction(['databases'], 'readwrite'); const store = tx.objectStore('databases'); const request = store.delete(name); request.onsuccess = () => resolve(); request.onerror = () => reject(request.error); }); } async function exportAllDatabases() { const allDBs = await getAllDatabases(); return { exportedAt: new Date().toISOString(), version: '1.0', databases: allDBs.map(db => ({ name: db.name, columns: db.columns, updatedAt: db.updatedAt, dataCsv: db.dataCsv })) }; } async function saveLogEntry(entry) { if (!dbInstance) return; const tx = dbInstance.transaction(['logs'], 'readwrite'); const store = tx.objectStore('logs'); store.add({ timestamp: new Date().toISOString(), message: entry.message, type: entry.type }); // Оставляем только последние 500 записей const allLogs = await getAllLogs(); if (allLogs.length > 500) { const tx2 = dbInstance.transaction(['logs'], 'readwrite'); const store2 = tx2.objectStore('logs'); const toDelete = allLogs.slice(0, allLogs.length - 500); toDelete.forEach(log => store2.delete(log.id)); } } async function getAllLogs() { return new Promise((resolve, reject) => { const tx = dbInstance.transaction(['logs'], 'readonly'); const store = tx.objectStore('logs'); const request = store.getAll(); request.onsuccess = () => resolve(request.result || []); request.onerror = () => reject(request.error); }); } async function clearAllLogs() { return new Promise((resolve, reject) => { const tx = dbInstance.transaction(['logs'], 'readwrite'); const store = tx.objectStore('logs'); const request = store.clear(); request.onsuccess = () => resolve(); request.onerror = () => reject(request.error); }); } window.initDatabase = initDatabase; window.getAllDatabases = getAllDatabases; window.getDatabase = getDatabase; window.saveDatabase = saveDatabase; window.deleteDatabase = deleteDatabase; window.exportAllDatabases = exportAllDatabases; window.saveLogEntry = saveLogEntry; window.getAllLogs = getAllLogs; window.clearAllLogs = clearAllLogs;