-
Notifications
You must be signed in to change notification settings - Fork 2
/
EiffelEventLinkV1.go
67 lines (57 loc) · 2.14 KB
/
EiffelEventLinkV1.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
// Copyright Axis Communications AB.
//
// For a full list of individual contributors, please see the commit history.
//
// 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.
// THIS FILE IS AUTOMATICALLY GENERATED AND MUST NOT BE EDITED BY HAND.
package eiffelevents
// EventLinksV1 represents a slice of EventLinkV1 values with helper methods
// for adding new links.
type EventLinksV1 []EventLinkV1
var _ LinkFinder = &EventLinksV1{}
// Add adds a new link of the specified type to a target event.
func (links *EventLinksV1) Add(linkType string, target MetaTeller) {
*links = append(*links, EventLinkV1{Target: target.ID(), Type: linkType})
}
// AddByID adds a new link of the specified type to a target event identified by an ID.
func (links *EventLinksV1) AddByID(linkType string, target string) {
*links = append(*links, EventLinkV1{Target: target, Type: linkType})
}
// FindAll returns the IDs of all links of the specified type, or an empty
// slice if no such links are found.
func (links EventLinksV1) FindAll(linkType string) []string {
result := make([]string, 0, len(links))
for _, link := range links {
if link.Type == linkType {
result = append(result, link.Target)
}
}
return result
}
// FindFirst returns the ID of the first encountered link of the specified
// type, or an empty string if no such link is found.
func (links EventLinksV1) FindFirst(linkType string) string {
for _, link := range links {
if link.Type == linkType {
return link.Target
}
}
return ""
}
type EventLinkV1 struct {
// Mandatory fields
Target string `json:"target"`
Type string `json:"type"`
// Optional fields
DomainID string `json:"domainId,omitempty"`
}