@@ -19,35 +19,38 @@ public PostgresEffectsStore(string connectionString, string tablePrefix = "")
19
19
_tablePrefix = tablePrefix ;
20
20
}
21
21
22
+ private string ? _initializeSql ;
22
23
public async Task Initialize ( )
23
24
{
24
25
25
26
await using var conn = await CreateConnection ( ) ;
26
- var sql = @$ "
27
+ _initializeSql ?? = @$ "
27
28
CREATE TABLE IF NOT EXISTS { _tablePrefix } _effects (
28
29
id VARCHAR(450) PRIMARY KEY,
29
30
status INT NOT NULL,
30
31
result TEXT NULL,
31
32
exception TEXT NULL
32
33
);" ;
33
- var command = new NpgsqlCommand ( sql , conn ) ;
34
+ var command = new NpgsqlCommand ( _initializeSql , conn ) ;
34
35
await command . ExecuteNonQueryAsync ( ) ;
35
36
}
36
37
38
+ private string ? _truncateSql ;
37
39
public async Task Truncate ( )
38
40
{
39
41
await using var conn = await CreateConnection ( ) ;
40
- var sql = $ "TRUNCATE TABLE { _tablePrefix } _effects";
41
- var command = new NpgsqlCommand ( sql , conn ) ;
42
+ _truncateSql ?? = $ "TRUNCATE TABLE { _tablePrefix } _effects";
43
+ var command = new NpgsqlCommand ( _truncateSql , conn ) ;
42
44
await command . ExecuteNonQueryAsync ( ) ;
43
45
}
44
46
47
+ private string ? _setEffectResultSql ;
45
48
public async Task SetEffectResult ( FunctionId functionId , StoredEffect storedEffect )
46
49
{
47
50
var ( functionTypeId , functionInstanceId ) = functionId ;
48
51
49
52
await using var conn = await CreateConnection ( ) ;
50
- var sql = $@ "
53
+ _setEffectResultSql ?? = $@ "
51
54
INSERT INTO { _tablePrefix } _effects
52
55
(id, status, result, exception)
53
56
VALUES
@@ -56,7 +59,7 @@ ON CONFLICT (id)
56
59
DO
57
60
UPDATE SET status = EXCLUDED.status, result = EXCLUDED.result, exception = EXCLUDED.exception" ;
58
61
59
- await using var command = new NpgsqlCommand ( sql , conn )
62
+ await using var command = new NpgsqlCommand ( _setEffectResultSql , conn )
60
63
{
61
64
Parameters =
62
65
{
@@ -70,14 +73,15 @@ ON CONFLICT (id)
70
73
await command . ExecuteNonQueryAsync ( ) ;
71
74
}
72
75
76
+ private string ? _getEffectResultsSql ;
73
77
public async Task < IEnumerable < StoredEffect > > GetEffectResults ( FunctionId functionId )
74
78
{
75
79
await using var conn = await CreateConnection ( ) ;
76
- var sql = @$ "
80
+ _getEffectResultsSql ?? = @$ "
77
81
SELECT id, status, result, exception
78
82
FROM { _tablePrefix } _effects
79
83
WHERE id LIKE $1" ;
80
- await using var command = new NpgsqlCommand ( sql , conn )
84
+ await using var command = new NpgsqlCommand ( _getEffectResultsSql , conn )
81
85
{
82
86
Parameters =
83
87
{
@@ -101,27 +105,29 @@ public async Task<IEnumerable<StoredEffect>> GetEffectResults(FunctionId functio
101
105
return functions ;
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 CreateConnection ( ) ;
107
- var sql = $ "DELETE FROM { _tablePrefix } _effects WHERE id = $1";
112
+ _deleteEffectResultSql ?? = $ "DELETE FROM { _tablePrefix } _effects WHERE id = $1";
108
113
109
114
var id = Escaper . Escape ( functionId . TypeId . Value , functionId . InstanceId . Value , effectId . Value ) ;
110
- await using var command = new NpgsqlCommand ( sql , conn )
115
+ await using var command = new NpgsqlCommand ( _deleteEffectResultSql , conn )
111
116
{
112
117
Parameters = { new ( ) { Value = id } }
113
118
} ;
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 CreateConnection ( ) ;
121
- var sql = $ "DELETE FROM { _tablePrefix } _effects WHERE id LIKE $1";
127
+ _removeSql ?? = $ "DELETE FROM { _tablePrefix } _effects WHERE id LIKE $1";
122
128
123
129
var id = Escaper . Escape ( functionId . TypeId . Value , functionId . InstanceId . Value ) + $ "{ Escaper . Separator } %";
124
- await using var command = new NpgsqlCommand ( sql , conn )
130
+ await using var command = new NpgsqlCommand ( _removeSql , conn )
125
131
{
126
132
Parameters = { new ( ) { Value = id } }
127
133
} ;
0 commit comments