@@ -122,14 +122,11 @@ func columnsHandler(w http.ResponseWriter, r *http.Request) {
122
122
return
123
123
}
124
124
125
- // If a live database has been uploaded but doesn't have a live node handling its requests, then create one
125
+ // If a live database has been uploaded but doesn't have a live node handling its requests, then error out as this
126
+ // should never happen
126
127
if isLive && liveNode == "" {
127
- // Send a request to the AMQP backend to setup a node with the database
128
- err = com .LiveCreateDB (com .AmqpChan , dbOwner , dbName , com .SetToPrivate )
129
- if err != nil {
130
- jsonErr (w , err .Error (), http .StatusInternalServerError )
131
- return
132
- }
128
+ jsonErr (w , "No AMQP node available for request" , http .StatusInternalServerError )
129
+ return
133
130
}
134
131
135
132
// If it's a standard database, process it locally. Else send the query to our AMQP backend
@@ -366,57 +363,43 @@ func deleteHandler(w http.ResponseWriter, r *http.Request) {
366
363
}
367
364
}
368
365
369
- // Delete the database
370
- err = com .DeleteDatabase (dbOwner , dbName )
371
- if err != nil {
372
- jsonErr (w , err .Error (), http .StatusInternalServerError )
373
- return
374
- }
375
-
376
366
// For a live database, delete it from both Minio and our AMQP backend
367
+ var bucket , id string
377
368
if isLive {
378
- // Delete the database from Minio
379
- bucket := fmt .Sprintf ("live-%s" , dbOwner )
380
- id := dbName
381
- err = com .MinioDeleteDatabase ("API server" , dbOwner , dbName , bucket , id )
369
+ // Get the Minio bucket and object names for this database
370
+ bucket , id , err = com .LiveGetMinioNames (loggedInUser , dbOwner , dbName )
382
371
if err != nil {
383
372
jsonErr (w , err .Error (), http .StatusInternalServerError )
384
373
return
385
374
}
386
375
387
- // Delete the database from our AMQP backend
388
- var rawResponse []byte
389
- rawResponse , err = com .MQRequest (com .AmqpChan , liveNode , "delete" , loggedInUser , dbOwner , dbName , "" )
376
+ // Delete the database from Minio
377
+ err = com .MinioDeleteDatabase ("API server" , dbOwner , dbName , bucket , id )
390
378
if err != nil {
391
379
jsonErr (w , err .Error (), http .StatusInternalServerError )
392
- log .Println (err )
393
380
return
394
381
}
395
382
396
- // Decode the response
397
- var resp com.LiveDBErrorResponse
398
- err = json .Unmarshal (rawResponse , & resp )
383
+ // Delete the database from our AMQP backend
384
+ err = com .LiveDelete (liveNode , loggedInUser , dbOwner , dbName )
399
385
if err != nil {
400
386
jsonErr (w , err .Error (), http .StatusInternalServerError )
401
- log .Println (err )
402
- return
403
- }
404
- if resp .Error != "" {
405
- err = errors .New (resp .Error )
406
- jsonErr (w , err .Error (), http .StatusInternalServerError )
407
- return
408
- }
409
- if resp .Node == "" {
410
- log .Printf ("In API (Live) deleteHandler(). A node responded, but didn't identify itself." )
411
387
return
412
388
}
413
389
}
414
390
391
+ // Delete the database in PostgreSQL
392
+ err = com .DeleteDatabase (dbOwner , dbName )
393
+ if err != nil {
394
+ jsonErr (w , err .Error (), http .StatusInternalServerError )
395
+ return
396
+ }
397
+
415
398
// Return a "success" message
416
399
z := com.StatusResponseContainer {Status : "OK" }
417
400
jsonData , err := json .MarshalIndent (z , "" , " " )
418
401
if err != nil {
419
- log .Printf ("Error when JSON marshalling returned data in deleteHandler(): %v\n " , err )
402
+ log .Printf ("Error when JSON marshalling returned data in deleteHandler(): %v" , err )
420
403
jsonErr (w , err .Error (), http .StatusInternalServerError )
421
404
return
422
405
}
@@ -684,15 +667,11 @@ func executeHandler(w http.ResponseWriter, r *http.Request) {
684
667
return
685
668
}
686
669
687
- // If a live database has been uploaded but doesn't have a live node handling its requests, then create one
670
+ // If a live database has been uploaded but doesn't have a live node handling its requests, then error out as this
671
+ // should never happen
688
672
if isLive && liveNode == "" {
689
- // Send a request to the AMQP backend to set up the database there, ready for querying
690
- err = com .LiveCreateDB (com .AmqpChan , dbOwner , dbName , com .SetToPrivate )
691
- if err != nil {
692
- log .Println (err ) // FIXME: Debug output while developing
693
- jsonErr (w , err .Error (), http .StatusInternalServerError )
694
- return
695
- }
673
+ jsonErr (w , "No AMQP node available for request" , http .StatusInternalServerError )
674
+ return
696
675
}
697
676
698
677
// Send the SQL execution request to our AMQP backend
@@ -737,14 +716,11 @@ func indexesHandler(w http.ResponseWriter, r *http.Request) {
737
716
return
738
717
}
739
718
740
- // If a live database has been uploaded but doesn't have a live node handling its requests, then create one
719
+ // If a live database has been uploaded but doesn't have a live node handling its requests, then error out as this
720
+ // should never happen
741
721
if isLive && liveNode == "" {
742
- // Send a request to the AMQP backend to set up a node with the database
743
- err = com .LiveCreateDB (com .AmqpChan , dbOwner , dbName , com .SetToPrivate )
744
- if err != nil {
745
- jsonErr (w , err .Error (), http .StatusInternalServerError )
746
- return
747
- }
722
+ jsonErr (w , "No AMQP node available for request" , http .StatusInternalServerError )
723
+ return
748
724
}
749
725
750
726
// If it's a standard database, process it locally. Else send the query to our AMQP backend
@@ -937,15 +913,11 @@ func queryHandler(w http.ResponseWriter, r *http.Request) {
937
913
return
938
914
}
939
915
940
- // If a live database has been uploaded but doesn't have a live node handling its requests, then create one
916
+ // If a live database has been uploaded but doesn't have a live node handling its requests, then error out as this
917
+ // should never happen
941
918
if isLive && liveNode == "" {
942
- // Send a request to the AMQP backend to set up the database there, ready for querying
943
- err = com .LiveCreateDB (com .AmqpChan , dbOwner , dbName , com .SetToPrivate )
944
- if err != nil {
945
- log .Println (err ) // FIXME: Debug output while developing
946
- jsonErr (w , err .Error (), http .StatusInternalServerError )
947
- return
948
- }
919
+ jsonErr (w , "No AMQP node available for request" , http .StatusInternalServerError )
920
+ return
949
921
}
950
922
951
923
// Run the query
@@ -1068,14 +1040,11 @@ func tablesHandler(w http.ResponseWriter, r *http.Request) {
1068
1040
return
1069
1041
}
1070
1042
1071
- // If a live database has been uploaded but doesn't have a live node handling its requests, then create one
1043
+ // If a live database has been uploaded but doesn't have a live node handling its requests, then error out as this
1044
+ // should never happen
1072
1045
if isLive && liveNode == "" {
1073
- // Send a request to the AMQP backend to setup a node with the database
1074
- err = com .LiveCreateDB (com .AmqpChan , dbOwner , dbName , com .SetToPrivate )
1075
- if err != nil {
1076
- jsonErr (w , err .Error (), http .StatusInternalServerError )
1077
- return
1078
- }
1046
+ jsonErr (w , "No AMQP node available for request" , http .StatusInternalServerError )
1047
+ return
1079
1048
}
1080
1049
1081
1050
// If it's a standard database, process it locally. Else send the query to our AMQP backend
@@ -1335,7 +1304,7 @@ func uploadHandler(w http.ResponseWriter, r *http.Request) {
1335
1304
}
1336
1305
1337
1306
// Store the database in Minio
1338
- err = com .LiveStoreDatabaseMinio (tempDB , dbOwner , dbName , numBytes )
1307
+ objectID , err : = com .LiveStoreDatabaseMinio (tempDB , dbOwner , dbName , numBytes )
1339
1308
if err != nil {
1340
1309
jsonErr (w , err .Error (), http .StatusInternalServerError )
1341
1310
return
@@ -1346,7 +1315,7 @@ func uploadHandler(w http.ResponseWriter, r *http.Request) {
1346
1315
com .SanitiseLogString (dbOwner ), com .SanitiseLogString (dbName ), numBytes )
1347
1316
1348
1317
// Send a request to the AMQP backend to set up the database there, ready for querying
1349
- err = com .LiveCreateDB (com .AmqpChan , dbOwner , dbName , com .SetToPrivate )
1318
+ err = com .LiveCreateDB (com .AmqpChan , dbOwner , dbName , objectID , com .SetToPrivate )
1350
1319
if err != nil {
1351
1320
log .Println (err )
1352
1321
jsonErr (w , err .Error (), http .StatusInternalServerError )
@@ -1405,14 +1374,11 @@ func viewsHandler(w http.ResponseWriter, r *http.Request) {
1405
1374
return
1406
1375
}
1407
1376
1408
- // If a live database has been uploaded but doesn't have a live node handling its requests, then create one
1377
+ // If a live database has been uploaded but doesn't have a live node handling its requests, then error out as this
1378
+ // should never happen
1409
1379
if isLive && liveNode == "" {
1410
- // Send a request to the AMQP backend to setup a node with the database
1411
- err = com .LiveCreateDB (com .AmqpChan , dbOwner , dbName , com .SetToPrivate )
1412
- if err != nil {
1413
- jsonErr (w , err .Error (), http .StatusInternalServerError )
1414
- return
1415
- }
1380
+ jsonErr (w , "No AMQP node available for request" , http .StatusInternalServerError )
1381
+ return
1416
1382
}
1417
1383
1418
1384
// If it's a standard database, process it locally. Else send the query to our AMQP backend
0 commit comments