mirror of https://github.com/tidwall/tile38.git
Merge branch 'master' into memoptz
This commit is contained in:
commit
fa74d14942
|
@ -660,9 +660,9 @@ func (c *Controller) cmdSet(msg *server.Message) (res string, d commandDetailsT,
|
||||||
col = collection.New()
|
col = collection.New()
|
||||||
c.setCol(d.key, col)
|
c.setCol(d.key, col)
|
||||||
}
|
}
|
||||||
if nx {
|
if xx || nx {
|
||||||
_, _, ok := col.Get(d.id)
|
_, _, ok := col.Get(d.id)
|
||||||
if ok {
|
if (nx && ok) || (xx && !ok) {
|
||||||
goto notok
|
goto notok
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -691,7 +691,12 @@ notok:
|
||||||
switch msg.OutputType {
|
switch msg.OutputType {
|
||||||
default:
|
default:
|
||||||
case server.JSON:
|
case server.JSON:
|
||||||
res = `{"ok":false,"elapsed":"` + time.Now().Sub(start).String() + "\"}"
|
if nx {
|
||||||
|
err = errIDAlreadyExists
|
||||||
|
} else {
|
||||||
|
err = errIDNotFound
|
||||||
|
}
|
||||||
|
return
|
||||||
case server.RESP:
|
case server.RESP:
|
||||||
res = "$-1\r\n"
|
res = "$-1\r\n"
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
package glob
|
package glob
|
||||||
|
|
||||||
|
import "strings"
|
||||||
|
|
||||||
type Glob struct {
|
type Glob struct {
|
||||||
Pattern string
|
Pattern string
|
||||||
Desc bool
|
Desc bool
|
||||||
|
@ -24,7 +26,7 @@ func IsGlob(pattern string) bool {
|
||||||
|
|
||||||
func Parse(pattern string, desc bool) *Glob {
|
func Parse(pattern string, desc bool) *Glob {
|
||||||
g := &Glob{Pattern: pattern, Desc: desc, Limits: []string{"", ""}}
|
g := &Glob{Pattern: pattern, Desc: desc, Limits: []string{"", ""}}
|
||||||
if pattern == "*" {
|
if strings.HasPrefix(pattern, "*") {
|
||||||
g.IsGlob = true
|
g.IsGlob = true
|
||||||
return g
|
return g
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,6 +15,7 @@ const defaultSearchOutput = outputObjects
|
||||||
var errInvalidNumberOfArguments = errors.New("invalid number of arguments")
|
var errInvalidNumberOfArguments = errors.New("invalid number of arguments")
|
||||||
var errKeyNotFound = errors.New("key not found")
|
var errKeyNotFound = errors.New("key not found")
|
||||||
var errIDNotFound = errors.New("id not found")
|
var errIDNotFound = errors.New("id not found")
|
||||||
|
var errIDAlreadyExists = errors.New("id already exists")
|
||||||
|
|
||||||
func errInvalidArgument(arg string) error {
|
func errInvalidArgument(arg string) error {
|
||||||
return fmt.Errorf("invalid argument '%s'", arg)
|
return fmt.Errorf("invalid argument '%s'", arg)
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
![Tile38 Logo](https://github.com/tidwall/tile38/blob/master/doc/logo200.png)
|
![Tile38 Logo](https://raw.githubusercontent.com/tidwall/tile38/master/doc/logo200.png)
|
||||||
|
|
||||||
Tile38 is an open source (MIT licensed), in-memory geolocation data store, spatial index, and realtime geofence. It supports a variety of object types including lat/lon points, bounding boxes, XYZ tiles, Geohashes, and GeoJSON.
|
Tile38 is an open source (MIT licensed), in-memory geolocation data store, spatial index, and realtime geofence. It supports a variety of object types including lat/lon points, bounding boxes, XYZ tiles, Geohashes, and GeoJSON.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue