deta 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +14 -3
- data/lib/deta/client.rb +6 -5
- data/lib/deta/objects/drive.rb +4 -0
- data/lib/deta/resource.rb +7 -4
- data/lib/deta/resources/base.rb +36 -11
- data/lib/deta/resources/drive.rb +6 -0
- data/lib/deta/version.rb +1 -1
- data/lib/deta.rb +2 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 76a8441ba038bdfc44abe26a8568bd445e8bf943420ba82c8572708b514158ba
|
4
|
+
data.tar.gz: 29e13de22bdb9900cf0510363c313dd0314a75be02fd3d3942130bc923ce0028
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e7f7d384edbfad45567aacaf52bb53a5db5fbba052b51d3699b607bffc3a7eed31048f3846c75dfcab0b2b3b606b59dec57e1ee0bd4ad5636aad9d3be3e34187
|
7
|
+
data.tar.gz: d76a5846a163b896f58c17eec943207a064275e551d7715dfa89b551e5ae6698c31acc694f688d898c7daa3a7ff21120bc9ead937baf7406e88db8727648f04d
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -10,6 +10,11 @@ Add this line to your application's Gemfile:
|
|
10
10
|
gem 'deta'
|
11
11
|
```
|
12
12
|
|
13
|
+
or grab it from Github
|
14
|
+
```ruby
|
15
|
+
gem 'deta', github: "arubinofaux/deta-ruby"
|
16
|
+
```
|
17
|
+
|
13
18
|
And then execute:
|
14
19
|
|
15
20
|
$ bundle install
|
@@ -44,7 +49,7 @@ put = detabase.put({name: "Mike Jones", age: 31, hometown: "Denver"})
|
|
44
49
|
put.processed.items.first.key
|
45
50
|
|
46
51
|
# multi items
|
47
|
-
puts = detabase.put({name: "Mike Jones", age: 31, hometown: "Denver"}, {name: "Mike Dow", age: 25, hometown: "Miami"})
|
52
|
+
puts = detabase.put([{name: "Mike Jones", age: 31, hometown: "Denver"}, {name: "Mike Dow", age: 25, hometown: "Miami"}])
|
48
53
|
puts.processed
|
49
54
|
```
|
50
55
|
|
@@ -63,7 +68,10 @@ detabase.delete(key)
|
|
63
68
|
### Insert Item
|
64
69
|
|
65
70
|
```ruby
|
66
|
-
|
71
|
+
detabase.insert(name: "Mike Jones", age: 31, hometown: "Denver")
|
72
|
+
|
73
|
+
# specify the key
|
74
|
+
detabase.insert(key: "ab5tsstc9bh8", name: "Mike Jones", age: 31, hometown: "Denver")
|
67
75
|
```
|
68
76
|
|
69
77
|
### Update Item
|
@@ -75,7 +83,10 @@ detabase.update(key, set: {hometown: "Miami"})
|
|
75
83
|
### Query Items
|
76
84
|
|
77
85
|
```ruby
|
78
|
-
|
86
|
+
detabase.fetch(query: {hometown: "Denver"})
|
87
|
+
detabase.fetch(query: [{hometown: "Boulder"}, {"age?lt": 33}])
|
88
|
+
|
89
|
+
detabase.fetch(query: [{hometown: "Boulder"}], limit: 1, last: "8523bdyxlqww")
|
79
90
|
```
|
80
91
|
|
81
92
|
## Drive
|
data/lib/deta/client.rb
CHANGED
@@ -1,7 +1,5 @@
|
|
1
1
|
module Deta
|
2
2
|
class Client
|
3
|
-
BASE_URL = "https://database.deta.sh/v1/"
|
4
|
-
|
5
3
|
attr_reader :project_id, :project_key, :adapter
|
6
4
|
|
7
5
|
def initialize(project_key:, adapter: Faraday.default_adapter)
|
@@ -10,13 +8,16 @@ module Deta
|
|
10
8
|
@adapter = adapter
|
11
9
|
end
|
12
10
|
|
13
|
-
def base(
|
14
|
-
BaseResource.new(self,
|
11
|
+
def base(base_name = nil)
|
12
|
+
BaseResource.new(self, base_name)
|
13
|
+
end
|
14
|
+
|
15
|
+
def drive(drive_name = nil)
|
16
|
+
DriveResource.new(self, drive_name)
|
15
17
|
end
|
16
18
|
|
17
19
|
def connection
|
18
20
|
@connection ||= Faraday.new do |conn|
|
19
|
-
conn.url_prefix = BASE_URL
|
20
21
|
conn.headers['X-API-Key'] = project_key
|
21
22
|
conn.request :json
|
22
23
|
conn.response :json, content_type: "application/json"
|
data/lib/deta/resource.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
module Deta
|
2
2
|
class Resource
|
3
|
-
attr_reader :client, :
|
3
|
+
attr_reader :client, :resource_name
|
4
4
|
|
5
|
-
def initialize(client,
|
5
|
+
def initialize(client, resource_name)
|
6
6
|
@client = client
|
7
|
-
@
|
7
|
+
@resource_name = resource_name
|
8
8
|
end
|
9
9
|
|
10
10
|
private
|
@@ -21,6 +21,10 @@ module Deta
|
|
21
21
|
handle_response client.connection.patch(url, body, headers)
|
22
22
|
end
|
23
23
|
|
24
|
+
def post_request(url, body:, headers: {})
|
25
|
+
handle_response client.connection.post(url, body, headers)
|
26
|
+
end
|
27
|
+
|
24
28
|
def delete_request(url, params: {}, headers: {})
|
25
29
|
handle_response client.connection.delete(url, params, headers)
|
26
30
|
end
|
@@ -40,7 +44,6 @@ module Deta
|
|
40
44
|
when 500
|
41
45
|
raise Error, "We were unable to perform the request due to server-side problems. #{response.body["errors"]}"
|
42
46
|
end
|
43
|
-
|
44
47
|
response
|
45
48
|
end
|
46
49
|
end
|
data/lib/deta/resources/base.rb
CHANGED
@@ -1,9 +1,29 @@
|
|
1
1
|
module Deta
|
2
2
|
class BaseResource < Resource
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
3
|
+
@@api_url = "https://database.deta.sh/v1"
|
4
|
+
|
5
|
+
def put(attributes)
|
6
|
+
items = {}
|
7
|
+
if attributes.is_a?(Array)
|
8
|
+
items["items"] = attributes
|
9
|
+
else
|
10
|
+
items["items"] = [attributes]
|
11
|
+
end
|
12
|
+
|
13
|
+
BaseObject.new put_request([@@api_url, client.project_id, resource_name, "items"].join("/"), body: items).body
|
14
|
+
end
|
15
|
+
|
16
|
+
def get(key = nil)
|
17
|
+
BaseObject.new get_request([@@api_url, client.project_id, resource_name, "items", key].join("/")).body
|
18
|
+
end
|
19
|
+
|
20
|
+
def delete(key = nil)
|
21
|
+
BaseObject.new delete_request([@@api_url, client.project_id, resource_name, "items", key].join("/")).body
|
22
|
+
end
|
23
|
+
|
24
|
+
def insert(**attributes)
|
25
|
+
item = {item: attributes}
|
26
|
+
BaseObject.new post_request([@@api_url, client.project_id, resource_name, "items"].join("/"), body: item).body
|
7
27
|
end
|
8
28
|
|
9
29
|
def update(key = nil, set: nil, increment: nil, append: nil, prepend: nil, delete: nil)
|
@@ -13,16 +33,21 @@ module Deta
|
|
13
33
|
request[:append] = append if append
|
14
34
|
request[:prepend] = prepend if prepend
|
15
35
|
request[:delete] = delete if delete
|
16
|
-
|
17
|
-
BaseObject.new patch_request(
|
36
|
+
|
37
|
+
BaseObject.new patch_request([@@api_url, client.project_id, resource_name, "items", key].join("/"), body: request).body
|
18
38
|
end
|
19
39
|
|
20
|
-
def
|
21
|
-
|
22
|
-
|
40
|
+
def fetch(query: nil, limit: nil, last: nil)
|
41
|
+
request = {}
|
42
|
+
request[:limit] = limit
|
43
|
+
request[:last] = last
|
44
|
+
if query.is_a?(Array)
|
45
|
+
request[:query] = query
|
46
|
+
else
|
47
|
+
request[:query] = [query]
|
48
|
+
end
|
23
49
|
|
24
|
-
|
25
|
-
BaseObject.new delete_request("#{client.project_id}/#{base_db}/items/#{key}").body
|
50
|
+
BaseObject.new post_request([@@api_url, client.project_id, resource_name, "query"].join("/"), body: request).body
|
26
51
|
end
|
27
52
|
end
|
28
53
|
end
|
data/lib/deta/version.rb
CHANGED
data/lib/deta.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: deta
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dainel Vera
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-01-
|
11
|
+
date: 2022-01-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -46,8 +46,10 @@ files:
|
|
46
46
|
- lib/deta/error.rb
|
47
47
|
- lib/deta/object.rb
|
48
48
|
- lib/deta/objects/base.rb
|
49
|
+
- lib/deta/objects/drive.rb
|
49
50
|
- lib/deta/resource.rb
|
50
51
|
- lib/deta/resources/base.rb
|
52
|
+
- lib/deta/resources/drive.rb
|
51
53
|
- lib/deta/version.rb
|
52
54
|
homepage: https://github.com/arubinofaux/deta-ruby
|
53
55
|
licenses:
|