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..41c431139cded0879c2885ace00e2973ffcbf7b7 |
--- /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 |
dnj
2016/01/23 06:15:36
nit: Back-ticks around proto.Message
iannucci
2016/01/23 10:01:07
Done.
|
+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 |
+} |
+``` |