u
This commit is contained in:
@@ -116,25 +116,21 @@ async function snapshotSqliteDatabase(targetFile) {
|
||||
fs.unlinkSync(targetFile);
|
||||
}
|
||||
|
||||
try {
|
||||
const provider = await getProvider();
|
||||
if (provider?.db && typeof provider.db.backup === 'function') {
|
||||
await provider.db.backup(targetFile);
|
||||
const stats = fs.statSync(targetFile);
|
||||
return { success: true, sizeBytes: stats.size };
|
||||
}
|
||||
|
||||
if (provider?.query) {
|
||||
const escapedPath = targetFile.replace(/'/g, "''");
|
||||
await provider.query(`VACUUM INTO '${escapedPath}'`);
|
||||
const stats = fs.statSync(targetFile);
|
||||
return { success: true, sizeBytes: stats.size };
|
||||
}
|
||||
} catch (err) {
|
||||
backupLog.warn(`Online SQLite backup method failed (${err.message}), falling back to direct copy`);
|
||||
const provider = await getProvider();
|
||||
if (provider?.db && typeof provider.db.backup === 'function') {
|
||||
await provider.db.backup(targetFile);
|
||||
const stats = fs.statSync(targetFile);
|
||||
return { success: true, sizeBytes: stats.size };
|
||||
}
|
||||
|
||||
// Direct file fallback
|
||||
if (provider?.query) {
|
||||
const escapedPath = targetFile.replace(/'/g, "''");
|
||||
await provider.query(`VACUUM INTO '${escapedPath}'`);
|
||||
const stats = fs.statSync(targetFile);
|
||||
return { success: true, sizeBytes: stats.size };
|
||||
}
|
||||
|
||||
// Direct file copy when provider is offline / not connected
|
||||
const { sqlitePath } = resolveBackupPaths();
|
||||
if (fs.existsSync(sqlitePath)) {
|
||||
fs.copyFileSync(sqlitePath, targetFile);
|
||||
|
||||
Reference in New Issue
Block a user