Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package schemaStatsService
import (
"encoding/json"
"fmt"
"net/http"
"os"
"git.science.uu.nl/graphpolaris/go-common/structs"
"github.com/rs/zerolog/log"
)
/*
Handles incoming schema stat requests
authService: auth.UseCase, the usecase for the authentication service
produceService: produce.UseCase, the usecase for the producer service
Return: http.Handler, returns an http handler
*/
func (s *SchemaService) Handler(w http.ResponseWriter, r *http.Request) {
log.
Trace().
Str("schemaRequestHandler", "loading headers").
Msg("processing schema request")
// Publish a message into the query queue
// Grab the databaseName and cached bool from the request
var temp map[string]interface{}
err := json.NewDecoder(r.Body).Decode(&temp)
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
return
}
log.Trace().Str("schemaStatsRequestHandler", "processing body").Any("body", temp).Msg("processing schema stats request")
databaseName, ok := temp["databaseName"].(string)
if !ok {
w.WriteHeader(http.StatusBadRequest)
return
}
log.
Trace().
Str("schemaStatsRequestHandler - Databasename", databaseName).
Msg("processing schema stats request")
cached, ok := temp["cached"].(bool)
if !ok {
w.WriteHeader(http.StatusBadRequest)
return
}
// Pass request to schema usecase
sessionData := structs.SessionData{
UserID: "UserID",
SessionID: "SessionID",
DatabaseName: databaseName,
}
if os.Getenv("DEV") != "true" {
sessionData.UserID = r.Header["Userid"][0]
sessionData.SessionID = r.Header["Sessionid"][0]
}
body, err := json.Marshal(&temp) // json -> bytes
if err != nil {
w.WriteHeader(http.StatusBadRequest)
return
}
s.caching.RetrieveAsync(&body, fmt.Sprintf("%s-%s", sessionData.DatabaseName, sessionData.UserID), cached, sessionData, cached)
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
return
}
w.WriteHeader(http.StatusOK)
}