cmdb/internal/arangodb/edge/update.go
2023-01-25 13:40:44 +03:00

34 lines
777 B
Go

// Copyright 2022 Listware
package edge
import (
"context"
"encoding/json"
"git.fg-tech.ru/listware/cmdb/internal/arangodb"
driver "github.com/arangodb/go-driver"
)
func Update(ctx context.Context, client driver.Client, name, key string, payload any) (meta driver.DocumentMeta, resp map[string]any, err error) {
graph, err := arangodb.Graph(ctx, client)
if err != nil {
return
}
collection, _, err := graph.EdgeCollection(ctx, name)
if err != nil {
return
}
ctx = driver.WithReturnNew(ctx, &resp)
if b, ok := payload.([]byte); ok {
var req map[string]any
if err = json.Unmarshal(b, &req); err != nil {
return
}
meta, err = collection.ReplaceDocument(ctx, key, req)
return
}
meta, err = collection.ReplaceDocument(ctx, key, payload)
return
}