Storage to uuids
This commit is contained in:
@@ -19,42 +19,40 @@ const (
|
||||
Modified = "modified"
|
||||
Connections = "connections"
|
||||
Attachments = "attachments"
|
||||
Location = "location"
|
||||
)
|
||||
|
||||
type One struct {
|
||||
ID string `bson:"_id,omitempty" json:"_id,omitempty"`
|
||||
Name string `bson:"name,omitempty" json:"name,omitempty"`
|
||||
Type string `bson:"type,omitempty" json:"type,omitempty"`
|
||||
Title string `bson:"title,omitempty" json:"title,omitempty"`
|
||||
Text string `bson:"text,omitempty" json:"text,omitempty"`
|
||||
Relationship string `bson:"relationship,omitempty" json:"relationship,omitempty"`
|
||||
Modified int64 `bson:"modified,omitempty" json:"modified,omitempty"`
|
||||
Connections map[string]One `bson:"connections" json:"connections,omitempty"`
|
||||
Attachments map[string]string `bson:"attachments" json:"attachments,omitempty"`
|
||||
ID string `bson:"_id,omitempty" json:"_id"`
|
||||
Name string `bson:"name,omitempty" json:"name"`
|
||||
Type string `bson:"type,omitempty" json:"type"`
|
||||
Title string `bson:"title,omitempty" json:"title"`
|
||||
Text string `bson:"text,omitempty" json:"text"`
|
||||
Modified int64 `bson:"modified,omitempty" json:"modified"`
|
||||
Connections map[string]Connection `bson:"connections" json:"connections"`
|
||||
Attachments map[string]Attachment `bson:"attachments" json:"attachments"`
|
||||
}
|
||||
|
||||
func (o One) Query() One {
|
||||
return One{Name: o.Name}
|
||||
type Connection struct {
|
||||
Relationship string `bson:"relationship,omitempty" json:"relationship"`
|
||||
}
|
||||
|
||||
func (o One) Peer() One {
|
||||
return One{
|
||||
Name: o.Name,
|
||||
Type: o.Type,
|
||||
Title: o.Title,
|
||||
Relationship: o.Relationship,
|
||||
Modified: o.Modified,
|
||||
}
|
||||
type Attachment struct {
|
||||
Location string `bson:"location,omitempty" json:"location"`
|
||||
}
|
||||
|
||||
func (o One) Query() bson.M {
|
||||
return bson.M{ID: o.ID}
|
||||
}
|
||||
|
||||
func (o One) Peers() []string {
|
||||
names := make([]string, len(o.Connections))
|
||||
ids := make([]string, len(o.Connections))
|
||||
i := 0
|
||||
for k := range o.Connections {
|
||||
names[i] = o.Connections[k].Name
|
||||
ids[i] = k
|
||||
i += 1
|
||||
}
|
||||
return names
|
||||
return ids
|
||||
}
|
||||
|
||||
func (o One) MarshalBSON() ([]byte, error) {
|
||||
@@ -62,6 +60,12 @@ func (o One) MarshalBSON() ([]byte, error) {
|
||||
if !isMin {
|
||||
o.Modified = time.Now().UnixNano()
|
||||
}
|
||||
if o.Connections == nil {
|
||||
o.Connections = make(map[string]Connection)
|
||||
}
|
||||
if o.Attachments == nil {
|
||||
o.Attachments = make(map[string]Attachment)
|
||||
}
|
||||
b, err := json.Marshal(o)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -76,36 +80,5 @@ func (o One) MarshalBSON() ([]byte, error) {
|
||||
m[k] = strings.TrimSpace(v.(string))
|
||||
}
|
||||
}
|
||||
if !isMin {
|
||||
connections := map[string]interface{}{}
|
||||
switch m[Connections].(type) {
|
||||
case nil:
|
||||
case map[string]interface{}:
|
||||
connections = m[Connections].(map[string]interface{})
|
||||
default:
|
||||
return nil, fmt.Errorf("bad connections type %T", m[Connections])
|
||||
}
|
||||
delete(connections, "")
|
||||
for k := range connections {
|
||||
if k == "" {
|
||||
continue
|
||||
}
|
||||
if o.Connections[k].Name == "" {
|
||||
p := o.Connections[k]
|
||||
p.Name = k
|
||||
o.Connections[k] = p
|
||||
}
|
||||
b, err := bson.Marshal(o.Connections[k])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
m := bson.M{}
|
||||
if err := bson.Unmarshal(b, &m); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
connections[k] = m
|
||||
}
|
||||
m[Connections] = connections
|
||||
}
|
||||
return bson.Marshal(m)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user