diff --git a/internal/usecases/request/interface.go b/internal/usecases/request/interface.go index c54ca39d920bbcdc71452d14138e2603ed86a12b..329f583dc245f533d90e9a4f6a5479bf86dd3dbe 100644 --- a/internal/usecases/request/interface.go +++ b/internal/usecases/request/interface.go @@ -4,5 +4,5 @@ import "query-service/internal/entity" // UseCase is an interface describing the request usecases type UseCase interface { - SendAQLQuery(query string) (*map[string][]entity.Document, error) + SendAQLQuery(query string, username string, password string, hostname string, port int, database string) (*map[string][]entity.Document, error) } diff --git a/internal/usecases/request/request.go b/internal/usecases/request/request.go index bfcf2b4368897c94d64035a0cb12eb97422ef92c..9162f6f6858b852e5b3338a8d6b06af488ded687 100644 --- a/internal/usecases/request/request.go +++ b/internal/usecases/request/request.go @@ -3,8 +3,8 @@ package request import ( "context" "crypto/tls" + "fmt" "log" - "os" "query-service/internal/entity" "encoding/json" @@ -26,12 +26,10 @@ Parameters: AQLQuery is a string containing the query that will be send to the d Return: a map with two entries: "nodes" with a list of vertices/nodes and "edges" with a list of edges that will be returned to the frontend */ -func (s *Service) SendAQLQuery(AQLQuery string) (*map[string][]entity.Document, error) { - // Get ArangoDB url from environment variable - arangoURL := os.Getenv("ARANGO_HOST") +func (s *Service) SendAQLQuery(query string, username string, password string, hostname string, port int, database string) (*map[string][]entity.Document, error) { var queryResult = make(map[string][]entity.Document) conn, err := http.NewConnection(http.ConnectionConfig{ - Endpoints: []string{arangoURL}, + Endpoints: []string{fmt.Sprintf("%s:%d", hostname, port)}, TLSConfig: &tls.Config{InsecureSkipVerify: true}, }) if err != nil { @@ -40,7 +38,7 @@ func (s *Service) SendAQLQuery(AQLQuery string) (*map[string][]entity.Document, } c, err := driver.NewClient(driver.ClientConfig{ Connection: conn, - Authentication: driver.BasicAuthentication("root", "DikkeDraak"), + Authentication: driver.BasicAuthentication(username, password), }) if err != nil { log.Println("Could not log in to the ArangoDB") // Handle error @@ -48,14 +46,14 @@ func (s *Service) SendAQLQuery(AQLQuery string) (*map[string][]entity.Document, } ctx := context.Background() - db, err := c.Database(ctx, "_system") + db, err := c.Database(ctx, database) if err != nil { // handle error log.Println(err) return nil, err } - cursor, err := db.Query(ctx, AQLQuery, nil) + cursor, err := db.Query(ctx, query, nil) if err != nil { log.Println("Invalid query") // handle error return nil, err