@@ -54,6 +54,8 @@ interface MirrorNodeDeployConfigClass {
54
54
externalDatabaseHost : Optional < string > ;
55
55
externalDatabaseOwnerUsername : Optional < string > ;
56
56
externalDatabaseOwnerPassword : Optional < string > ;
57
+ externalDatabaseReadonlyUsername : Optional < string > ;
58
+ externalDatabaseReadonlyPassword : Optional < string > ;
57
59
}
58
60
59
61
interface Context {
@@ -102,6 +104,8 @@ export class MirrorNodeCommand extends BaseCommand {
102
104
flags . externalDatabaseHost ,
103
105
flags . externalDatabaseOwnerUsername ,
104
106
flags . externalDatabaseOwnerPassword ,
107
+ flags . externalDatabaseReadonlyUsername ,
108
+ flags . externalDatabaseReadonlyPassword ,
105
109
] ;
106
110
}
107
111
@@ -149,8 +153,10 @@ export class MirrorNodeCommand extends BaseCommand {
149
153
if ( config . useExternalDatabase ) {
150
154
const {
151
155
externalDatabaseHost : host ,
152
- externalDatabaseOwnerUsername : username ,
153
- externalDatabaseOwnerPassword : password ,
156
+ externalDatabaseOwnerUsername : ownerUsername ,
157
+ externalDatabaseOwnerPassword : ownerPassword ,
158
+ externalDatabaseReadonlyUsername : readonlyUsername ,
159
+ externalDatabaseReadonlyPassword : readonlyPassword ,
154
160
} = config ;
155
161
156
162
valuesArg += helpers . populateHelmArgs ( {
@@ -163,21 +169,24 @@ export class MirrorNodeCommand extends BaseCommand {
163
169
'db.name' : 'mirror_node' ,
164
170
165
171
// set the usernames
166
- 'db.owner.username' : username ,
167
- 'importer.db.username' : username ,
168
- 'grpc.db.username' : username ,
169
- 'restjava.db.username' : username ,
170
- 'web3.db.username' : username ,
171
- // Fixes problem where importer's V1.0__Init.sql migration fails
172
- // 'rest.db.username': username,
172
+ 'db.owner.username' : ownerUsername ,
173
+ 'importer.db.username' : ownerUsername ,
174
+
175
+ 'grpc.db.username' : readonlyUsername ,
176
+ 'restjava.db.username' : readonlyUsername ,
177
+ 'web3.db.username' : readonlyUsername ,
178
+
179
+ // TODO: Fixes a problem where importer's V1.0__Init.sql migration fails
180
+ // 'rest.db.username': readonlyUsername,
173
181
174
182
// set the passwords
175
- 'db.owner.password' : password ,
176
- 'importer.db.password' : password ,
177
- 'grpc.db.password' : password ,
178
- 'rest.db.password' : password ,
179
- 'restjava.db.password' : password ,
180
- 'web3.db.password' : password ,
183
+ 'db.owner.password' : ownerPassword ,
184
+ 'importer.db.password' : ownerPassword ,
185
+
186
+ 'grpc.db.password' : readonlyPassword ,
187
+ 'restjava.db.password' : readonlyPassword ,
188
+ 'web3.db.password' : readonlyPassword ,
189
+ 'rest.db.password' : readonlyPassword ,
181
190
} ) ;
182
191
}
183
192
@@ -206,6 +215,8 @@ export class MirrorNodeCommand extends BaseCommand {
206
215
flags . externalDatabaseHost ,
207
216
flags . externalDatabaseOwnerUsername ,
208
217
flags . externalDatabaseOwnerPassword ,
218
+ flags . externalDatabaseReadonlyUsername ,
219
+ flags . externalDatabaseReadonlyPassword ,
209
220
] ) ;
210
221
211
222
await self . configManager . executePrompt ( task , MirrorNodeCommand . DEPLOY_FLAGS_LIST ) ;
@@ -276,24 +287,35 @@ export class MirrorNodeCommand extends BaseCommand {
276
287
flags . externalDatabaseHost ,
277
288
flags . externalDatabaseOwnerUsername ,
278
289
flags . externalDatabaseOwnerPassword ,
290
+ flags . externalDatabaseReadonlyUsername ,
291
+ flags . externalDatabaseReadonlyPassword ,
279
292
] ) ;
280
- } else if ( ctx . config . useExternalDatabase ) {
281
- if (
282
- ! ctx . config . externalDatabaseHost ||
293
+ } else if (
294
+ ctx . config . useExternalDatabase &&
295
+ ( ! ctx . config . externalDatabaseHost ||
283
296
! ctx . config . externalDatabaseOwnerUsername ||
284
- ! ctx . config . externalDatabaseOwnerPassword
285
- ) {
286
- const missingFlags : CommandFlag [ ] = [ ] ;
287
- if ( ! ctx . config . externalDatabaseHost ) missingFlags . push ( flags . externalDatabaseHost ) ;
288
- if ( ! ctx . config . externalDatabaseOwnerUsername ) missingFlags . push ( flags . externalDatabaseOwnerUsername ) ;
289
- if ( ! ctx . config . externalDatabaseOwnerPassword ) missingFlags . push ( flags . externalDatabaseOwnerPassword ) ;
290
- if ( missingFlags . length ) {
291
- const errorMessage =
292
- 'There are missing values that need to be provided when' +
293
- `${ chalk . cyan ( `--${ flags . useExternalDatabase . name } ` ) } is provided: ` ;
294
-
295
- throw new SoloError ( `${ errorMessage } ${ missingFlags . map ( flag => `--${ flag . name } ` ) . join ( ', ' ) } ` ) ;
296
- }
297
+ ! ctx . config . externalDatabaseOwnerPassword ||
298
+ ! ctx . config . externalDatabaseReadonlyUsername ||
299
+ ! ctx . config . externalDatabaseReadonlyPassword )
300
+ ) {
301
+ const missingFlags : CommandFlag [ ] = [ ] ;
302
+ if ( ! ctx . config . externalDatabaseHost ) missingFlags . push ( flags . externalDatabaseHost ) ;
303
+ if ( ! ctx . config . externalDatabaseOwnerUsername ) missingFlags . push ( flags . externalDatabaseOwnerUsername ) ;
304
+ if ( ! ctx . config . externalDatabaseOwnerPassword ) missingFlags . push ( flags . externalDatabaseOwnerPassword ) ;
305
+
306
+ if ( ! ctx . config . externalDatabaseReadonlyUsername ) {
307
+ missingFlags . push ( flags . externalDatabaseReadonlyUsername ) ;
308
+ }
309
+ if ( ! ctx . config . externalDatabaseReadonlyPassword ) {
310
+ missingFlags . push ( flags . externalDatabaseReadonlyPassword ) ;
311
+ }
312
+
313
+ if ( missingFlags . length ) {
314
+ const errorMessage =
315
+ 'There are missing values that need to be provided when' +
316
+ `${ chalk . cyan ( `--${ flags . useExternalDatabase . name } ` ) } is provided: ` ;
317
+
318
+ throw new SoloError ( `${ errorMessage } ${ missingFlags . map ( flag => `--${ flag . name } ` ) . join ( ', ' ) } ` ) ;
297
319
}
298
320
}
299
321
0 commit comments