Differentiate between single- and multi- props.

Fixes #58.

Change PropertyMap to accept either a single Property or a
PropertySlice, the former being a single Property and the latter
being a multi-property regardless of content size.

This will likely break API compatibility for packages that directly use
PropertyMap, which shouldn't be too many. Updating is not difficult:

If you want to have a single property, you can assign directly instead
of wrapping in a []Property:

  PropertyMap{"Foo": MkProperty("Bar")}

If you want to have a multi-valued Property, use a PropertySlice:

  PropertyMap{"Foo": PropertySlice{ds.MkProperty("Bar")}}

Note that datastore now differentiates between single-valued Properties
and multi-valued Properties. When dealing with structs, luci/gae doesn't
really care when loading, but will export them as multi- if they are backed
by a slice.

BUG=None
TEST=local

Review-Url: https://codereview.chromium.org/2342063003
28 files changed
tree: 49a9d8f86ae6f92f59ea63898ca47ef9de3a60d1
  1. docs/
  2. filter/
  3. impl/
  4. infra/
  5. service/
  6. tools/
  7. .travis.yml
  8. AUTHORS
  9. codereview.settings
  10. CONTRIBUTORS
  11. doc.go
  12. LICENSE
  13. pre-commit-go.yml
  14. PRESUBMIT.py
  15. README.md
  16. symbols.go
README.md

gae: A Google AppEngine SDK wrapper

designed for testing and extensibility

THIS PACKAGE HAS NO API COMPATIBILITY GUARANTEES. USE UNPINNED AT YOUR OWN PERIL.

(but generally it should be pretty stableish).

GoDoc Build Status Coverage Status

Installing

go get -u github.com/luci/gae/...

Why/What/How

See the godocs.

Versioning

  • Branch master contains the latest code.

Contributing

  • Sign the Google CLA.
  • Make sure your user.email and user.name are configured in git config.
  • Install the pcg git hook: go get -u github.com/maruel/pre-commit-go/cmd/... && pcg

Run the following to setup the code review tool and create your first review:

git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git $HOME/src/depot_tools
export PATH="$PATH:$HOME/src/depot_tools"
cd $GOROOT/github.com/luci/gae
git new-branch work
# or `git checkout -b work origin/master` if you like typing more.

# hack hack

git commit -a -m "This is awesome\nR=joe@example.com"
# This will ask for your Google Account credentials.
git cl upload -s
# Wait for LGTM over email.
# Check Commit Queue checkbox in Rietveld codereview site.
# See it tested and landed automatically.

Use git cl help and git cl help <cmd> for more details.