From eb09c51d18412c3a6a12e85cca075df4bb74ba19 Mon Sep 17 00:00:00 2001
From: Fjodor <fjodor_rs@hotmail.com>
Date: Tue, 30 Mar 2021 16:19:21 +0200
Subject: [PATCH] Co-authored-by: Jacob Hemming. Implementatie query request
 naar db

implementatie query request naar database en ontvangen en verwerken resultaat naar JSON
---
 go.mod     |  2 ++
 go.sum     | 42 ++++++++++++++++++++++++
 request.go | 95 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 test.json  | 17 ++++++++++
 4 files changed, 156 insertions(+)
 create mode 100644 go.sum
 create mode 100644 request.go
 create mode 100644 test.json

diff --git a/go.mod b/go.mod
index f3327ac..ddb2856 100644
--- a/go.mod
+++ b/go.mod
@@ -1,3 +1,5 @@
 module query-service
 
 go 1.15
+
+require github.com/arangodb/go-driver v0.0.0-20210304082257-d7e0ea043b7f // indirect
diff --git a/go.sum b/go.sum
new file mode 100644
index 0000000..07ff434
--- /dev/null
+++ b/go.sum
@@ -0,0 +1,42 @@
+github.com/arangodb/go-driver v0.0.0-20210304082257-d7e0ea043b7f h1:MEdxM6EhSFo2ecumBN0CC6s1zMWDpNvcmDIHEfMvl18=
+github.com/arangodb/go-driver v0.0.0-20210304082257-d7e0ea043b7f/go.mod h1:3NUekcRLpgheFIGEwcOvxilEW73MV1queNKW58k7sdc=
+github.com/arangodb/go-velocypack v0.0.0-20200318135517-5af53c29c67e h1:Xg+hGrY2LcQBbxd0ZFdbGSyRKTYMZCfBbw/pMJFOk1g=
+github.com/arangodb/go-velocypack v0.0.0-20200318135517-5af53c29c67e/go.mod h1:mq7Shfa/CaixoDxiyAAc5jZ6CVBAyPaNQCGS7mkj4Ho=
+github.com/coreos/go-iptables v0.4.3/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU=
+github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/dchest/uniuri v0.0.0-20160212164326-8902c56451e9/go.mod h1:GgB8SF9nRG+GqaDtLcwJZsQFhcogVCJ79j4EdT0c2V4=
+github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
+github.com/google/addlicense v0.0.0-20200817051935-6f4cd4aacc89/go.mod h1:EMjYTRimagHs1FwlIqKyX3wAM0u3rA+McvlIIWmSamA=
+github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ=
+github.com/rs/zerolog v1.19.0/go.mod h1:IzD0RJ65iWH0w97OQQebJEvTZYvsCUm9WVLWBQrJRjo=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
+github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/tools v0.0.0-20190828213141-aed303cbaa74/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20200818005847-188abfa75333/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
diff --git a/request.go b/request.go
new file mode 100644
index 0000000..d225cb1
--- /dev/null
+++ b/request.go
@@ -0,0 +1,95 @@
+package main
+
+import (
+	"context"
+	"fmt"
+
+	"encoding/json"
+	"io/ioutil"
+
+	driver "github.com/arangodb/go-driver"
+	"github.com/arangodb/go-driver/http"
+)
+
+// Document with Empty struct to retrieve all data from the DB Document
+type Document map[string]interface{}
+
+// GeneralFormat is a generalformat to send data the frontend
+type GeneralFormat map[string]interface{}
+
+//attr interface{}
+
+//map[1 , 2 , 3 map [ .. ]]
+
+func main() {
+	conn, err := http.NewConnection(http.ConnectionConfig{
+		Endpoints: []string{"http://localhost:8529"},
+	})
+	if err != nil {
+		fmt.Printf("auwa das tut weh") // Handle error
+	}
+	c, err := driver.NewClient(driver.ClientConfig{
+		Connection:     conn,
+		Authentication: driver.BasicAuthentication("root", "openSesame"),
+	})
+	if err != nil {
+		fmt.Printf("doet het niet") // Handle error
+	}
+
+	ctx := context.Background()
+	db, err := c.Database(ctx, "_system")
+	if err != nil {
+		// handle error
+	}
+
+	query := "FOR d IN Characters LIMIT 10 RETURN d"
+	cursor, err := db.Query(ctx, query, nil)
+
+	if err != nil {
+		fmt.Printf("shalom") // handle error
+	}
+	defer cursor.Close()
+	for {
+		var doc Document
+		_, err := cursor.ReadDocument(ctx, &doc)
+		if driver.IsNoMoreDocuments(err) {
+			break
+		} else if err != nil {
+			// handle other errors
+		}
+		//fmt.Printf("%T\n", doc)
+		formatToJSON(doc)
+	}
+
+}
+
+func formatToJSON(doc Document) {
+	//b, err := json.Marshal(doc)
+	//if err != nil {
+	//handle error
+	//}
+
+	data := parseData(doc)
+	fmt.Println(data)
+	file, _ := json.MarshalIndent(data, "", " ")
+
+	_ = ioutil.WriteFile("test.json", file, 0644)
+}
+
+func parseData(doc Document) Document {
+	data := make(Document)
+	data["_id"] = doc["_id"]
+	delete(doc, "_id")
+	data["_key"] = doc["_key"]
+	delete(doc, "_key")
+	data["_rev"] = doc["_rev"]
+	delete(doc, "_rev")
+	data["attributes"] = doc
+
+	//delete(doc, "_key")
+	//data.rev = fmt.Sprintf("%v", doc["_rev"])
+
+	// delete(doc, "_rev")
+	// data.attr = doc
+	return data
+}
diff --git a/test.json b/test.json
new file mode 100644
index 0000000..b010e0b
--- /dev/null
+++ b/test.json
@@ -0,0 +1,17 @@
+{
+ "_id": "Characters/JonSnow",
+ "_key": "JonSnow",
+ "_rev": "_c-44iYG--C",
+ "attributes": {
+  "age": 16,
+  "alive": true,
+  "name": "Jon",
+  "surname": "Snow",
+  "traits": [
+   "A",
+   "B",
+   "C",
+   "F"
+  ]
+ }
+}
\ No newline at end of file
-- 
GitLab