@@ -18,32 +18,35 @@ public PostgresStatesStore(string connectionString, string tablePrefix = "")
18
18
_tablePrefix = tablePrefix ;
19
19
}
20
20
21
+ private string ? _initializeSql ;
21
22
public async Task Initialize ( )
22
23
{
23
24
await using var conn = await CreateConnection ( ) ;
24
- var sql = @$ "
25
+ _initializeSql ?? = @$ "
25
26
CREATE TABLE IF NOT EXISTS { _tablePrefix } _states (
26
27
id VARCHAR(450) PRIMARY KEY,
27
28
state TEXT NOT NULL
28
29
);" ;
29
- var command = new NpgsqlCommand ( sql , conn ) ;
30
+ var command = new NpgsqlCommand ( _initializeSql , conn ) ;
30
31
await command . ExecuteNonQueryAsync ( ) ;
31
32
}
32
33
34
+ private string ? _truncateSql ;
33
35
public async Task Truncate ( )
34
36
{
35
37
await using var conn = await CreateConnection ( ) ;
36
- var sql = $ "TRUNCATE TABLE { _tablePrefix } _states";
37
- var command = new NpgsqlCommand ( sql , conn ) ;
38
+ _truncateSql ?? = $ "TRUNCATE TABLE { _tablePrefix } _states";
39
+ var command = new NpgsqlCommand ( _truncateSql , conn ) ;
38
40
await command . ExecuteNonQueryAsync ( ) ;
39
41
}
40
42
43
+ private string ? _upsertStateSql ;
41
44
public async Task UpsertState ( FunctionId functionId , StoredState storedState )
42
45
{
43
46
var ( functionTypeId , functionInstanceId ) = functionId ;
44
47
45
48
await using var conn = await CreateConnection ( ) ;
46
- var sql = $@ "
49
+ _upsertStateSql ?? = $@ "
47
50
INSERT INTO { _tablePrefix } _states
48
51
(id, state)
49
52
VALUES
@@ -52,7 +55,7 @@ ON CONFLICT (id)
52
55
DO
53
56
UPDATE SET state = EXCLUDED.state" ;
54
57
55
- await using var command = new NpgsqlCommand ( sql , conn )
58
+ await using var command = new NpgsqlCommand ( _upsertStateSql , conn )
56
59
{
57
60
Parameters =
58
61
{
@@ -64,14 +67,15 @@ ON CONFLICT (id)
64
67
await command . ExecuteNonQueryAsync ( ) ;
65
68
}
66
69
70
+ private string ? _getStatesSql ;
67
71
public async Task < IEnumerable < StoredState > > GetStates ( FunctionId functionId )
68
72
{
69
73
await using var conn = await CreateConnection ( ) ;
70
- var sql = @$ "
74
+ _getStatesSql ?? = @$ "
71
75
SELECT id, state
72
76
FROM { _tablePrefix } _states
73
77
WHERE id LIKE $1" ;
74
- await using var command = new NpgsqlCommand ( sql , conn )
78
+ await using var command = new NpgsqlCommand ( _getStatesSql , conn )
75
79
{
76
80
Parameters =
77
81
{
@@ -93,27 +97,29 @@ public async Task<IEnumerable<StoredState>> GetStates(FunctionId functionId)
93
97
return functions ;
94
98
}
95
99
100
+ private string ? _removeStateSql ;
96
101
public async Task RemoveState ( FunctionId functionId , StateId stateId )
97
102
{
98
103
await using var conn = await CreateConnection ( ) ;
99
- var sql = $ "DELETE FROM { _tablePrefix } _states WHERE id = $1";
104
+ _removeStateSql ?? = $ "DELETE FROM { _tablePrefix } _states WHERE id = $1";
100
105
101
106
var id = Escaper . Escape ( functionId . TypeId . Value , functionId . InstanceId . Value , stateId . Value ) ;
102
- await using var command = new NpgsqlCommand ( sql , conn )
107
+ await using var command = new NpgsqlCommand ( _removeStateSql , conn )
103
108
{
104
109
Parameters = { new ( ) { Value = id } }
105
110
} ;
106
111
107
112
await command . ExecuteNonQueryAsync ( ) ;
108
113
}
109
114
115
+ private string ? _removeSql ;
110
116
public async Task Remove ( FunctionId functionId )
111
117
{
112
118
await using var conn = await CreateConnection ( ) ;
113
- var sql = $ "DELETE FROM { _tablePrefix } _states WHERE id LIKE $1";
119
+ _removeSql ?? = $ "DELETE FROM { _tablePrefix } _states WHERE id LIKE $1";
114
120
115
121
var idPrefix = Escaper . Escape ( functionId . TypeId . Value , functionId . InstanceId . Value ) + $ "{ Escaper . Separator } %";
116
- await using var command = new NpgsqlCommand ( sql , conn )
122
+ await using var command = new NpgsqlCommand ( _removeSql , conn )
117
123
{
118
124
Parameters = { new ( ) { Value = idPrefix } }
119
125
} ;
0 commit comments