-
Notifications
You must be signed in to change notification settings - Fork 19
/
observedproperty.go
executable file
·91 lines (72 loc) · 2.4 KB
/
observedproperty.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
package api
import (
"errors"
entities "github.com/gost/core"
gostErrors "github.com/gost/server/errors"
"github.com/gost/server/sensorthings/odata"
)
// GetObservedProperty todo
func (a *APIv1) GetObservedProperty(id interface{}, qo *odata.QueryOptions, path string) (*entities.ObservedProperty, error) {
op, err := a.db.GetObservedProperty(id, qo)
if err != nil {
return nil, err
}
a.SetLinks(op, qo)
return op, nil
}
// GetObservedPropertyByDatastream todo
func (a *APIv1) GetObservedPropertyByDatastream(datastreamID interface{}, qo *odata.QueryOptions, path string) (*entities.ObservedProperty, error) {
op, err := a.db.GetObservedPropertyByDatastream(datastreamID, qo)
if err != nil {
return nil, err
}
a.SetLinks(op, qo)
return op, nil
}
// GetObservedProperties todo
func (a *APIv1) GetObservedProperties(qo *odata.QueryOptions, path string) (*entities.ArrayResponse, error) {
ops, count, hasNext, err := a.db.GetObservedProperties(qo)
if err != nil {
return nil, err
}
for idx, item := range ops {
i := *item
a.SetLinks(&i, qo)
ops[idx] = &i
}
var data interface{} = ops
return a.createArrayResponse(count, hasNext, path, qo, data), nil
}
// PostObservedProperty todo
func (a *APIv1) PostObservedProperty(op *entities.ObservedProperty) (*entities.ObservedProperty, []error) {
_, err := containsMandatoryParams(op)
if err != nil {
return nil, err
}
nop, err2 := a.db.PostObservedProperty(op)
if err2 != nil {
return nil, []error{err2}
}
nop.SetAllLinks(a.config.GetExternalServerURI())
return nop, nil
}
// PatchObservedProperty patches a given ObservedProperty
func (a *APIv1) PatchObservedProperty(id interface{}, op *entities.ObservedProperty) (*entities.ObservedProperty, error) {
if op.Datastreams != nil {
return nil, gostErrors.NewBadRequestError(errors.New("Unable to deep patch ObservedProperty"))
}
return a.db.PatchObservedProperty(id, op)
}
// PutObservedProperty patches a given ObservedProperty
func (a *APIv1) PutObservedProperty(id interface{}, op *entities.ObservedProperty) (*entities.ObservedProperty, []error) {
nop, err2 := a.db.PutObservedProperty(id, op)
if err2 != nil {
return nil, []error{err2}
}
nop.SetAllLinks(a.config.GetExternalServerURI())
return nop, nil
}
// DeleteObservedProperty deletes a given ObservedProperty from the database
func (a *APIv1) DeleteObservedProperty(id interface{}) error {
return a.db.DeleteObservedProperty(id)
}