diff --git a/internal/collection/collection.go b/internal/collection/collection.go index 1c3f0e9b..b738e732 100644 --- a/internal/collection/collection.go +++ b/internal/collection/collection.go @@ -196,7 +196,7 @@ func (c *Collection) Set(obj *object.Object) (prev *object.Object) { // Delete removes an object and returns it. // If the object does not exist then the 'ok' return value will be false. func (c *Collection) Delete(id string) (prev *object.Object) { - key := object.New(id, nil, 0, 0, field.List{}) + key := object.New(id, nil, 0, field.List{}) prev, _ = c.items.Delete(key) if prev == nil { return nil @@ -221,7 +221,7 @@ func (c *Collection) Delete(id string) (prev *object.Object) { // Get returns an object. // If the object does not exist then the 'ok' return value will be false. func (c *Collection) Get(id string) *object.Object { - key := object.New(id, nil, 0, 0, field.List{}) + key := object.New(id, nil, 0, field.List{}) obj, _ := c.items.Get(key) return obj } @@ -291,7 +291,7 @@ func (c *Collection) ScanRange( return keepon } - pstart := object.New(start, nil, 0, 0, field.List{}) + pstart := object.New(start, nil, 0, field.List{}) if desc { c.items.Descend(pstart, iter) } else { @@ -354,8 +354,8 @@ func (c *Collection) SearchValuesRange(start, end string, desc bool, return keepon } - pstart := object.New("", String(start), 0, 0, field.List{}) - pend := object.New("", String(end), 0, 0, field.List{}) + pstart := object.New("", String(start), 0, field.List{}) + pend := object.New("", String(end), 0, field.List{}) if desc { // descend range c.values.Descend(pstart, func(item *object.Object) bool { @@ -394,7 +394,7 @@ func (c *Collection) ScanGreaterOrEqual(id string, desc bool, keepon = iterator(o) return keepon } - pstart := object.New(id, nil, 0, 0, field.List{}) + pstart := object.New(id, nil, 0, field.List{}) if desc { c.items.Descend(pstart, iter) } else { diff --git a/internal/collection/collection_test.go b/internal/collection/collection_test.go index dc4a9aec..d5962581 100644 --- a/internal/collection/collection_test.go +++ b/internal/collection/collection_test.go @@ -48,7 +48,7 @@ func TestCollectionNewCollection(t *testing.T) { id := strconv.FormatInt(int64(i), 10) obj := PO(rand.Float64()*360-180, rand.Float64()*180-90) objs[id] = obj - c.Set(object.New(id, obj, 0, 0, field.List{})) + c.Set(object.New(id, obj, 0, field.List{})) } count := 0 bbox := geometry.Rect{ @@ -81,31 +81,31 @@ func TestCollectionSet(t *testing.T) { t.Run("AddString", func(t *testing.T) { c := New() str1 := String("hello") - old := c.Set(object.New("str", str1, 0, 0, field.List{})) + old := c.Set(object.New("str", str1, 0, field.List{})) expect(t, old == nil) }) t.Run("UpdateString", func(t *testing.T) { c := New() str1 := String("hello") str2 := String("world") - old := c.Set(object.New("str", str1, 0, 0, field.List{})) + old := c.Set(object.New("str", str1, 0, field.List{})) expect(t, old == nil) - old = c.Set(object.New("str", str2, 0, 0, field.List{})) + old = c.Set(object.New("str", str2, 0, field.List{})) expect(t, old.Geo() == str1) }) t.Run("AddPoint", func(t *testing.T) { c := New() point1 := PO(-112.1, 33.1) - old := c.Set(object.New("point", point1, 0, 0, field.List{})) + old := c.Set(object.New("point", point1, 0, field.List{})) expect(t, old == nil) }) t.Run("UpdatePoint", func(t *testing.T) { c := New() point1 := PO(-112.1, 33.1) point2 := PO(-112.2, 33.2) - old := c.Set(object.New("point", point1, 0, 0, field.List{})) + old := c.Set(object.New("point", point1, 0, field.List{})) expect(t, old == nil) - old = c.Set(object.New("point", point2, 0, 0, field.List{})) + old = c.Set(object.New("point", point2, 0, field.List{})) expect(t, old.Geo().Center() == point1.Base()) }) t.Run("Fields", func(t *testing.T) { @@ -115,7 +115,7 @@ func TestCollectionSet(t *testing.T) { fNames := []string{"a", "b", "c"} fValues := []string{"1", "2", "3"} fields1 := toFields(fNames, fValues) - old := c.Set(object.New("str", str1, 0, 0, fields1)) + old := c.Set(object.New("str", str1, 0, fields1)) expect(t, old == nil) str2 := String("hello") @@ -124,23 +124,23 @@ func TestCollectionSet(t *testing.T) { fValues = []string{"4", "5", "6"} fields2 := toFields(fNames, fValues) - old = c.Set(object.New("str", str2, 0, 0, fields2)) + old = c.Set(object.New("str", str2, 0, fields2)) expect(t, old.Geo() == str1) expect(t, reflect.DeepEqual(old.Fields(), fields1)) fNames = []string{"a", "b", "c", "d", "e", "f"} fValues = []string{"7", "8", "9", "10", "11", "12"} fields3 := toFields(fNames, fValues) - old = c.Set(object.New("str", str1, 0, 0, fields3)) + old = c.Set(object.New("str", str1, 0, fields3)) expect(t, old.Geo() == str2) expect(t, reflect.DeepEqual(old.Fields(), fields2)) }) t.Run("Delete", func(t *testing.T) { c := New() - c.Set(object.New("1", String("1"), 0, 0, field.List{})) - c.Set(object.New("2", String("2"), 0, 0, field.List{})) - c.Set(object.New("3", PO(1, 2), 0, 0, field.List{})) + c.Set(object.New("1", String("1"), 0, field.List{})) + c.Set(object.New("2", String("2"), 0, field.List{})) + c.Set(object.New("3", PO(1, 2), 0, field.List{})) expect(t, c.Count() == 3) expect(t, c.StringCount() == 2) @@ -196,7 +196,7 @@ func TestCollectionScan(t *testing.T) { c := New() for _, i := range rand.Perm(N) { id := fmt.Sprintf("%04d", i) - c.Set(object.New(id, String(id), 0, 0, makeFields( + c.Set(object.New(id, String(id), 0, makeFields( field.Make("ex", id), ))) } @@ -293,8 +293,7 @@ func TestCollectionSearch(t *testing.T) { id := fmt.Sprintf("%04d", j) ex := fmt.Sprintf("%04d", i) c.Set(object.New(id, String(ex), - 0, 0, - makeFields( + 0, makeFields( field.Make("i", ex), field.Make("j", id), ))) @@ -352,11 +351,11 @@ func TestCollectionSearch(t *testing.T) { func TestCollectionWeight(t *testing.T) { c := New() - c.Set(object.New("1", String("1"), 0, 0, field.List{})) + c.Set(object.New("1", String("1"), 0, field.List{})) expect(t, c.TotalWeight() > 0) c.Delete("1") expect(t, c.TotalWeight() == 0) - c.Set(object.New("1", String("1"), 0, 0, + c.Set(object.New("1", String("1"), 0, toFields( []string{"a", "b", "c"}, []string{"1", "2", "3"}, @@ -365,19 +364,19 @@ func TestCollectionWeight(t *testing.T) { expect(t, c.TotalWeight() > 0) c.Delete("1") expect(t, c.TotalWeight() == 0) - c.Set(object.New("1", String("1"), 0, 0, + c.Set(object.New("1", String("1"), 0, toFields( []string{"a", "b", "c"}, []string{"1", "2", "3"}, ), )) - c.Set(object.New("2", String("2"), 0, 0, + c.Set(object.New("2", String("2"), 0, toFields( []string{"d", "e", "f"}, []string{"4", "5", "6"}, ), )) - c.Set(object.New("1", String("1"), 0, 0, + c.Set(object.New("1", String("1"), 0, toFields( []string{"d", "e", "f"}, []string{"4", "5", "6"}, @@ -417,13 +416,13 @@ func TestSpatialSearch(t *testing.T) { q4, _ := geojson.Parse(gjson.Get(json, `features.#[id=="q4"]`).Raw, nil) c := New() - c.Set(object.New("p1", p1, 0, 0, field.List{})) - c.Set(object.New("p2", p2, 0, 0, field.List{})) - c.Set(object.New("p3", p3, 0, 0, field.List{})) - c.Set(object.New("p4", p4, 0, 0, field.List{})) - c.Set(object.New("r1", r1, 0, 0, field.List{})) - c.Set(object.New("r2", r2, 0, 0, field.List{})) - c.Set(object.New("r3", r3, 0, 0, field.List{})) + c.Set(object.New("p1", p1, 0, field.List{})) + c.Set(object.New("p2", p2, 0, field.List{})) + c.Set(object.New("p3", p3, 0, field.List{})) + c.Set(object.New("p4", p4, 0, field.List{})) + c.Set(object.New("r1", r1, 0, field.List{})) + c.Set(object.New("r2", r2, 0, field.List{})) + c.Set(object.New("r3", r3, 0, field.List{})) var n int @@ -507,7 +506,7 @@ func TestCollectionSparse(t *testing.T) { x := (r.Max.X-r.Min.X)*rand.Float64() + r.Min.X y := (r.Max.Y-r.Min.Y)*rand.Float64() + r.Min.Y point := PO(x, y) - c.Set(object.New(fmt.Sprintf("%d", i), point, 0, 0, field.List{})) + c.Set(object.New(fmt.Sprintf("%d", i), point, 0, field.List{})) } var n int n = 0 @@ -587,7 +586,7 @@ func TestManyCollections(t *testing.T) { col = New() colsM[key] = col } - col.Set(object.New(id, obj, 0, 0, field.List{})) + col.Set(object.New(id, obj, 0, field.List{})) k++ } } @@ -641,7 +640,7 @@ func benchmarkInsert(t *testing.B, nFields int) { col := New() t.ResetTimer() for i := 0; i < t.N; i++ { - col.Set(object.New(items[i].id, items[i].object, 0, 0, items[i].fields)) + col.Set(object.New(items[i].id, items[i].object, 0, items[i].fields)) } } @@ -665,11 +664,11 @@ func benchmarkReplace(t *testing.B, nFields int) { } col := New() for i := 0; i < t.N; i++ { - col.Set(object.New(items[i].id, items[i].object, 0, 0, items[i].fields)) + col.Set(object.New(items[i].id, items[i].object, 0, items[i].fields)) } t.ResetTimer() for _, i := range rand.Perm(t.N) { - o := col.Set(object.New(items[i].id, items[i].object, 0, 0, field.List{})) + o := col.Set(object.New(items[i].id, items[i].object, 0, field.List{})) if o.Geo() != items[i].object { t.Fatal("shoot!") } @@ -696,7 +695,7 @@ func benchmarkGet(t *testing.B, nFields int) { } col := New() for i := 0; i < t.N; i++ { - col.Set(object.New(items[i].id, items[i].object, 0, 0, items[i].fields)) + col.Set(object.New(items[i].id, items[i].object, 0, items[i].fields)) } t.ResetTimer() for _, i := range rand.Perm(t.N) { @@ -727,7 +726,7 @@ func benchmarkRemove(t *testing.B, nFields int) { } col := New() for i := 0; i < t.N; i++ { - col.Set(object.New(items[i].id, items[i].object, 0, 0, items[i].fields)) + col.Set(object.New(items[i].id, items[i].object, 0, items[i].fields)) } t.ResetTimer() for _, i := range rand.Perm(t.N) { @@ -758,7 +757,7 @@ func benchmarkScan(t *testing.B, nFields int) { } col := New() for i := 0; i < t.N; i++ { - col.Set(object.New(items[i].id, items[i].object, 0, 0, items[i].fields)) + col.Set(object.New(items[i].id, items[i].object, 0, items[i].fields)) } t.ResetTimer() for i := 0; i < t.N; i++ { diff --git a/internal/object/object.go b/internal/object/object.go index cf6cce8e..4fc019ea 100644 --- a/internal/object/object.go +++ b/internal/object/object.go @@ -9,7 +9,6 @@ import ( type Object struct { id string geo geojson.Object - created int64 // unix nano created expires int64 // unix nano expiration fields field.List } @@ -28,13 +27,6 @@ func (o *Object) Fields() field.List { return o.fields } -func (o *Object) Created() int64 { - if o == nil { - return 0 - } - return o.created -} - func (o *Object) Expires() int64 { if o == nil { return 0 @@ -83,13 +75,11 @@ func (o *Object) Weight() int { return weight } -func New(id string, geo geojson.Object, created, expires int64, - fields field.List, +func New(id string, geo geojson.Object, expires int64, fields field.List, ) *Object { return &Object{ id: id, geo: geo, - created: created, expires: expires, fields: fields, } diff --git a/internal/object/object_test.go b/internal/object/object_test.go index 4d60d3e7..aa23cadc 100644 --- a/internal/object/object_test.go +++ b/internal/object/object_test.go @@ -13,6 +13,6 @@ func P(x, y float64) geojson.Object { return geojson.NewSimplePoint(geometry.Point{X: 10, Y: 20}) } func TestObject(t *testing.T) { - o := New("hello", P(10, 20), 0, 99, field.List{}) + o := New("hello", P(10, 20), 99, field.List{}) assert.Assert(o.ID() == "hello") } diff --git a/internal/server/crud.go b/internal/server/crud.go index 5de8affb..e17aa85c 100644 --- a/internal/server/crud.go +++ b/internal/server/crud.go @@ -721,7 +721,7 @@ func (s *Server) cmdSET(msg *Message) (resp.Value, commandDetails, error) { ofields = ofields.Set(f) } - obj := object.New(id, oobj, 0, ex, ofields) + obj := object.New(id, oobj, ex, ofields) old := col.Set(obj) // >> Response @@ -815,7 +815,7 @@ func (s *Server) cmdFSET(msg *Message) (resp.Value, commandDetails, error) { updateCount++ } } - obj := object.New(id, o.Geo(), 0, o.Expires(), ofields) + obj := object.New(id, o.Geo(), o.Expires(), ofields) col.Set(obj) d.command = "fset" d.key = key @@ -860,7 +860,7 @@ func (s *Server) cmdEXPIRE(msg *Message) (resp.Value, commandDetails, error) { o := col.Get(id) ok = o != nil if ok { - obj = object.New(id, o.Geo(), 0, ex, o.Fields()) + obj = object.New(id, o.Geo(), ex, o.Fields()) col.Set(obj) } } @@ -919,7 +919,7 @@ func (s *Server) cmdPERSIST(msg *Message) (resp.Value, commandDetails, error) { var obj *object.Object var cleared bool if o.Expires() != 0 { - obj = object.New(id, o.Geo(), 0, 0, o.Fields()) + obj = object.New(id, o.Geo(), 0, o.Fields()) col.Set(obj) cleared = true } diff --git a/internal/server/fence.go b/internal/server/fence.go index 8a0c80a2..c6b2a166 100644 --- a/internal/server/fence.go +++ b/internal/server/fence.go @@ -156,7 +156,7 @@ func fenceMatch( fence.cmd = "intersects" temp = true } - lso := object.New("", ls, 0, 0, field.List{}) + lso := object.New("", ls, 0, field.List{}) if fenceMatchObject(fence, lso) { detect = "cross" } diff --git a/internal/server/json.go b/internal/server/json.go index 8a137e91..448e629e 100644 --- a/internal/server/json.go +++ b/internal/server/json.go @@ -300,7 +300,7 @@ func (s *Server) cmdJset(msg *Message) (res resp.Value, d commandDetails, err er s.cols.Set(key, col) } var oobj geojson.Object = collection.String(json) - obj := object.New(id, oobj, 0, 0, fields) + obj := object.New(id, oobj, 0, fields) col.Set(obj) d.key = key @@ -369,7 +369,7 @@ func (s *Server) cmdJdel(msg *Message) (res resp.Value, d commandDetails, err er } var oobj geojson.Object = collection.String(json) - obj := object.New(id, oobj, 0, 0, fields) + obj := object.New(id, oobj, 0, fields) col.Set(obj) d.key = key diff --git a/internal/server/scanner.go b/internal/server/scanner.go index 6a348b0c..74c67d8a 100644 --- a/internal/server/scanner.go +++ b/internal/server/scanner.go @@ -307,7 +307,7 @@ func (sw *scanWriter) pushObject(opts ScanWriterParams) (keepGoing bool, err err opts.obj = object.New( opts.obj.ID(), clip.Clip(opts.obj.Geo(), opts.clip, &sw.s.geomIndexOpts), - 0, opts.obj.Expires(), + opts.obj.Expires(), opts.obj.Fields(), ) } diff --git a/internal/server/scanner_test.go b/internal/server/scanner_test.go index 9cc47f9d..ae9fec31 100644 --- a/internal/server/scanner_test.go +++ b/internal/server/scanner_test.go @@ -48,7 +48,7 @@ func BenchmarkFieldMatch(t *testing.B) { for i := 0; i < t.N; i++ { // one call is super fast, measurements are not reliable, let's do 100 for ix := 0; ix < 100; ix++ { - sw.fieldMatch(object.New("", items[i].object, 0, 0, items[i].fields)) + sw.fieldMatch(object.New("", items[i].object, 0, items[i].fields)) } } }