From 10a31011901472ea955d5d354557f91270511681 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 8 Mar 2026 08:22:48 +0000 Subject: [PATCH 1/2] Initial plan From 0995b53bac256aeec6c9d7cfc3d3ef7ae2357b40 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 8 Mar 2026 08:26:59 +0000 Subject: [PATCH 2/2] Fix transaction synchronization: pass captured transaction to ExecuteOnConnection callback Co-authored-by: jamesmoore <6506748+jamesmoore@users.noreply.github.com> --- SDMeta/Cache/SqliteDataSource.cs | 34 ++++++++++++++++---------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/SDMeta/Cache/SqliteDataSource.cs b/SDMeta/Cache/SqliteDataSource.cs index 16a877d..b456f3c 100644 --- a/SDMeta/Cache/SqliteDataSource.cs +++ b/SDMeta/Cache/SqliteDataSource.cs @@ -72,7 +72,7 @@ private SqliteConnection GetConnection() return connection; } - private T ExecuteOnConnection(Func func) + private T ExecuteOnConnection(Func func) { if (this.transaction?.Connection != null) { @@ -81,13 +81,13 @@ private T ExecuteOnConnection(Func func) var currentTransaction = this.transaction; if (currentTransaction?.Connection != null) { - return func(currentTransaction.Connection); + return func(currentTransaction.Connection, currentTransaction); } } } using var connection = GetConnection(); - return func(connection); + return func(connection, null); } private string GetInsertSql() @@ -108,11 +108,11 @@ public void Initialize() var tabledef = GetTableDefinition(); // Setup table if absent https://learn.microsoft.com/en-us/dotnet/standard/data/sqlite/types - ExecuteOnConnection(connection => connection.Execute(@$"CREATE TABLE IF NOT EXISTS {TableName} ( + ExecuteOnConnection((connection, _) => connection.Execute(@$"CREATE TABLE IF NOT EXISTS {TableName} ( {tabledef.Select(p => $"{p.Column} {p.DataType}{(p.IsPrimaryKey ? " PRIMARY KEY" : "")}").ToCommaSeparated()} );")); - ExecuteOnConnection(connection => connection.Execute(@$"CREATE VIRTUAL TABLE IF NOT EXISTS {FTSTableName} USING fts5({ftscolumns.ToCommaSeparated()});")); + ExecuteOnConnection((connection, _) => connection.Execute(@$"CREATE VIRTUAL TABLE IF NOT EXISTS {FTSTableName} USING fts5({ftscolumns.ToCommaSeparated()});")); logger.LogInformation("Initalization completed"); } @@ -141,7 +141,7 @@ public IEnumerable Query(QueryParams queryParams) modelHash = queryParams.ModelFilter?.ModelHash, }; - var reader = ExecuteOnConnection(connection => + var reader = ExecuteOnConnection((connection, _) => connection.Query(sql, param) ); return reader; @@ -218,7 +218,7 @@ private static string BuildOrderByClause(QuerySortBy querySort) public ImageFile? ReadImageFile(string realFileName) { - var reader = ExecuteOnConnection(connection => connection.QueryFirstOrDefault( + var reader = ExecuteOnConnection((connection, _) => connection.QueryFirstOrDefault( $@"SELECT * FROM {TableName} WHERE FileName = @FileName @@ -236,10 +236,10 @@ private static string BuildOrderByClause(QuerySortBy querySort) public void WriteImageFile(ImageFile info) { - ExecuteOnConnection(connection => connection.Execute( + ExecuteOnConnection((connection, tx) => connection.Execute( insertSql.Value, FromModel(info), - this.transaction + tx )); } @@ -298,7 +298,7 @@ public void CommitTransaction() public IEnumerable GetModelSummaryList() { - var reader = ExecuteOnConnection(connection => connection.Query( + var reader = ExecuteOnConnection((connection, _) => connection.Query( $@"SELECT Model, ModelHash, Count(*) as Count FROM {TableName} GROUP BY Model, ModelHash @@ -310,7 +310,7 @@ ORDER BY 3 DESC" public IEnumerable GetAllFilenames() { - var reader = ExecuteOnConnection(connection => connection.Query( + var reader = ExecuteOnConnection((connection, _) => connection.Query( $@"SELECT Filename FROM {TableName} WHERE [Exists] = 1" @@ -321,20 +321,20 @@ public IEnumerable GetAllFilenames() public void Truncate() { - ExecuteOnConnection(connection => connection.Execute($"DELETE FROM {TableName}")); - ExecuteOnConnection(connection => connection.Execute($"DELETE FROM {FTSTableName}")); + ExecuteOnConnection((connection, _) => connection.Execute($"DELETE FROM {TableName}")); + ExecuteOnConnection((connection, _) => connection.Execute($"DELETE FROM {FTSTableName}")); } public void PostUpdateProcessing() { - ExecuteOnConnection(connection => + ExecuteOnConnection((connection, tx) => connection.Execute( $@"INSERT INTO {FTSTableName} (FileName, Prompt, PromptFormat, Version) SELECT FileName, Prompt, PromptFormat, Version FROM {TableName} WHERE FileName NOT IN (SELECT FileName from {FTSTableName})", - this.transaction)); + tx)); - ExecuteOnConnection(connection => + ExecuteOnConnection((connection, tx) => connection.Execute( $@"UPDATE {FTSTableName} SET Prompt = p.Prompt, @@ -342,7 +342,7 @@ WHERE FileName NOT IN (SELECT FileName from {FTSTableName})", Version = p.Version FROM {TableName} p WHERE {FTSTableName}.FileName = p.FileName and {FTSTableName}.Version != p.Version", - this.transaction)); + tx)); } }