| Index: tools/proto-gae/README.md
|
| diff --git a/tools/proto-gae/README.md b/tools/proto-gae/README.md
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..23e8f2064fea9d6bdba5df1f1e2b32ee4796cbd8
|
| --- /dev/null
|
| +++ b/tools/proto-gae/README.md
|
| @@ -0,0 +1,48 @@
|
| +proto-gae
|
| +=========
|
| +
|
| +proto-gae is a simple `go generate`-compatible tool for generating
|
| +"github.com/luci/gae/service/datastore".PropertyConverter implementation for
|
| +`protoc`-generated message types. This allows you to embed `proto.Message`
|
| +implementations into your datastore models.
|
| +
|
| +The generated implementations serialize to/from the binary protobuf format into
|
| +an unindexed []byte property.
|
| +
|
| +
|
| +Example
|
| +-------
|
| +
|
| +#### path/to/mything/protos/mything.proto
|
| +```protobuf
|
| +syntax = "proto3";
|
| +package protos;
|
| +message MyProtoThing {
|
| + my string = 1;
|
| + proto int64 = 1;
|
| + thing float = 1;
|
| +}
|
| +```
|
| +
|
| +#### path/to/mything/protos/gen.go
|
| +```go
|
| +package protos
|
| +// assume github.com/luci/luci-go/tools/cmd/cproto is in $PATH. Try it, it's
|
| +// awesome :).
|
| +
|
| +//go:generate cproto
|
| +//go:generate proto-gae -type MyProtoThing
|
| +```
|
| +
|
| +#### path/to/mything/thing.go
|
| +```go
|
| +package mything
|
| +
|
| +import "path/to/package/protos"
|
| +
|
| +type DatastoreModel struct {
|
| + // This will now 'just work'; ProtoMessage will round-trip to datastore as
|
| + // []byte.
|
| + ProtoMessage protos.MyProtoThing
|
| +}
|
| +```
|
|
|