-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathinfo.go
158 lines (123 loc) · 3.47 KB
/
info.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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
package main
import (
"gopkg.in/mgo.v2"
"gopkg.in/mgo.v2/bson"
"sync"
"time"
)
type InfoDBInterface struct {
db *DBHandler
querylocker sync.Mutex
conf *Config
}
type InfoRecord struct {
Name string `storm:"id",json:"userid"`
Description string `json:"description"`
RecordType string `json:"recordtype"` // satellite/element/resource/skill/user/location
ThumbnailURL string `json:"thumbnailurl"`
ImageURL string `json:"imageurl"`
Color int `json:"color"`
Satellite SatelliteRecord
Element ElementRecord
Resource ResourceRecord
Skill SkillRecord
User UserRecord
Location LocationRecord
Position string
EditorID string `json:"editorid"`
}
type SatelliteRecord struct {
SatelliteType string `json:"satellitetype"` // Planet/Moon
DiscoveredBy string
SystemZone string
Atmosphere string // float
Gravity string // float
SurfaceArea string // float
Biosphere string
NotableElements []string
//SatelliteCount int
Satellites []string
ParentSatellite string
TerraNullius string
Territories int
TerritoriesClaimed int
UserList []string `json:"users"`
LastWho time.Time `json:"lastwho"`
}
type UserRecord struct {
UserID string
OwnedLocations []string
CurrentLocation string
}
type LocationRecord struct {
Description string
}
type ElementRecord struct {
Description string
}
type ResourceRecord struct {
ResourceType string `json:"resourcetype"` // ore / refined /
Recipe RecipeRecord
Weight string
ResourceTier string
FoundOn []string
}
type SkillRecord struct {
}
type RecipeRecord struct {
RecipeName string
RecipeList []RecipeItem
}
type RecipeItem struct {
ElementType string
Volume string
}
// SaveRecordToDB function
func (h *InfoDBInterface) SaveRecordToDB(record InfoRecord, c mgo.Collection) (err error) {
h.querylocker.Lock()
defer h.querylocker.Unlock()
_, err = c.UpsertId(record.Name, record)
return err
}
// NewPlayerRecord function
func (h *InfoDBInterface) NewInfoRecord(name string, c mgo.Collection) (err error) {
record := InfoRecord{Name: name}
err = h.SaveRecordToDB(record, c)
return err
}
// GetRecordFromDB function
func (h *InfoDBInterface) GetRecordFromDB(name string, c mgo.Collection) (record InfoRecord, err error) {
h.querylocker.Lock()
defer h.querylocker.Unlock()
inforecord := InfoRecord{}
err = c.Find(bson.M{"name": name}).One(&inforecord)
return inforecord, err
}
// BackerInterface function
func (h *InfoDBInterface) GetAllInfoRecords(c mgo.Collection) (records []InfoRecord, err error) {
h.querylocker.Lock()
defer h.querylocker.Unlock()
err = c.Find(bson.M{}).All(&records)
return records, err
}
// BackerInterface function
func (h *InfoDBInterface) GetAllInfoResourceRecords(c mgo.Collection) (records []InfoRecord, err error) {
h.querylocker.Lock()
defer h.querylocker.Unlock()
err = c.Find(bson.M{"recordtype": "resource"}).All(&records)
return records, err
}
// BackerInterface function
func (h *InfoDBInterface) GetAllInfoSatelliteRecords(c mgo.Collection) (records []InfoRecord, err error) {
h.querylocker.Lock()
defer h.querylocker.Unlock()
err = c.Find(bson.M{"recordtype": "satellite"}).All(&records)
return records, err
}
// BackerInterface function
func (h *InfoDBInterface) GetAllMoonRecords(c mgo.Collection) (records []InfoRecord, err error) {
h.querylocker.Lock()
defer h.querylocker.Unlock()
err = c.Find(bson.M{"satellite.satellitetype": "moon"}).All(&records)
return records, err
}