Skip to content

Commit

Permalink
Merge branch 'master' into feat/IsClusterMode
Browse files Browse the repository at this point in the history
  • Loading branch information
ndyakov authored Feb 7, 2025
2 parents b0c00e0 + 27f19ea commit d0373b9
Show file tree
Hide file tree
Showing 8 changed files with 1,389 additions and 29 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/spellcheck.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ jobs:
- name: Checkout
uses: actions/checkout@v4
- name: Check Spelling
uses: rojopolis/spellcheck-github-actions@0.45.0
uses: rojopolis/spellcheck-github-actions@0.46.0
with:
config_path: .github/spellcheck-settings.yml
task_name: Markdown
206 changes: 206 additions & 0 deletions doctests/geo_index_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,206 @@
// EXAMPLE: geoindex
// HIDE_START
package example_commands_test

import (
"context"
"fmt"

"github.com/redis/go-redis/v9"
)

// HIDE_END

func ExampleClient_geoindex() {
ctx := context.Background()

rdb := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
Password: "", // no password docs
DB: 0, // use default DB
Protocol: 2,
})
// REMOVE_START
rdb.FTDropIndex(ctx, "productidx")
rdb.FTDropIndex(ctx, "geomidx")
rdb.Del(ctx, "product:46885", "product:46886", "shape:1", "shape:2", "shape:3", "shape:4")
// REMOVE_END

// STEP_START create_geo_idx
geoCreateResult, err := rdb.FTCreate(ctx,
"productidx",
&redis.FTCreateOptions{
OnJSON: true,
Prefix: []interface{}{"product:"},
},
&redis.FieldSchema{
FieldName: "$.location",
As: "location",
FieldType: redis.SearchFieldTypeGeo,
},
).Result()

if err != nil {
panic(err)
}

fmt.Println(geoCreateResult) // >>> OK
// STEP_END

// STEP_START add_geo_json
prd46885 := map[string]interface{}{
"description": "Navy Blue Slippers",
"price": 45.99,
"city": "Denver",
"location": "-104.991531, 39.742043",
}

gjResult1, err := rdb.JSONSet(ctx, "product:46885", "$", prd46885).Result()

if err != nil {
panic(err)
}

fmt.Println(gjResult1) // >>> OK

prd46886 := map[string]interface{}{
"description": "Bright Green Socks",
"price": 25.50,
"city": "Fort Collins",
"location": "-105.0618814,40.5150098",
}

gjResult2, err := rdb.JSONSet(ctx, "product:46886", "$", prd46886).Result()

if err != nil {
panic(err)
}

fmt.Println(gjResult2) // >>> OK
// STEP_END

// STEP_START geo_query
geoQueryResult, err := rdb.FTSearch(ctx, "productidx",
"@location:[-104.800644 38.846127 100 mi]",
).Result()

if err != nil {
panic(err)
}

fmt.Println(geoQueryResult)
// >>> {1 [{product:46885...
// STEP_END

// STEP_START create_gshape_idx
geomCreateResult, err := rdb.FTCreate(ctx, "geomidx",
&redis.FTCreateOptions{
OnJSON: true,
Prefix: []interface{}{"shape:"},
},
&redis.FieldSchema{
FieldName: "$.name",
As: "name",
FieldType: redis.SearchFieldTypeText,
},
&redis.FieldSchema{
FieldName: "$.geom",
As: "geom",
FieldType: redis.SearchFieldTypeGeoShape,
GeoShapeFieldType: "FLAT",
},
).Result()

if err != nil {
panic(err)
}

fmt.Println(geomCreateResult) // >>> OK
// STEP_END

// STEP_START add_gshape_json
shape1 := map[string]interface{}{
"name": "Green Square",
"geom": "POLYGON ((1 1, 1 3, 3 3, 3 1, 1 1))",
}

gmjResult1, err := rdb.JSONSet(ctx, "shape:1", "$", shape1).Result()

if err != nil {
panic(err)
}

fmt.Println(gmjResult1) // >>> OK

shape2 := map[string]interface{}{
"name": "Red Rectangle",
"geom": "POLYGON ((2 2.5, 2 3.5, 3.5 3.5, 3.5 2.5, 2 2.5))",
}

gmjResult2, err := rdb.JSONSet(ctx, "shape:2", "$", shape2).Result()

if err != nil {
panic(err)
}

fmt.Println(gmjResult2) // >>> OK

shape3 := map[string]interface{}{
"name": "Blue Triangle",
"geom": "POLYGON ((3.5 1, 3.75 2, 4 1, 3.5 1))",
}

gmjResult3, err := rdb.JSONSet(ctx, "shape:3", "$", shape3).Result()

if err != nil {
panic(err)
}

fmt.Println(gmjResult3) // >>> OK

shape4 := map[string]interface{}{
"name": "Purple Point",
"geom": "POINT (2 2)",
}

gmjResult4, err := rdb.JSONSet(ctx, "shape:4", "$", shape4).Result()

if err != nil {
panic(err)
}

fmt.Println(gmjResult4) // >>> OK
// STEP_END

// STEP_START gshape_query
geomQueryResult, err := rdb.FTSearchWithArgs(ctx, "geomidx",
"(-@name:(Green Square) @geom:[WITHIN $qshape])",
&redis.FTSearchOptions{
Params: map[string]interface{}{
"qshape": "POLYGON ((1 1, 1 3, 3 3, 3 1, 1 1))",
},
DialectVersion: 4,
Limit: 1,
},
).Result()

if err != nil {
panic(err)
}

fmt.Println(geomQueryResult)
// >>> {1 [{shape:4...
// STEP_END

// Output:
// OK
// OK
// OK
// {1 [{product:46885 <nil> <nil> <nil> map[$:{"city":"Denver","description":"Navy Blue Slippers","location":"-104.991531, 39.742043","price":45.99}]}]}
// OK
// OK
// OK
// OK
// OK
// {1 [{shape:4 <nil> <nil> <nil> map[$:[{"geom":"POINT (2 2)","name":"Purple Point"}]]}]}
}
6 changes: 3 additions & 3 deletions doctests/list_tutorial_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -388,7 +388,7 @@ func ExampleClient_ltrim() {
// REMOVE_END

// STEP_START ltrim
res27, err := rdb.LPush(ctx, "bikes:repairs", "bike:1", "bike:2", "bike:3", "bike:4", "bike:5").Result()
res27, err := rdb.RPush(ctx, "bikes:repairs", "bike:1", "bike:2", "bike:3", "bike:4", "bike:5").Result()

if err != nil {
panic(err)
Expand All @@ -410,13 +410,13 @@ func ExampleClient_ltrim() {
panic(err)
}

fmt.Println(res29) // >>> [bike:5 bike:4 bike:3]
fmt.Println(res29) // >>> [bike:1 bike:2 bike:3]
// STEP_END

// Output:
// 5
// OK
// [bike:5 bike:4 bike:3]
// [bike:1 bike:2 bike:3]
}

func ExampleClient_ltrim_end_of_list() {
Expand Down
Loading

0 comments on commit d0373b9

Please sign in to comment.