Skip to content

Commit 15bb6c5

Browse files
Fix QueryCache integration and Database test service registration
Co-authored-by: MPCoreDeveloper <37024522+MPCoreDeveloper@users.noreply.github.com>
1 parent 5850bda commit 15bb6c5

File tree

2 files changed

+25
-13
lines changed

2 files changed

+25
-13
lines changed

SharpCoreDB.Tests/DatabaseTests.cs

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -42,16 +42,7 @@ public void Dispose()
4242
public void Database_ExecuteSQL_ParameterizedQuery_BindsParametersCorrectly()
4343
{
4444
// Arrange
45-
var mockStorage = new Mock<IStorage>();
46-
var mockCrypto = new Mock<ICryptoService>();
47-
var mockUserService = new Mock<IUserService>();
48-
var services = new ServiceCollection();
49-
services.AddSingleton(mockCrypto.Object);
50-
services.AddSingleton(mockStorage.Object);
51-
services.AddSingleton(mockUserService.Object);
52-
var serviceProvider = services.BuildServiceProvider();
53-
54-
var db = new Database(serviceProvider, _testDbPath, "password");
45+
var db = _factory.Create(_testDbPath, "password");
5546
db.ExecuteSQL("CREATE TABLE users (id INTEGER, name TEXT)");
5647
var parameters = new Dictionary<string, object?> { { "0", 1 }, { "1", "Alice" } };
5748

SharpCoreDB/Services/SqlParser.cs

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,30 @@ public void Execute(string sql, Dictionary<string, object?> parameters, IWAL? wa
8383
sql = this.SanitizeSql(sql);
8484
}
8585

86-
// Proceed with existing logic
87-
var parts = sql.Trim().Split(' ', StringSplitOptions.RemoveEmptyEntries);
88-
this.ExecuteInternal(sql, parts, wal, originalSql ?? sql);
86+
// Use query cache if available
87+
string cacheKey = originalSql ?? sql;
88+
string[] parts;
89+
90+
if (this.queryCache != null)
91+
{
92+
var cached = this.queryCache.GetOrAdd(cacheKey, key =>
93+
{
94+
var parsedParts = sql.Trim().Split(' ', StringSplitOptions.RemoveEmptyEntries);
95+
return new QueryCache.CachedQuery
96+
{
97+
Sql = key,
98+
Parts = parsedParts,
99+
CachedAt = DateTime.UtcNow
100+
};
101+
});
102+
parts = cached.Parts;
103+
}
104+
else
105+
{
106+
parts = sql.Trim().Split(' ', StringSplitOptions.RemoveEmptyEntries);
107+
}
108+
109+
this.ExecuteInternal(sql, parts, wal, cacheKey);
89110
}
90111

91112
/// <summary>

0 commit comments

Comments
 (0)