Export/Database: Do not delete import source files

This commit is contained in:
2026-09-16 17:12:52 +02:00
parent abf06c558f
commit 15e191d74e
+8 -4
View File
@@ -212,7 +212,7 @@ namespace Elwig.Helpers.Export {
} }
} }
public static async Task ImportSqlite(string filename, bool zipFile = false) { public static async Task ImportSqlite(string filename, bool zipFile = false, bool keepSource = true) {
if (zipFile) { if (zipFile) {
var newName = Path.ChangeExtension(App.Config.DatabaseFile, ".new.sqlite3"); var newName = Path.ChangeExtension(App.Config.DatabaseFile, ".new.sqlite3");
try { try {
@@ -221,7 +221,7 @@ namespace Elwig.Helpers.Export {
foreach (var entry in zip.Entries) { foreach (var entry in zip.Entries) {
if (entry.Name.EndsWith(".sqlite3")) { if (entry.Name.EndsWith(".sqlite3")) {
entry.ExtractToFile(newName); entry.ExtractToFile(newName);
await ImportSqlite(newName); await ImportSqlite(newName, keepSource: false);
return; return;
} }
} }
@@ -233,7 +233,11 @@ namespace Elwig.Helpers.Export {
var oldName = Path.ChangeExtension(App.Config.DatabaseFile, ".old.sqlite3"); var oldName = Path.ChangeExtension(App.Config.DatabaseFile, ".old.sqlite3");
File.Move(App.Config.DatabaseFile, oldName, true); File.Move(App.Config.DatabaseFile, oldName, true);
File.Move(filename, App.Config.DatabaseFile, false); if (keepSource) {
File.Copy(filename, App.Config.DatabaseFile, false);
} else {
File.Move(filename, App.Config.DatabaseFile, false);
}
using var cnx = await AppDbContext.ConnectAsync(); using var cnx = await AppDbContext.ConnectAsync();
await cnx.ExecuteBatch("VACUUM"); await cnx.ExecuteBatch("VACUUM");
@@ -246,7 +250,7 @@ namespace Elwig.Helpers.Export {
using (var cnx = await AppDbContext.ConnectAsync($"Data Source=\"{newName}\"; Mode=ReadWriteCreate; Foreign Keys=False; Cache=Default; Pooling=False")) { using (var cnx = await AppDbContext.ConnectAsync($"Data Source=\"{newName}\"; Mode=ReadWriteCreate; Foreign Keys=False; Cache=Default; Pooling=False")) {
await cnx.ExecuteBatch(await reader.ReadToEndAsync()); await cnx.ExecuteBatch(await reader.ReadToEndAsync());
} }
await ImportSqlite(newName); await ImportSqlite(newName, keepSource: false);
} finally { } finally {
if (File.Exists(newName)) File.Delete(newName); if (File.Exists(newName)) File.Delete(newName);
} }