@@ -14,10 +14,11 @@ public MySqlUnderlyingRegister(string connectionString, string tablePrefix = "")
14
14
_tablePrefix = tablePrefix ;
15
15
}
16
16
17
+ private string ? _initializeSql ;
17
18
public async Task Initialize ( )
18
19
{
19
20
await using var conn = await DatabaseHelper . CreateOpenConnection ( _connectionString ) ;
20
- var sql = @$ "
21
+ _initializeSql ?? = @$ "
21
22
CREATE TABLE IF NOT EXISTS { _tablePrefix } rfunctions_register (
22
23
registertype INT NOT NULL,
23
24
`group` VARCHAR(255) NOT NULL,
@@ -26,20 +27,21 @@ value VARCHAR(1024) NOT NULL,
26
27
PRIMARY KEY (registertype, `group`, name)
27
28
);" ;
28
29
29
- await using var command = new MySqlCommand ( sql , conn ) ;
30
+ await using var command = new MySqlCommand ( _initializeSql , conn ) ;
30
31
await command . ExecuteNonQueryAsync ( ) ;
31
32
}
32
-
33
+
34
+ private string ? _setIfEmptySql ;
33
35
public async Task < bool > SetIfEmpty ( RegisterType registerType , string group , string name , string value )
34
36
{
35
37
await using var conn = await DatabaseHelper . CreateOpenConnection ( _connectionString ) ;
36
- var sql = @$ "
38
+ _setIfEmptySql ?? = @$ "
37
39
INSERT IGNORE INTO { _tablePrefix } rfunctions_register
38
40
(registertype, `group`, name, value)
39
41
VALUES
40
42
(?, ?, ?, ?);" ;
41
43
42
- await using var command = new MySqlCommand ( sql , conn )
44
+ await using var command = new MySqlCommand ( _setIfEmptySql , conn )
43
45
{
44
46
Parameters =
45
47
{
@@ -53,18 +55,20 @@ INSERT IGNORE INTO {_tablePrefix}rfunctions_register
53
55
return affectedRows > 0 ;
54
56
}
55
57
58
+ private string ? _compareAndSwapUpdateSql ;
59
+ private string ? _compareAndSwapUpsertSql ;
56
60
public async Task < bool > CompareAndSwap ( RegisterType registerType , string group , string name , string newValue , string expectedValue , bool setIfEmpty = true )
57
61
{
58
62
await using var conn = await DatabaseHelper . CreateOpenConnection ( _connectionString ) ;
59
63
60
64
if ( ! setIfEmpty )
61
65
{
62
- var sql = @$ "
66
+ _compareAndSwapUpdateSql ?? = @$ "
63
67
UPDATE { _tablePrefix } rfunctions_register
64
68
SET value = ?
65
69
WHERE registertype = ? AND `group` = ? AND name = ? AND value = ?;" ;
66
70
67
- await using var command = new MySqlCommand ( sql , conn )
71
+ await using var command = new MySqlCommand ( _compareAndSwapUpdateSql , conn )
68
72
{
69
73
Parameters =
70
74
{
@@ -81,7 +85,7 @@ public async Task<bool> CompareAndSwap(RegisterType registerType, string group,
81
85
}
82
86
else
83
87
{
84
- var sql = @$ "
88
+ _compareAndSwapUpsertSql ?? = @$ "
85
89
START TRANSACTION;
86
90
DELETE FROM { _tablePrefix } rfunctions_register WHERE registertype = ? AND `group` = ? AND name = ? AND value = ?;
87
91
INSERT IGNORE INTO { _tablePrefix } rfunctions_register
@@ -90,7 +94,7 @@ INSERT IGNORE INTO {_tablePrefix}rfunctions_register
90
94
(?, ?, ?, ?);
91
95
COMMIT;" ;
92
96
93
- await using var command = new MySqlCommand ( sql , conn )
97
+ await using var command = new MySqlCommand ( _compareAndSwapUpsertSql , conn )
94
98
{
95
99
Parameters =
96
100
{
@@ -110,15 +114,16 @@ INSERT IGNORE INTO {_tablePrefix}rfunctions_register
110
114
}
111
115
}
112
116
117
+ private string ? _getSql ;
113
118
public async Task < string ? > Get ( RegisterType registerType , string group , string name )
114
119
{
115
120
await using var conn = await DatabaseHelper . CreateOpenConnection ( _connectionString ) ; ;
116
- var sql = @$ "
121
+ _getSql ?? = @$ "
117
122
SELECT value
118
123
FROM { _tablePrefix } rfunctions_register
119
124
WHERE registertype = ? AND `group` = ? AND name = ?;" ;
120
125
121
- await using var command = new MySqlCommand ( sql , conn )
126
+ await using var command = new MySqlCommand ( _getSql , conn )
122
127
{
123
128
Parameters =
124
129
{
@@ -135,13 +140,14 @@ SELECT value
135
140
return default ;
136
141
}
137
142
143
+ private string ? _conditionalDeleteSql ;
138
144
public async Task < bool > Delete ( RegisterType registerType , string group , string name , string expectedValue )
139
145
{
140
146
await using var conn = await DatabaseHelper . CreateOpenConnection ( _connectionString ) ;
141
147
142
- var sql = @ $ "DELETE FROM { _tablePrefix } rfunctions_register WHERE registertype = ? AND `group` = ? AND name = ? AND value = ?;";
148
+ _conditionalDeleteSql ??= $ "DELETE FROM { _tablePrefix } rfunctions_register WHERE registertype = ? AND `group` = ? AND name = ? AND value = ?;";
143
149
144
- await using var command = new MySqlCommand ( sql , conn )
150
+ await using var command = new MySqlCommand ( _conditionalDeleteSql , conn )
145
151
{
146
152
Parameters =
147
153
{
@@ -156,13 +162,14 @@ public async Task<bool> Delete(RegisterType registerType, string group, string n
156
162
return affectedRows > 0 ;
157
163
}
158
164
165
+ private string ? _deleteSql ;
159
166
public async Task Delete ( RegisterType registerType , string group , string name )
160
167
{
161
168
await using var conn = await DatabaseHelper . CreateOpenConnection ( _connectionString ) ;
162
169
163
- var sql = @ $ "DELETE FROM { _tablePrefix } rfunctions_register WHERE registertype = ? AND `group` = ? AND name = ?;";
170
+ _deleteSql ??= $ "DELETE FROM { _tablePrefix } rfunctions_register WHERE registertype = ? AND `group` = ? AND name = ?;";
164
171
165
- await using var command = new MySqlCommand ( sql , conn )
172
+ await using var command = new MySqlCommand ( _deleteSql , conn )
166
173
{
167
174
Parameters =
168
175
{
@@ -174,15 +181,16 @@ public async Task Delete(RegisterType registerType, string group, string name)
174
181
await command . ExecuteScalarAsync ( ) ;
175
182
}
176
183
184
+ private string ? _existsSql ;
177
185
public async Task < bool > Exists ( RegisterType registerType , string group , string name )
178
186
{
179
187
await using var conn = await DatabaseHelper . CreateOpenConnection ( _connectionString ) ; ;
180
- var sql = @$ "
188
+ _existsSql ?? = @$ "
181
189
SELECT COUNT(*)
182
190
FROM { _tablePrefix } rfunctions_register
183
191
WHERE registertype = ? AND `group` = ? AND name = ?;" ;
184
192
185
- await using var command = new MySqlCommand ( sql , conn )
193
+ await using var command = new MySqlCommand ( _existsSql , conn )
186
194
{
187
195
Parameters =
188
196
{
@@ -196,20 +204,22 @@ SELECT COUNT(*)
196
204
return count > 0 ;
197
205
}
198
206
207
+ private string ? _dropUnderlyingTableSql ;
199
208
public async Task DropUnderlyingTable ( )
200
209
{
201
210
await using var conn = await DatabaseHelper . CreateOpenConnection ( _connectionString ) ;
202
- var sql = $ "DROP TABLE IF EXISTS { _tablePrefix } rfunctions_register";
211
+ _dropUnderlyingTableSql ?? = $ "DROP TABLE IF EXISTS { _tablePrefix } rfunctions_register";
203
212
204
- await using var command = new MySqlCommand ( sql , conn ) ;
213
+ await using var command = new MySqlCommand ( _dropUnderlyingTableSql , conn ) ;
205
214
await command . ExecuteNonQueryAsync ( ) ;
206
215
}
207
216
217
+ private string ? _truncateTableSql ;
208
218
public async Task TruncateTable ( )
209
219
{
210
220
await using var conn = await DatabaseHelper . CreateOpenConnection ( _connectionString ) ;
211
- var sql = $ "TRUNCATE TABLE { _tablePrefix } rfunctions_register";
212
- var command = new MySqlCommand ( sql , conn ) ;
221
+ _truncateTableSql ?? = $ "TRUNCATE TABLE { _tablePrefix } rfunctions_register";
222
+ var command = new MySqlCommand ( _truncateTableSql , conn ) ;
213
223
await command . ExecuteNonQueryAsync ( ) ;
214
224
}
215
225
}
0 commit comments