From 387c18e834d6103105652be41b22f5e10c795b36 Mon Sep 17 00:00:00 2001 From: troogs Date: Fri, 3 Apr 2026 10:53:53 +0200 Subject: [PATCH] Implement backup and restore functionality; add IBackupService and BackupService; refactor services to use DbContextFactory --- .vscode/tasks.json | 35 +++++ .../Components/Layout/MainLayout.razor | 16 +- .../Pages/Accounts/AccountDetail.razor | 2 + src/Duempelkas.App/Pages/Dashboard.razor | 54 +++++++ src/Duempelkas.App/Services/IBackupService.cs | 7 + .../Duempelkas.Desktop.csproj | 20 +++ src/Duempelkas.Desktop/Program.cs | 3 +- .../DependencyInjection.cs | 3 + .../Services/AccountService.cs | 46 ++++-- .../Services/BackupService.cs | 146 ++++++++++++++++++ .../Services/BalanceQueryService.cs | 8 +- .../Services/EntryService.cs | 85 +++++----- .../Services/PdfStatementService.cs | 10 +- .../Duempelkas.Tests/TransferServiceTests.cs | 24 ++- .../YearlyStatementCalculationTests.cs | 23 ++- 15 files changed, 411 insertions(+), 71 deletions(-) create mode 100644 src/Duempelkas.App/Services/IBackupService.cs create mode 100644 src/Duempelkas.Infrastructure/Services/BackupService.cs diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 6ae7b4f..d66ae11 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -22,6 +22,37 @@ } } }, + { + "label": "publish", + "command": "dotnet", + "type": "process", + "args": [ + "publish", + "${workspaceFolder}/src/Duempelkas.Desktop/Duempelkas.Desktop.csproj", + "-c", + "Release", + "-r", + "win-x64", + "--self-contained", + "true", + "/p:PublishSingleFile=true", + "/p:EnableCompressionInSingleFile=true", + "/p:IncludeNativeLibrariesForSelfExtract=true", + "/p:IncludeAllContentForSelfExtract=true", + "/p:DebugType=None", + "/p:DebugSymbols=false", + "-o", + "${workspaceFolder}/Publish" + ], + "problemMatcher": "$msCompile", + "options": { + "statusbar": { + "label": "$(package) Publish", + "color": "#22c55e", + "detail": "Publish desktop app into Publish folder" + } + } + }, { "label": "watch", "command": "dotnet", @@ -34,6 +65,10 @@ ], "problemMatcher": "$msCompile", "isBackground": true, + "presentation": { + "reveal": "never", + "panel": "dedicated" + }, "options": { "statusbar": { "label": "$(eye) Watch", diff --git a/src/Duempelkas.App/Components/Layout/MainLayout.razor b/src/Duempelkas.App/Components/Layout/MainLayout.razor index ee4eea7..16c7827 100644 --- a/src/Duempelkas.App/Components/Layout/MainLayout.razor +++ b/src/Duempelkas.App/Components/Layout/MainLayout.razor @@ -1,4 +1,5 @@ @inherits LayoutComponentBase +@using System.Reflection