cmdb/internal/arangodb/vertex/update.go

34 lines
778 B
Go
Raw Normal View History

2023-01-25 13:40:44 +03:00
// Copyright 2022 Listware
package vertex
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.VertexCollection(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
}