[#69] Elwig: Add functionality to upload and replace database
All checks were successful
Test / Run tests (push) Successful in 2m23s

This commit is contained in:
2025-08-06 10:50:33 +02:00
parent b6c03892b1
commit 73fe4531cc
4 changed files with 145 additions and 17 deletions

View File

@@ -370,6 +370,28 @@ namespace Elwig.Helpers.Export {
}.Export(filename);
}
public static void ImportDatabase(string filename) {
var oldName = Path.ChangeExtension(App.Config.DatabaseFile, ".old.sqlite3");
var newName = Path.ChangeExtension(App.Config.DatabaseFile, ".new.sqlite3");
try {
using (var zip = ZipFile.Open(filename, ZipArchiveMode.Read)) {
var db = zip.GetEntry("database.sqlite3")!;
db.ExtractToFile(newName, true);
}
File.Move(App.Config.DatabaseFile, oldName, true);
File.Move(newName, App.Config.DatabaseFile, false);
} finally {
if (File.Exists(newName))
File.Delete(newName);
}
}
public static void ExportDatabase(string filename) {
File.Delete(filename);
using var zip = ZipFile.Open(filename, ZipArchiveMode.Create);
var db = zip.CreateEntryFromFile(App.Config.DatabaseFile, "database.sqlite3", CompressionLevel.SmallestSize);
}
public class ElwigExport {
public (IEnumerable<Member> Members, IEnumerable<string> Filters)? Members { get; set; }
public (IEnumerable<AreaCom> AreaComs, IEnumerable<string> Filters)? AreaComs { get; set; }