@@ -20,37 +20,40 @@ public SqlServerEffectsStore(string connectionString, string tablePrefix = "")
20
20
_connFunc = CreateConnection ( connectionString ) ;
21
21
}
22
22
23
+ private string ? _initializeSql ;
23
24
public async Task Initialize ( )
24
25
{
25
26
await using var conn = await _connFunc ( ) ;
26
- var sql = @$ "
27
+ _initializeSql ?? = @$ "
27
28
CREATE TABLE { _tablePrefix } _Effects (
28
29
Id NVARCHAR(450) PRIMARY KEY,
29
30
Status INT NOT NULL,
30
31
Result NVARCHAR(MAX),
31
32
Exception NVARCHAR(MAX)
32
33
);" ;
33
34
34
- await using var command = new SqlCommand ( sql , conn ) ;
35
+ await using var command = new SqlCommand ( _initializeSql , conn ) ;
35
36
try
36
37
{
37
38
await command . ExecuteNonQueryAsync ( ) ;
38
39
} catch ( SqlException exception ) when ( exception . Number == 2714 ) { }
39
40
}
40
41
42
+ private string ? _truncateSql ;
41
43
public async Task Truncate ( )
42
44
{
43
45
await using var conn = await _connFunc ( ) ;
44
- var sql = $ "TRUNCATE TABLE { _tablePrefix } _Effects";
45
- await using var command = new SqlCommand ( sql , conn ) ;
46
+ _truncateSql ?? = $ "TRUNCATE TABLE { _tablePrefix } _Effects";
47
+ await using var command = new SqlCommand ( _truncateSql , conn ) ;
46
48
await command . ExecuteNonQueryAsync ( ) ;
47
49
}
48
50
51
+ private string ? _setEffectResultSql ;
49
52
public async Task SetEffectResult ( FunctionId functionId , StoredEffect storedEffect )
50
53
{
51
54
var ( functionTypeId , functionInstanceId ) = functionId ;
52
55
await using var conn = await _connFunc ( ) ;
53
- var sql = $@ "
56
+ _setEffectResultSql ?? = $@ "
54
57
MERGE INTO { _tablePrefix } _Effects
55
58
USING (VALUES (@Id,@Status,@Result,@Exception))
56
59
AS source (Id,Status,Result,Exception)
@@ -61,7 +64,7 @@ WHEN NOT MATCHED THEN
61
64
INSERT (Id, Status, Result, Exception)
62
65
VALUES (source.Id, source.Status, source.Result, source.Exception);" ;
63
66
64
- await using var command = new SqlCommand ( sql , conn ) ;
67
+ await using var command = new SqlCommand ( _setEffectResultSql , conn ) ;
65
68
var escapedId = Escaper . Escape ( functionTypeId . ToString ( ) , functionInstanceId . ToString ( ) , storedEffect . EffectId . ToString ( ) ) ;
66
69
command . Parameters . AddWithValue ( "@Id" , escapedId ) ;
67
70
command . Parameters . AddWithValue ( "@Status" , storedEffect . WorkStatus ) ;
@@ -71,16 +74,17 @@ WHEN NOT MATCHED THEN
71
74
await command . ExecuteNonQueryAsync ( ) ;
72
75
}
73
76
77
+ private string ? _getEffectResultsSql ;
74
78
public async Task < IEnumerable < StoredEffect > > GetEffectResults ( FunctionId functionId )
75
79
{
76
80
await using var conn = await _connFunc ( ) ;
77
- var sql = @$ "
81
+ _getEffectResultsSql ?? = @$ "
78
82
SELECT Id, Status, Result, Exception
79
83
FROM { _tablePrefix } _Effects
80
84
WHERE Id LIKE @IdPrefix" ;
81
85
82
86
var idPrefix = Escaper . Escape ( functionId . TypeId . Value , functionId . InstanceId . Value ) + $ "{ Escaper . Separator } %";
83
- await using var command = new SqlCommand ( sql , conn ) ;
87
+ await using var command = new SqlCommand ( _getEffectResultsSql , conn ) ;
84
88
command . Parameters . AddWithValue ( "@IdPrefix" , idPrefix ) ;
85
89
86
90
var storedEffects = new List < StoredEffect > ( ) ;
@@ -101,29 +105,31 @@ public async Task<IEnumerable<StoredEffect>> GetEffectResults(FunctionId functio
101
105
return storedEffects ;
102
106
}
103
107
108
+ private string ? _deleteEffectResultSql ;
104
109
public async Task DeleteEffectResult ( FunctionId functionId , EffectId effectId )
105
110
{
106
111
await using var conn = await _connFunc ( ) ;
107
- var sql = @$ "
112
+ _deleteEffectResultSql ?? = @$ "
108
113
DELETE FROM { _tablePrefix } _Effects
109
114
WHERE Id = @Id" ;
110
115
111
116
var id = Escaper . Escape ( functionId . TypeId . Value , functionId . InstanceId . Value , effectId . Value ) ;
112
- await using var command = new SqlCommand ( sql , conn ) ;
117
+ await using var command = new SqlCommand ( _deleteEffectResultSql , conn ) ;
113
118
command . Parameters . AddWithValue ( "@Id" , id ) ;
114
119
115
120
await command . ExecuteNonQueryAsync ( ) ;
116
121
}
117
122
123
+ private string ? _removeSql ;
118
124
public async Task Remove ( FunctionId functionId )
119
125
{
120
126
await using var conn = await _connFunc ( ) ;
121
- var sql = @$ "
127
+ _removeSql ?? = @$ "
122
128
DELETE FROM { _tablePrefix } _Effects
123
129
WHERE Id LIKE @Id" ;
124
130
125
131
var id = Escaper . Escape ( functionId . TypeId . Value , functionId . InstanceId . Value ) + $ "{ Escaper . Separator } %" ;
126
- await using var command = new SqlCommand ( sql , conn ) ;
132
+ await using var command = new SqlCommand ( _removeSql , conn ) ;
127
133
command . Parameters . AddWithValue ( "@Id" , id ) ;
128
134
129
135
await command . ExecuteNonQueryAsync ( ) ;
0 commit comments