This repository was archived by the owner on Dec 9, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.go.old
50 lines (42 loc) · 1.47 KB
/
index.go.old
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
package pbdb
import "github.com/toba/pbdb/index"
// saveIndexes iterates over indexable values indicated for a store.Value
// and saves or updates them.
func (c *Client) saveIndexes(key []byte, indexes index.Map) error {
if indexes.Definitions == nil || len(indexes.Definitions) == 0 {
return nil
}
var idx index.Index
for _, d := range indexes.Definitions {
if d.Unique {
idx = c.GetUniqueIndex(d.BucketName)
} else {
idx = c.GetNonUniqueIndex(d.BucketName)
}
err := idx.Add(key, d.Value)
if err != nil {
return err
}
}
return nil
}
// MakeUnique creates an index that
func (c *Client) MakeUniqueIndex(indexName []byte) (*index.Unique, error) {
return index.MakeUnique(c.Tx, indexName)
}
// UniqueIndex returns a pointer to the named, unique index.
func (c *Client) GetUniqueIndex(indexName []byte) *index.Unique {
return index.GetUnique(c.Tx, indexName)
}
// MakeNonUniqueIndex creates an index allowing multiple values to reference the same item key.
func (c *Client) MakeNonUniqueIndex(indexName []byte) (*index.NonUnique, error) {
return index.MakeNonUnique(c.Tx, indexName)
}
// NonUniqueIndex returns a pointer to the named, non-unique index.
func (c *Client) GetNonUniqueIndex(indexName []byte) *index.NonUnique {
return index.GetNonUnique(c.Tx, indexName)
}
// MakeRelation creates an index relating one item to another.
// func (c *Client) MakeRelation(indexName string) (*index.Relation, error) {
// return index.MakeRelation(c.Tx, indexName)
// }