🚧 This package is unstable 🚧 github repo
(AppEngine | Cloud) Datastore wrapper for Go 👉
Simple. Happy. Respect standard library.
$ go get -u go.mercari.io/datastore
- Wrap
google.golang.org/appengine/datastore
andcloud.google.com/go/datastore
- keep key behavior
- align to
cloud.google.com/go/datastore
first
- Re-implement datastore package
- Re-implement datastore.SaveStruct & LoadStruct
- Ignore unmapped property
- Add PropertyTranslator interface
- Convert types like mytime.Unix to time.Time and reverse it
- Rename property like CreatedAt to createdAt or created_at and reverse it
- Re-implement PropertyLoadSaver
- Pass context.Context to Save & Load method
- It can catch entity from the cache layers as well as from the datastore
- Add retry feature to each RPC
- e.g. Retry AllocateID when it failed
- Add cache layer
- About...
- Local Cache
- AE Memcache
- etc...
- Easy to ON/OFF switching
- About...
- Add some useful methods
aedatastore/TransactionContext
- have utility functions
- support firestore
aedatastore
package- When using slice of struct, MUST specified
datastore:",flatten"
option.- original (ae & cloud) datastore.SaveStruct have different behaviors.
- see aeprodtest/main.go
/api/test3
- When using slice of struct, MUST specified
TODO
TODO
aedatastore
- Datastore Wrapper implementation for AppEngine Datastore
aeprodtest
- Test code that works in AppEngine production environment
boom
- goon likes interface for this package
cache
- Implementation of cache layer strategies
cache/aememcache
- Entity caching with AE Memcache
cache/dslog
- Datastore operation logging in cache layer
cache/fishbone
- Replace query by KeysOnly query with Get ops
cache/localcache
- Entity caching with machine local memory
cache/storagecache
- Entity cacheing base code
clouddatastore
- Datastore Wrapper implementation for Cloud Datastore
internal
- internal package
testbed
- Testbed to check the behavior of AE Datastore and Cloud Datastore
testsuite
- Test suite for this package
- Write tests for namespace
- Retry feature
- Write more documents
- Masahiro Wakame (@vvakame)
Please read the CLA below carefully before submitting your contribution.
- requirements
- gcloud sdk
gcloud components install app-engine-go
gcloud components install beta cloud-datastore-emulator
- dep
go get -u github.com/golang/dep/cmd/dep
- gcloud sdk
- Testing in local
$ ./setup.sh # exec once
$ ./serve.sh # exec in background
$ ./test.sh
- Testing with Docker
$ ./build-in-docker.sh
- Testing with Circle CI CLI
$ circleci build
Copyright 2017 Mercari, Inc.
Licensed under the MIT License.