36 lines
692 B
Go
36 lines
692 B
Go
// Copyright 2022 Listware
|
|
|
|
package query
|
|
|
|
import (
|
|
"context"
|
|
|
|
"git.fg-tech.ru/listware/cmdb/internal/arangodb"
|
|
driver "github.com/arangodb/go-driver"
|
|
)
|
|
|
|
func Query(ctx context.Context, client driver.Client, query string, vars map[string]any) (metas []driver.DocumentMeta, resp []map[string]any, err error) {
|
|
db, err := arangodb.Database(ctx, client)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
cursor, err := db.Query(ctx, query, vars)
|
|
if err != nil {
|
|
return
|
|
}
|
|
defer cursor.Close()
|
|
|
|
for cursor.HasMore() {
|
|
var obj map[string]any
|
|
|
|
meta, err := cursor.ReadDocument(ctx, &obj)
|
|
if err != nil {
|
|
return nil, nil, err
|
|
}
|
|
resp = append(resp, obj)
|
|
metas = append(metas, meta)
|
|
}
|
|
return
|
|
}
|