-
Notifications
You must be signed in to change notification settings - Fork 79
/
database_graphs.go
93 lines (83 loc) · 4 KB
/
database_graphs.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
//
// DISCLAIMER
//
// Copyright 2017 ArangoDB GmbH, Cologne, Germany
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
// Copyright holder is ArangoDB GmbH, Cologne, Germany
//
// Author Ewout Prangsma
//
package driver
import "context"
const (
SatelliteGraph = -100
)
// DatabaseGraphs provides access to all graphs in a single database.
type DatabaseGraphs interface {
// Graph opens a connection to an existing graph within the database.
// If no graph with given name exists, an NotFoundError is returned.
Graph(ctx context.Context, name string) (Graph, error)
// GraphExists returns true if a graph with given name exists within the database.
GraphExists(ctx context.Context, name string) (bool, error)
// Graphs returns a list of all graphs in the database.
Graphs(ctx context.Context) ([]Graph, error)
// CreateGraph creates a new graph with given name and options, and opens a connection to it.
// If a graph with given name already exists within the database, a DuplicateError is returned.
// Deprecated: since ArangoDB 3.9 - please use CreateGraphV2 instead
CreateGraph(ctx context.Context, name string, options *CreateGraphOptions) (Graph, error)
// CreateGraphV2 creates a new graph with given name and options, and opens a connection to it.
// If a graph with given name already exists within the database, a DuplicateError is returned.
CreateGraphV2(ctx context.Context, name string, options *CreateGraphOptions) (Graph, error)
}
// CreateGraphOptions contains options that customize the creating of a graph.
type CreateGraphOptions struct {
// OrphanVertexCollections is an array of additional vertex collections used in the graph.
// These are vertices for which there are no edges linking these vertices with anything.
OrphanVertexCollections []string
// EdgeDefinitions is an array of edge definitions for the graph.
EdgeDefinitions []EdgeDefinition
// IsSmart defines if the created graph should be smart.
// This only has effect in Enterprise Edition.
IsSmart bool
// SmartGraphAttribute is the attribute name that is used to smartly shard the vertices of a graph.
// Every vertex in this Graph has to have this attribute.
// Cannot be modified later.
SmartGraphAttribute string
// NumberOfShards is the number of shards that is used for every collection within this graph.
// Cannot be modified later.
NumberOfShards int
// ReplicationFactor is the number of replication factor that is used for every collection within this graph.
// Cannot be modified later.
ReplicationFactor int
// WriteConcern is the number of min replication factor that is used for every collection within this graph.
// Cannot be modified later.
WriteConcern int
// IsDisjoint set isDisjoint flag for Graph. Required ArangoDB 3.7+
IsDisjoint bool
// Satellites contains an array of collection names that will be used to create SatelliteCollections for a Hybrid (Disjoint) SmartGraph (Enterprise Edition only)
// Requires ArangoDB 3.9+
Satellites []string `json:"satellites,omitempty"`
}
// EdgeDefinition contains all information needed to define a single edge in a graph.
type EdgeDefinition struct {
// The name of the edge collection to be used.
Collection string `json:"collection"`
// To contains the names of one or more vertex collections that can contain target vertices.
To []string `json:"to"`
// From contains the names of one or more vertex collections that can contain source vertices.
From []string `json:"from"`
// Options contains optional parameters
Options CreateEdgeCollectionOptions `json:"options,omitempty"`
}