-
Notifications
You must be signed in to change notification settings - Fork 3
/
instance.go
92 lines (70 loc) · 1.6 KB
/
instance.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
package resource
import (
"reflect"
"github.com/jt0/gomer/data"
"github.com/jt0/gomer/gomerr"
)
type Instance interface {
Resource
data.Persistable
Id() string
}
func SaveInstance(i Instance) gomerr.Gomerr {
// TODO: Consider alt form w/ Updatable.Update() that separates resource from data
// if ge := u.Update(u); ge != nil {
// return ge
// }
if ge := i.metadata().dataStore.Update(i, nil); ge != nil {
return ge
}
return nil
}
type BaseInstance struct {
BaseResource
// persistedValues map[string]interface{}
}
func (i BaseInstance) TypeName() string {
return i.md.instanceName
}
func (i BaseInstance) NewQueryable() data.Queryable {
ct := i.metadata().collectionType
if ct == nil {
return nil
}
collection := reflect.New(ct.Elem()).Interface().(Collection)
collection.setSelf(collection)
collection.setMetadata(i.md)
collection.setSubject(i.Subject())
return collection
}
func (i BaseInstance) Id() string {
instanceId, ge := Id(reflect.ValueOf(i.self).Elem())
if ge != nil {
println("Unable to get id value for instance:\n", ge.Error())
}
return instanceId
}
func (BaseInstance) PreCreate() gomerr.Gomerr {
return nil
}
func (BaseInstance) PostCreate() gomerr.Gomerr {
return nil
}
func (BaseInstance) PreRead() gomerr.Gomerr {
return nil
}
func (BaseInstance) PostRead() gomerr.Gomerr {
return nil
}
func (BaseInstance) PreUpdate(Resource) gomerr.Gomerr {
return nil
}
func (BaseInstance) PostUpdate(Resource) gomerr.Gomerr {
return nil
}
func (BaseInstance) PreDelete() gomerr.Gomerr {
return nil
}
func (BaseInstance) PostDelete() gomerr.Gomerr {
return nil
}