UNPKG

agentic-qe

Version:

Agentic Quality Engineering Fleet System - AI-driven quality management platform

70 lines 2.59 kB
"use strict"; /** * Memory Compact Command * Compacts the database to reclaim unused space */ Object.defineProperty(exports, "__esModule", { value: true }); exports.compact = void 0; const Logger_1 = require("../../../utils/Logger"); const promises_1 = require("fs/promises"); async function compact(options) { const logger = Logger_1.Logger.getInstance(); const startTime = Date.now(); try { // Get database file path const dbPath = options.database.dbPath || './data/fleet.db'; // Measure size before let sizeBeforeMB = 0; try { const statsBefore = await (0, promises_1.stat)(dbPath); sizeBeforeMB = statsBefore.size / (1024 * 1024); } catch (error) { logger.warn('Could not measure database size before compact'); } // Perform database compaction operations // 1. Delete expired memory records await options.database.run(` DELETE FROM memory_store WHERE expires_at IS NOT NULL AND expires_at < datetime('now') `); // 2. Compact database using PRAGMA optimize await options.database.exec('PRAGMA optimize'); // 3. Reindex all tables await options.database.exec('REINDEX'); // 4. Analyze tables for query optimization await options.database.exec('ANALYZE'); // Measure size after let sizeAfterMB = 0; try { const statsAfter = await (0, promises_1.stat)(dbPath); sizeAfterMB = statsAfter.size / (1024 * 1024); } catch (error) { logger.warn('Could not measure database size after compact'); } const spaceReclaimed = Math.max(0, sizeBeforeMB - sizeAfterMB); const duration = Date.now() - startTime; logger.info(`Database compacted: ${spaceReclaimed.toFixed(2)}MB reclaimed in ${duration}ms`); return { success: true, sizeBeforeMB: parseFloat(sizeBeforeMB.toFixed(2)), sizeAfterMB: parseFloat(sizeAfterMB.toFixed(2)), spaceReclaimed: parseFloat(spaceReclaimed.toFixed(2)), duration }; } catch (error) { logger.error('Failed to compact database:', error); return { success: false, sizeBeforeMB: 0, sizeAfterMB: 0, spaceReclaimed: 0, duration: Date.now() - startTime, error: error instanceof Error ? error.message : String(error) }; } } exports.compact = compact; //# sourceMappingURL=compact.js.map