This REST Layer resource storage backend stores data in a Google Datastore using datastore.
This backend used cmorent/rest-layer-datastore as a base and borrows structure and approach from rs/rest-layer-mongo. It uses the general library rather than specific appengine library.
import "github.com/ajcrowe/rest-layer-datastore"
Or use gopkg.in
for a more stable v1 release
import "gopkg.in/ajcrowe/rest-layer-datastore.v1"
Create a datastore client
ctx := context.Background()
client, err := datastore.NewClient(ctx, "project-id")
if err != nil {
log.Fatalf("Error connecting to Datastore: %s", err)
}
Then use this to create a new Handler
for your resource binds
// params for the handler
namespace := "default"
entity := "users"
// bind the users resource with the datastore handler
index.Bind("users", user, datastore.NewHandler(client, namespace, entity), resource.DefaultConf)
You can also set a number of Datastore properties which you would like to exclude from being indexed with SetNoIndexProperties
on your handler
struct.
// create a handler for the resource.
index.Bind("users", user, datastore.NewHandler(client, namespace, entity).SetNoIndexProperties([]string{"prop1", "prop2"}), resource.DefaultConf)
- $and
- $or
- $lt
- $lte
- $gt
- $gte
- $in
- $nin
- $exists