removed ScanType

This commit is contained in:
Josh Baker 2016-07-12 22:59:36 -06:00
parent 4656c4c8f3
commit 53ceb4ee2e
6 changed files with 18 additions and 42 deletions

View File

@ -150,7 +150,7 @@ func (c *Controller) aofshrink() {
objs := make(map[string]objFields)
c.mu.Lock()
fnames := col.FieldArr() // reload an array of field names to match each object
col.ScanGreaterOrEqual(nextID, 1, collection.TypeAll, false,
col.ScanGreaterOrEqual(nextID, 1, false,
func(id string, obj geojson.Object, fields []float64) bool {
if id != nextID {
objs[id] = objFields{obj, fields}

View File

@ -6,18 +6,6 @@ import (
"github.com/tidwall/tile38/index"
)
// ScanType is the classification of objects that are returned from Scan()
type ScanType int
const (
// TypeAll means to return all type during a Scan()
TypeAll = ScanType(0)
// TypeGeometry means to return only geometries
TypeGeometry = ScanType(1)
// TypeNonGeometry means to return non-geometries
TypeNonGeometry = ScanType(2)
)
const (
idOrdered = 0
valueOrdered = 1
@ -84,15 +72,8 @@ func New() *Collection {
}
// Count returns the number of objects in collection.
func (c *Collection) Count(stype ScanType) int {
switch stype {
default:
return c.objects + c.nobjects
case TypeGeometry:
return c.objects
case TypeNonGeometry:
return c.nobjects
}
func (c *Collection) Count() int {
return c.objects + c.nobjects
}
// PointCount returns the number of points (lat/lon coordinates) in collection.
@ -236,7 +217,7 @@ func (c *Collection) FieldArr() []string {
}
// Scan iterates though the collection ids. A cursor can be used for paging.
func (c *Collection) Scan(cursor uint64, stype ScanType, desc bool,
func (c *Collection) Scan(cursor uint64, desc bool,
iterator func(id string, obj geojson.Object, fields []float64) bool,
) (ncursor uint64) {
var i uint64
@ -258,7 +239,7 @@ func (c *Collection) Scan(cursor uint64, stype ScanType, desc bool,
}
// ScanGreaterOrEqual iterates though the collection starting with specified id. A cursor can be used for paging.
func (c *Collection) ScanRange(cursor uint64, stype ScanType, start, end string, desc bool,
func (c *Collection) ScanRange(cursor uint64, start, end string, desc bool,
iterator func(id string, obj geojson.Object, fields []float64) bool,
) (ncursor uint64) {
var i uint64
@ -281,7 +262,7 @@ func (c *Collection) ScanRange(cursor uint64, stype ScanType, start, end string,
}
// SearchValues iterates though the collection values. A cursor can be used for paging.
func (c *Collection) SearchValues(cursor uint64, stype ScanType, desc bool,
func (c *Collection) SearchValues(cursor uint64, desc bool,
iterator func(id string, obj geojson.Object, fields []float64) bool,
) (ncursor uint64) {
var i uint64
@ -303,7 +284,7 @@ func (c *Collection) SearchValues(cursor uint64, stype ScanType, desc bool,
}
// SearchValuesRange iterates though the collection values. A cursor can be used for paging.
func (c *Collection) SearchValuesRange(cursor uint64, stype ScanType, start, end string, desc bool,
func (c *Collection) SearchValuesRange(cursor uint64, start, end string, desc bool,
iterator func(id string, obj geojson.Object, fields []float64) bool,
) (ncursor uint64) {
var i uint64
@ -325,7 +306,7 @@ func (c *Collection) SearchValuesRange(cursor uint64, stype ScanType, start, end
}
// ScanGreaterOrEqual iterates though the collection starting with specified id. A cursor can be used for paging.
func (c *Collection) ScanGreaterOrEqual(id string, cursor uint64, stype ScanType, desc bool,
func (c *Collection) ScanGreaterOrEqual(id string, cursor uint64, desc bool,
iterator func(id string, obj geojson.Object, fields []float64) bool,
) (ncursor uint64) {
var i uint64

View File

@ -229,7 +229,7 @@ func (c *Controller) cmdDel(msg *server.Message) (res string, d commandDetailsT,
if col != nil {
d.obj, d.fields, ok = col.Remove(d.id)
if ok {
if col.Count(collection.TypeAll) == 0 {
if col.Count() == 0 {
c.deleteCol(d.key)
d.revert = func() {
c.setCol(d.key, col)

View File

@ -5,7 +5,6 @@ import (
"time"
"github.com/tidwall/resp"
"github.com/tidwall/tile38/controller/collection"
"github.com/tidwall/tile38/controller/glob"
"github.com/tidwall/tile38/controller/server"
"github.com/tidwall/tile38/geojson"
@ -40,9 +39,8 @@ func (c *Controller) cmdScan(msg *server.Message) (res string, err error) {
}
sw.writeHead()
if sw.col != nil {
stype := collection.TypeAll
if sw.output == outputCount && len(sw.wheres) == 0 && sw.globEverything == true {
count := sw.col.Count(stype) - int(s.cursor)
count := sw.col.Count() - int(s.cursor)
if count < 0 {
count = 0
}
@ -50,14 +48,14 @@ func (c *Controller) cmdScan(msg *server.Message) (res string, err error) {
} else {
g := glob.Parse(sw.globPattern, s.desc)
if g.Limits[0] == "" && g.Limits[1] == "" {
s.cursor = sw.col.Scan(s.cursor, stype, s.desc,
s.cursor = sw.col.Scan(s.cursor, s.desc,
func(id string, o geojson.Object, fields []float64) bool {
return sw.writeObject(id, o, fields, false)
},
)
} else {
s.cursor = sw.col.ScanRange(
s.cursor, stype, g.Limits[0], g.Limits[1], s.desc,
s.cursor, g.Limits[0], g.Limits[1], s.desc,
func(id string, o geojson.Object, fields []float64) bool {
return sw.writeObject(id, o, fields, false)
},

View File

@ -8,7 +8,6 @@ import (
"github.com/tidwall/resp"
"github.com/tidwall/tile38/controller/bing"
"github.com/tidwall/tile38/controller/collection"
"github.com/tidwall/tile38/controller/glob"
"github.com/tidwall/tile38/controller/server"
"github.com/tidwall/tile38/geojson"
@ -366,9 +365,8 @@ func (c *Controller) cmdSearch(msg *server.Message) (res string, err error) {
}
sw.writeHead()
if sw.col != nil {
stype := collection.TypeAll
if sw.output == outputCount && len(sw.wheres) == 0 && sw.globEverything == true {
count := sw.col.Count(stype) - int(s.cursor)
count := sw.col.Count() - int(s.cursor)
if count < 0 {
count = 0
}
@ -376,14 +374,14 @@ func (c *Controller) cmdSearch(msg *server.Message) (res string, err error) {
} else {
g := glob.Parse(sw.globPattern, s.desc)
if g.Limits[0] == "" && g.Limits[1] == "" {
s.cursor = sw.col.SearchValues(s.cursor, stype, s.desc,
s.cursor = sw.col.SearchValues(s.cursor, s.desc,
func(id string, o geojson.Object, fields []float64) bool {
return sw.writeObject(id, o, fields, false)
},
)
} else {
s.cursor = sw.col.SearchValuesRange(
s.cursor, stype, g.Limits[0], g.Limits[1], s.desc,
s.cursor, g.Limits[0], g.Limits[1], s.desc,
func(id string, o geojson.Object, fields []float64) bool {
return sw.writeObject(id, o, fields, false)
},

View File

@ -9,7 +9,6 @@ import (
"github.com/tidwall/btree"
"github.com/tidwall/resp"
"github.com/tidwall/tile38/controller/collection"
"github.com/tidwall/tile38/controller/server"
)
@ -34,7 +33,7 @@ func (c *Controller) cmdStats(msg *server.Message) (res string, err error) {
points := col.PointCount()
m["num_points"] = points
m["in_memory_size"] = col.TotalWeight()
m["num_objects"] = col.Count(collection.TypeAll)
m["num_objects"] = col.Count()
switch msg.OutputType {
case server.JSON:
ms = append(ms, m)
@ -93,7 +92,7 @@ func (c *Controller) cmdServer(msg *server.Message) (res string, err error) {
c.cols.Ascend(func(item btree.Item) bool {
col := item.(*collectionT).Collection
points += col.PointCount()
objects += col.Count(collection.TypeAll)
objects += col.Count()
return true
})
m["num_points"] = points
@ -156,7 +155,7 @@ func (c *Controller) statsCollections(line string) (string, error) {
points := col.PointCount()
m["num_points"] = points
m["in_memory_size"] = col.TotalWeight()
m["num_objects"] = col.Count(collection.TypeAll)
m["num_objects"] = col.Count()
ms = append(ms, m)
} else {
ms = append(ms, nil)