diff --git a/arango/document-types.go b/arango/document-types.go index e888cfe..6d4ea6f 100644 --- a/arango/document-types.go +++ b/arango/document-types.go @@ -97,3 +97,11 @@ type LSNode_Edge struct { To string `json:"_to,omitempty"` Link string `json:"link,omitempty"` } + +type LSNode_Coordinates struct { + Key string `json:"_key,omitempty"` + ID string `json:"_id,omitempty"` + LsNodeKey string `json:"ls_node_key,omitempty"` + Latitude float64 `json:"latitude,omitempty"` + Longitude float64 `json:"longitude,omitempty"` +} diff --git a/arango/fetch.go b/arango/fetch.go index 49341db..bdb465e 100644 --- a/arango/fetch.go +++ b/arango/fetch.go @@ -15,6 +15,13 @@ func FetchLsNode(ctx context.Context, key string) LSNode { return document } +func FetchLsNodeCoordinates(ctx context.Context, key string) LSNode_Coordinates { + cursor := queryArangoDbDatabase(ctx, "FOR d IN LSNode_Coordinates FILTER d._key == \"" + key + "\" RETURN d"); + var document LSNode_Coordinates + readDocument(cursor.ReadDocument(ctx, &document)) + return document +} + func FetchLsLink(ctx context.Context, key string) LSLink { cursor := queryArangoDbDatabase(ctx, "FOR d IN LSLink FILTER d._key == \"" + key + "\" RETURN d"); var document LSLink @@ -60,6 +67,20 @@ func FetchAllLsNodes(ctx context.Context) []LSNode { return documents } +func FetchAllLsNodeCoordinates(ctx context.Context) []LSNode_Coordinates { + cursor := queryArangoDbDatabase(ctx, "FOR d IN LSNode_Coordinates RETURN d"); + var documents []LSNode_Coordinates + for { + var document LSNode_Coordinates + if (!readDocument(cursor.ReadDocument(ctx, &document))) { + break + } + documents = append(documents, document) + } + return documents +} + + func FetchAllLsLinks(ctx context.Context) []LSLink { cursor := queryArangoDbDatabase(ctx, "FOR d IN LSLink RETURN d"); var documents []LSLink diff --git a/model/class/class.go b/model/class/class.go index e159bf8..ad04dc8 100644 --- a/model/class/class.go +++ b/model/class/class.go @@ -8,6 +8,7 @@ const ( LsPrefix Class = "LSPrefix" LsSrv6Sid Class = "LSSRv6SID" LsNodeEdge Class = "LSNode_Edge" + LsNodeCoordinates Class = "LSNode_Coordinates" PhysicalInterface Class = "PhysicalInterface" LoopbackInterface Class = "LoopbackInterface" ) \ No newline at end of file diff --git a/model/property/class-properties.go b/model/property/class-properties.go index afeef5f..660aa87 100644 --- a/model/property/class-properties.go +++ b/model/property/class-properties.go @@ -97,6 +97,14 @@ var AllLsNodeEdgeProperties = []string{ Link, } +var AllLsNodeCoordinatesProperties = []string{ + Key, + Id, + LsNodeKey, + Latitude, + Longitude, +} + var AllPhysicalInterfaceProperties = []string{ DataRate, PacketsSent, diff --git a/model/property/property.go b/model/property/property.go index 2cb9dcb..25985d9 100644 --- a/model/property/property.go +++ b/model/property/property.go @@ -40,4 +40,7 @@ const ( From = "From" To = "To" Link = "Link" + LsNodeKey = "LsNodeKey" + Latitude = "Latitude" + Longitude = "Longitude" ) \ No newline at end of file diff --git a/model/topology/document-converters.go b/model/topology/document-converters.go index 30fd896..e02a492 100644 --- a/model/topology/document-converters.go +++ b/model/topology/document-converters.go @@ -25,6 +25,16 @@ func ConvertLsNode(doc arango.LSNode) LsNode { } } +func ConvertLsNodeCoordinates(doc arango.LSNode_Coordinates) LsNodeCoordinates { + return LsNodeCoordinates{ + Id: doc.ID, + Key: doc.Key, + LsNodeKey: doc.LsNodeKey, + Latitude: doc.Latitude, + Longitude: doc.Longitude, + } +} + func ConvertLsLink(doc arango.LSLink) LsLink { return LsLink{ Id: doc.ID, diff --git a/model/topology/documents.go b/model/topology/documents.go index 3af34f7..8be450f 100644 --- a/model/topology/documents.go +++ b/model/topology/documents.go @@ -21,6 +21,14 @@ type LsNode struct { IsAdjRibIn bool } +type LsNodeCoordinates struct { + Id string + Key string + LsNodeKey string + Latitude float64 + Longitude float64 +} + type LsLink struct { Id string Key string diff --git a/model/topology/marshalling.go b/model/topology/marshalling.go index 4d364eb..93f59c2 100644 --- a/model/topology/marshalling.go +++ b/model/topology/marshalling.go @@ -6,6 +6,10 @@ func (doc LsNode) MarshalBinary() ([]byte, error) { return json.Marshal(doc) } +func (doc LsNodeCoordinates) MarshalBinary() ([]byte, error) { + return json.Marshal(doc) +} + func (doc LsLink) MarshalBinary() ([]byte, error) { return json.Marshal(doc) }