RatchetWrench
RatchetWrench is a easily use Google Cloud Spanner by Elixir.
This library production use in the mobile game. But does not fully support the "Google Cloud spanner" feature.
Installation
If available in Hex, the package can be installed
by adding ratchet_wrench to your list of dependencies in mix.exs:
def deps do
[
{:ratchet_wrench, "~> 0.0.1"}
]
endDocumentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/ratchet_wrench.
Setup
Credentials
Add GCP credentials json file path for env GOOGLE_APPLICATION_CREDENTIALS.
more detail's for goth.
Set Google Cloud Spanner config
Set database.
Add env RATCHET_WRENCH_DATABASE.
ex) "projects/projectname-123456/instances/your-instance/databases/your-db"
export RATCHET_WRENCH_DATABASE="projects/projectname-123456/instances/your-instance/databases/your-db"or
Add config.exs
config :ratchet_wrench, database: "projects/projectname-123456/instances/your-instance/databases/your-db"
You must replace projectname-123456, your-instance, your-db.
Logging
Output for Logger module.
Add env RATCHET_WRENCH_ENABLE_LOGGING
export RATCHET_WRENCH_ENABLE_LOGGING=1or
Add config.exs
config :ratchet_wrench, enable_logging: trueMigration
I recommend using wrench.
Usage
Sorry, will write sample more codes.
-
How to define model(Table) ->
test/test_helper.exs -
How to SELECT/INSERT/UPDATE ->
test/ratchet_wrench/repo_test.exs
Setup config
Your application.ex write to example.
def start(_type, _args) do
children = [
...
{RatchetWrench.SessionPool, %RatchetWrench.Pool{}}
]
...
endShutdown
Cleanup session in Google Cloud Spanner at shutdown your app.
Process.send(RatchetWrench.SessionPool, :kill, [])Support type in Google Cloud Spanner
- STRING
- DATE
- BOOL
- INT64
- FLOAT64
- TIMESTAMP
Unsupport types
- ARRAY
- BYTES
- STRUCT