const fs = require('fs') const path = require('path') const rollbacksDir = path.join(__dirname, '..', 'rollbacks') function ensureDir() { if (!fs.existsSync(rollbacksDir)) fs.mkdirSync(rollbacksDir, { recursive: true }) } function snapshot(providerName, _candidateContentIgnored) { ensureDir() const servicesDir = path.join(__dirname, '..', 'services') const servicePath = path.join(servicesDir, `${providerName}Service.js`) if (!fs.existsSync(servicePath)) return null const originalCode = fs.readFileSync(servicePath, 'utf-8') const filePath = path.join(rollbacksDir, `rollback_${providerName}_${Date.now()}.js.bak`) fs.writeFileSync(filePath, originalCode, 'utf-8') return filePath } function getActiveSnapshot(providerName) { ensureDir() const files = fs.readdirSync(rollbacksDir) .filter(f => f.startsWith(`rollback_${providerName}_`) && f.endsWith('.js.bak')) .sort() if (files.length === 0) return null return path.join(rollbacksDir, files[files.length - 1]) } function restore(providerName, snapshotPath) { const servicesDir = path.join(__dirname, '..', 'services') const targetPath = path.join(servicesDir, `${providerName}Service.js`) fs.copyFileSync(snapshotPath, targetPath) } function clearSnapshots(providerName) { ensureDir() const files = fs.readdirSync(rollbacksDir) .filter(f => f.startsWith(`rollback_${providerName}_`)) for (const f of files) { fs.unlinkSync(path.join(rollbacksDir, f)) } } module.exports = { snapshot, getActiveSnapshot, restore, clearSnapshots, }