iseshima_store 0.1.3 → 0.1.4
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/README.md +51 -12
- data/lib/iseshima_store/base.rb +10 -4
- data/lib/iseshima_store/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 071aa47fd9c81f21b21728e05fe2dc569a94b439
|
4
|
+
data.tar.gz: 31e2d1633a7ae4cbec512f6688a52915873c9264
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 007f22aea10c6d2d225c2a087f7c7f1be6b766ac0f8d6fa341c8f23176df718c9b0326e2ccfea6f85358aa668bfee981d0b0e58f5a2c6b8cfdbe122795b3c7e4
|
7
|
+
data.tar.gz: ae9da892271486c0674f6a01bf16861801a40f88a8c38973375d38a95128e86d8f5448a5d628d4f47a427ec918706550533947632a52fb985886271c6bef73da
|
data/README.md
CHANGED
@@ -24,7 +24,7 @@ Or install it yourself as:
|
|
24
24
|
|
25
25
|
You need to set project_id.
|
26
26
|
|
27
|
-
```
|
27
|
+
```ruby
|
28
28
|
IseshimaStore::Connection.configure do |config|
|
29
29
|
config.project_id = 'xxxx'
|
30
30
|
end
|
@@ -34,39 +34,80 @@ Iseshima Store depends on `gcloud-ruby` which uses ENV variables, you can set yo
|
|
34
34
|
|
35
35
|
### Model
|
36
36
|
|
37
|
-
```
|
37
|
+
```ruby
|
38
38
|
class User
|
39
39
|
include IseshimaStore::Base
|
40
|
-
|
40
|
+
attr_properties :name, :email
|
41
41
|
end
|
42
42
|
```
|
43
43
|
|
44
|
-
The only thing you have to do is just
|
44
|
+
The only thing you have to do is just 2 things.
|
45
|
+
|
46
|
+
1. include `IseshimaStore::Base` in your model class.
|
47
|
+
2. declare your properties with `attr_properties`
|
48
|
+
|
45
49
|
Any class is ok to use.
|
46
50
|
|
47
51
|
### Create
|
48
52
|
|
49
|
-
```
|
53
|
+
```ruby
|
50
54
|
user = User.new
|
51
|
-
user.email = '
|
52
|
-
user.name = '
|
55
|
+
user.email = 'taro@test.com'
|
56
|
+
user.name = 'taro'
|
57
|
+
user.save!
|
58
|
+
```
|
59
|
+
|
60
|
+
or
|
61
|
+
|
62
|
+
```ruby
|
63
|
+
User.new.assign_attributes(
|
64
|
+
email: 'taro@test.com',
|
65
|
+
name: 'taro'
|
66
|
+
).save!
|
67
|
+
```
|
68
|
+
|
69
|
+
### Save or Delete
|
70
|
+
|
71
|
+
```
|
72
|
+
# save
|
73
|
+
user = User.first
|
74
|
+
user.assign_attributes(email: 'taro@test.jp')
|
53
75
|
user.save!
|
76
|
+
|
77
|
+
# delete
|
78
|
+
user.destroy
|
54
79
|
```
|
55
80
|
|
56
|
-
IseshimaStore does not have validations.
|
81
|
+
IseshimaStore does not have validations.
|
57
82
|
Another gem like `ActiveModel` is recommended to combine.
|
58
83
|
|
59
84
|
### Finder
|
60
85
|
|
61
|
-
```
|
86
|
+
```ruby
|
62
87
|
users = User.where(email: 'test@test.com')
|
63
88
|
user = User.find_by(email: 'test@test.com')
|
64
89
|
user = User.find(12345) # id
|
90
|
+
|
91
|
+
# You can chain queries.
|
92
|
+
user = User.where(visible: true).find(10)
|
65
93
|
```
|
66
94
|
|
67
|
-
###
|
95
|
+
### Relation
|
68
96
|
|
97
|
+
|
98
|
+
```ruby
|
99
|
+
diary = Diary.new
|
100
|
+
diary.title = 'My nightmare'
|
101
|
+
diary.parent = user
|
102
|
+
diary.save!
|
69
103
|
```
|
104
|
+
|
105
|
+
`parent=(model)` sets model's key to the key's parent of instance.
|
106
|
+
|
107
|
+
|
108
|
+
### Low level search
|
109
|
+
|
110
|
+
```ruby
|
70
111
|
query = Gcloud::Datastore::Query.new
|
71
112
|
query.kind('User')
|
72
113
|
query.where('email', '=', 'test@test.com')
|
@@ -77,8 +118,6 @@ users = res[:records]
|
|
77
118
|
If you need `limit` & `cursor`, use this API.
|
78
119
|
|
79
120
|
|
80
|
-
|
81
|
-
|
82
121
|
## License
|
83
122
|
|
84
123
|
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
data/lib/iseshima_store/base.rb
CHANGED
@@ -90,9 +90,6 @@ module IseshimaStore
|
|
90
90
|
end
|
91
91
|
|
92
92
|
def destroy
|
93
|
-
if key.parent
|
94
|
-
key.parent = nil
|
95
|
-
end
|
96
93
|
IseshimaStore::Connection.current.delete(key)
|
97
94
|
end
|
98
95
|
|
@@ -146,7 +143,16 @@ module IseshimaStore
|
|
146
143
|
end
|
147
144
|
|
148
145
|
def key
|
149
|
-
|
146
|
+
path = []
|
147
|
+
obj = self
|
148
|
+
path << [obj.class.to_s, obj.id]
|
149
|
+
|
150
|
+
while obj.parent
|
151
|
+
obj = obj.parent
|
152
|
+
path << [obj.class.to_s, obj.id]
|
153
|
+
end
|
154
|
+
|
155
|
+
IseshimaStore::Connection.current.key(path.reverse)
|
150
156
|
end
|
151
157
|
end
|
152
158
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: iseshima_store
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- kotohata
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-06-
|
11
|
+
date: 2016-06-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|