Skip to content
Snippets Groups Projects
Commit 5d68ff05 authored by thijsheijden's avatar thijsheijden
Browse files

Added query status messages

parent bbb4f41f
No related branches found
No related tags found
No related merge requests found
......@@ -23,6 +23,8 @@ func (s *Service) HandleMessage(msg *broker.Message) {
return
}
s.sendStatus("Received", &sessionID)
// Unmarshall the incoming message into an IncomingJSONQuery object
JSONQuery, err := query.UnmarshalJSON(&msg.Body)
if err != nil {
......@@ -46,6 +48,8 @@ func (s *Service) HandleMessage(msg *broker.Message) {
return
}
s.sendStatus("Translating", &sessionID)
// Convert the json byte msg to a query string
query, err := s.queryConverter.ConvertQuery(JSONQuery)
if err != nil {
......@@ -75,6 +79,8 @@ func (s *Service) HandleMessage(msg *broker.Message) {
}
s.producer.PublishMessage(&translationMsgBytes, &sessionID) // TODO: should this be a go routine?
s.sendStatus("Getting database credentials", &sessionID)
// Fetch database credentials from the user service
databaseInfo, err := s.databaseInfoService.GetDatabaseInfo(&clientID, &JSONQuery.DatabaseName)
if err != nil {
......@@ -87,6 +93,8 @@ func (s *Service) HandleMessage(msg *broker.Message) {
return
}
s.sendStatus("Processing on database", &sessionID)
// execute and retrieve result
// convert result to general (node-link) format
result, err := s.requestSender.ExecuteQuery(*query, databaseInfo.Username, databaseInfo.Password, databaseInfo.URL, databaseInfo.Port, databaseInfo.InternalDatabaseName)
......@@ -100,6 +108,8 @@ func (s *Service) HandleMessage(msg *broker.Message) {
return
}
s.sendStatus("Done", &sessionID)
// Add type indicator to result from database
// TODO: Change key 'values' to key 'value'
var res interface{}
......@@ -116,3 +126,18 @@ func (s *Service) HandleMessage(msg *broker.Message) {
s.producer.PublishMessage(&resultMsgBytes, &sessionID)
}
func (s *Service) sendStatus(status string, sessionID *string) {
msg := entity.MessageStruct{
Type: "query_status_update",
Value: status,
}
msgBytes, err := json.Marshal(msg)
if err != nil {
errorhandler.FailWithError(err, "Marshalling status update message went wrong")
return
}
s.producer.PublishMessage(&msgBytes, sessionID)
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment