@@ -24,6 +24,7 @@ import {
24
24
startApplicationByUuid ,
25
25
startServiceByUuid ,
26
26
updateApplicationByUuid ,
27
+ updateEnvByServiceUuid ,
27
28
updateEnvsByServiceUuid ,
28
29
updateServiceByUuid
29
30
} from './client/sdk.gen.js'
@@ -216,15 +217,28 @@ export default class Coolify {
216
217
checkStatus ( )
217
218
} )
218
219
}
219
- private async createEnvsForService ( {
220
+ private async createOrUpdateEnv ( {
220
221
serviceUUID,
221
- envs
222
+ env
222
223
} : {
223
224
serviceUUID : string
224
- envs : { key : string ; value : string | undefined } [ ]
225
+ env : { key : string ; value : string | undefined }
225
226
} ) {
226
- for ( const env of envs ) {
227
- await createEnvByServiceUuid ( {
227
+ if ( ! env . value ) {
228
+ throw new Error ( `Env ${ env . key } has no value` )
229
+ }
230
+ const res = await updateEnvByServiceUuid ( {
231
+ client : this . client ,
232
+ path : {
233
+ uuid : serviceUUID
234
+ } ,
235
+ body : {
236
+ key : env . key ,
237
+ value : env . value
238
+ }
239
+ } )
240
+ if ( res . error && res . error . message === 'Environment variable not found.' ) {
241
+ const res2 = await createEnvByServiceUuid ( {
228
242
client : this . client ,
229
243
path : {
230
244
uuid : serviceUUID
@@ -234,6 +248,28 @@ export default class Coolify {
234
248
value : env . value
235
249
}
236
250
} )
251
+ if ( res2 . error ) {
252
+ throw new Error (
253
+ `Error creating env ${ env . key } for service ${ serviceUUID } : ${ res2 . error . message } `
254
+ )
255
+ }
256
+ }
257
+ }
258
+ private async createEnvsForService ( {
259
+ serviceUUID,
260
+ envs
261
+ } : {
262
+ serviceUUID : string
263
+ envs : { key : string ; value : string | undefined } [ ]
264
+ } ) {
265
+ for ( const env of envs ) {
266
+ if ( ! env . value ) {
267
+ throw new Error ( `Env ${ env . key } has no value` )
268
+ }
269
+ await this . createOrUpdateEnv ( {
270
+ serviceUUID,
271
+ env
272
+ } )
237
273
}
238
274
}
239
275
@@ -322,12 +358,9 @@ export default class Coolify {
322
358
// Generate a random 64-character deployment key
323
359
const deploymentKey = randomBytes ( 32 ) . toString ( 'hex' )
324
360
//Set the functions deployment key
325
- await createEnvByServiceUuid ( {
326
- client : this . client ,
327
- path : {
328
- uuid : backendServiceUUID
329
- } ,
330
- body : {
361
+ await this . createOrUpdateEnv ( {
362
+ serviceUUID : backendServiceUUID ,
363
+ env : {
331
364
key : 'SERVICE_SUPABASE_FUNCTIONS_DEPLOYMENT_KEY' ,
332
365
value : deploymentKey
333
366
}
@@ -412,12 +445,9 @@ export default class Coolify {
412
445
)
413
446
414
447
console . log ( `SERVICE_SUPABASE_URL: ${ supabase_url } ` )
415
- await createEnvByServiceUuid ( {
416
- client : this . client ,
417
- path : {
418
- uuid : backendServiceUUID
419
- } ,
420
- body : {
448
+ await this . createOrUpdateEnv ( {
449
+ serviceUUID : backendServiceUUID ,
450
+ env : {
421
451
key : 'SERVICE_SUPABASE_URL' ,
422
452
value : supabase_url
423
453
}
@@ -516,6 +546,16 @@ export default class Coolify {
516
546
ephemeral
517
547
} )
518
548
console . log ( `Backend service UUID: ${ backendServiceUUID } ` )
549
+ if ( backendServiceUUID !== '123' ) {
550
+ return {
551
+ serviceUUID : backendServiceUUID ,
552
+ appUUID : '123' ,
553
+ appURL : `https://${ deploymentName } .dev.pawtograder.net` ,
554
+ supabase_url,
555
+ supabase_service_role_key,
556
+ supabase_anon_key
557
+ }
558
+ }
519
559
520
560
const frontendAppName = `${ deploymentName } -frontend`
521
561
//If there is already a frontend app with the target name, delete it
0 commit comments