From 671b8cbd9001fe096877999d8a672baecdc12cc9 Mon Sep 17 00:00:00 2001 From: davidkelley Date: Wed, 1 Feb 2017 11:28:40 +0000 Subject: [PATCH] updated docs. added changelog --- CHANGELOG.md | 6 ++++++ README.md | 24 +++++++++++++----------- 2 files changed, 19 insertions(+), 11 deletions(-) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..ae5b855 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,6 @@ +#### v2.2.0 +- Added ability to use `where { ... }` directly from the relation +- Using `:expression_attribute_values`, `:expression_attribute_names` and `:key_condition_expression` when querying. + +#### v2.0.2 +- Initial release of adapter diff --git a/README.md b/README.md index 56c1fe2..dc597f3 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,10 @@ container = ROM.container(:dynamodb, credentials) do |rom| rom.relation(:users) do # Key Schema: id dataset TABLE + + def by_id(val) + where { id == val } + end end rom.commands(:users) do @@ -79,15 +83,13 @@ user = create.call({ id: 2, name: "James" }) # update an existing user update = container.commands[:users][:update] -update.where(id: user[:id]) { id == id }.call(name: "Mark") +update.by_id(user[:id]).call(name: "Mark") relation.where(id: user[:id]) { id == id }.one! # => { id: 2, name: "Mark" } # delete an existing user delete = container.commands[:users][:delete] -expressions = { id: user[:id] } -filter = -> { id == id } -delete.where(expressions, &filter).call +delete.by_id(user[:id]).call ``` --- @@ -100,15 +102,15 @@ container = ROM.container(:dynamodb, credentials) do |rom| dataset "my-logs-table" def by_host(ip) - equal(:host, ip) + where { host == ip } end def after_timestamp(time) - after(:timestamp, time) + where { timestamp > time } end def before_timestamp(time) - before(:timestamp, time) + where { timestamp < time } end end @@ -136,19 +138,19 @@ relation = container.relation(:logs) relation.count == num_of_logs # => true -all = relation.by_host(host).after(0).to_a # => [{host: "192.168.0.1", ... }, ...] +all = relation.where(ip: host) { host == ip }.after(0).to_a # => [{host: "192.168.0.1", ... }, ...] all.size # => 20 -before = relation.by_host(host).before(Time.now.to_f + 60 * 60).limit(1).to_a +before = relation.where(ip: host) { [host == ip, timestamp < (Time.now.to_f + 60 * 60)] }.limit(1).to_a before.size # => 1 before.first == logs.first # => true -offset = { host: host, timestamp: logs[-2][:timestamp] } +offset = { ip: host, timestamp: logs[-2][:timestamp] } -last = relation.by_host(host).descending.after(0).offset(offset).limit(1).one! +last = relation.where(ip: host) { ip == host }.descending.after(0).offset(offset).limit(1).one! last == logs.last # => true ```