From 2c9bc49b3dff6ad1aa3a779dc6551cbb24cfd3f6 Mon Sep 17 00:00:00 2001 From: Carl Johnsen Date: Mon, 19 May 2025 20:43:45 +0200 Subject: [PATCH] Changed LocalDeleteDatabase to use factory construction --- .../Main/Database/LocalDeleteDatabase.cs | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/Duplicati/Library/Main/Database/LocalDeleteDatabase.cs b/Duplicati/Library/Main/Database/LocalDeleteDatabase.cs index af8074606..deff17bbd 100644 --- a/Duplicati/Library/Main/Database/LocalDeleteDatabase.cs +++ b/Duplicati/Library/Main/Database/LocalDeleteDatabase.cs @@ -23,9 +23,10 @@ using System; using System.Collections.Generic; -using System.Data; using System.Linq; +using System.Threading.Tasks; using Duplicati.Library.Interface; +using Microsoft.Data.Sqlite; namespace Duplicati.Library.Main.Database { @@ -43,18 +44,26 @@ namespace Duplicati.Library.Main.Database private const string REGISTER_COMMAND = @"INSERT OR IGNORE INTO ""DuplicateBlock"" (""BlockID"", ""VolumeID"") SELECT ""ID"", @VolumeId FROM ""Block"" WHERE ""Hash"" = @Hash AND ""Size"" = @Size "; - private IDbCommand m_registerDuplicateBlockCommand; + private SqliteCommand m_registerDuplicateBlockCommand = null!; - public LocalDeleteDatabase(string path, string operation, long pagecachesize) - : base(path, operation, true, pagecachesize) + public static async Task CreateAsync(string path, long pagecachesize) { - m_registerDuplicateBlockCommand = m_connection.CreateCommand(REGISTER_COMMAND); + var db = new LocalDeleteDatabase(); + + db = (LocalDeleteDatabase)await CreateLocalDatabaseAsync(db, path, "BugReportCreate", false, pagecachesize); + + return db; } - public LocalDeleteDatabase(LocalDatabase db) - : base(db) + public static async Task CreateAsync(LocalDatabase dbparent) { - m_registerDuplicateBlockCommand = m_connection.CreateCommand(REGISTER_COMMAND); + var dbnew = new LocalDeleteDatabase(); + + dbnew = (LocalDeleteDatabase)await CreateLocalDatabaseAsync(dbparent, dbnew); + + dbnew.m_registerDuplicateBlockCommand = await dbnew.Connection.CreateCommandAsync(REGISTER_COMMAND); + + return dbnew; } /// @@ -480,7 +489,7 @@ namespace Duplicati.Library.Main.Database { if (lookupIndexfiles.TryGetValue(sh.Name, out var backref)) { - //If this is the last reference, + //If this is the last reference, // remove the index file as well if (backref.Remove(r.Name) && backref.Count == 0) yield return sh;