groovy 0.6.0 → 0.6.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/lib/groovy/model.rb +17 -2
- data/lib/groovy/schema.rb +5 -3
- data/lib/groovy/vector.rb +4 -0
- data/lib/groovy/version.rb +1 -1
- data/spec/vector_spec.rb +56 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bf0e3aa6e2c0d1e3d9e0245062e1b778e4da15e9130cc672d07eb1e474e25d0f
|
4
|
+
data.tar.gz: add6fe670e018efb4f5706b02d05154bdf525d5f2bb3f8ce378e60bb92471f59
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '0228c03673a0d86e3072c3f7a952a152c3799125f3c3a2998a219d6015a0c6ccea54bd10972996f17dab52b47298fdc3424fe9bff5de3343a3803748d22bbef1'
|
7
|
+
data.tar.gz: 8302d8af1e7940a878643f123760e5ae482b786c6c6857cf69306f8b2bb0e79a7364f05035659611102966a7b199aae7ce1eab869cdc9f2ab8055551cb5cdc42
|
data/lib/groovy/model.rb
CHANGED
@@ -26,7 +26,7 @@ module Groovy
|
|
26
26
|
# end
|
27
27
|
|
28
28
|
def self.model_from_table(table_name)
|
29
|
-
|
29
|
+
get_class(table_name.to_s.sub(/ies$/, 'y').sub(/s$/, ''))
|
30
30
|
end
|
31
31
|
|
32
32
|
def self.included(base)
|
@@ -35,6 +35,11 @@ module Groovy
|
|
35
35
|
base.table_name = base.name.sub(/y$/, 'ie') + 's'
|
36
36
|
end
|
37
37
|
|
38
|
+
def self.get_class(table_name)
|
39
|
+
classified = table_name.gsub(/([A-Z])/, '_\1').split('_').collect! { |w| w.capitalize }.join
|
40
|
+
Kernel.const_get(classified)
|
41
|
+
end
|
42
|
+
|
38
43
|
module ClassMethods
|
39
44
|
extend Forwardable
|
40
45
|
attr_accessor :context_name, :table_name
|
@@ -86,6 +91,12 @@ module Groovy
|
|
86
91
|
add_accessors_for(name)
|
87
92
|
end
|
88
93
|
|
94
|
+
def add_reference(name, table_name, options = {})
|
95
|
+
schema.reference(name, table_name, options)
|
96
|
+
schema.sync
|
97
|
+
add_accessors_for(name)
|
98
|
+
end
|
99
|
+
|
89
100
|
def add_accessors_for(col, s = schema)
|
90
101
|
if s.attribute_columns.include?(col)
|
91
102
|
add_attr_accessors(col)
|
@@ -378,7 +389,11 @@ module Groovy
|
|
378
389
|
|
379
390
|
def save(options = {})
|
380
391
|
return false if respond_to?(:invalid?) and invalid?
|
381
|
-
new_record?
|
392
|
+
if new_record?
|
393
|
+
create && true
|
394
|
+
else
|
395
|
+
update
|
396
|
+
end
|
382
397
|
end
|
383
398
|
|
384
399
|
def save!(options = {})
|
data/lib/groovy/schema.rb
CHANGED
@@ -108,9 +108,11 @@ module Groovy
|
|
108
108
|
|
109
109
|
ensure_created!
|
110
110
|
remove_columns_not_in(@spec.keys)
|
111
|
+
|
111
112
|
@spec.each do |col, spec|
|
112
113
|
check_and_add_column(col, spec[:type], spec[:args])
|
113
114
|
end
|
115
|
+
|
114
116
|
@index_columns.each do |col|
|
115
117
|
add_index_on(col)
|
116
118
|
end
|
@@ -187,12 +189,12 @@ module Groovy
|
|
187
189
|
end
|
188
190
|
|
189
191
|
def create_table!
|
190
|
-
log "Creating table!"
|
192
|
+
log "Creating table #{table_name}!"
|
191
193
|
Groonga::Schema.create_table(table_name, context: context)
|
192
194
|
end
|
193
195
|
|
194
196
|
def remove_table!
|
195
|
-
log "Removing table!"
|
197
|
+
log "Removing table #{table_name}!"
|
196
198
|
Groonga::Schema.remove_table(table_name, context: context)
|
197
199
|
@table = nil
|
198
200
|
end
|
@@ -202,7 +204,7 @@ module Groovy
|
|
202
204
|
end
|
203
205
|
|
204
206
|
def log(str)
|
205
|
-
puts "[#{table_name}] #{str}" if ENV['DEBUG']
|
207
|
+
puts "[#{table_name}] #{str}" # if ENV['DEBUG']
|
206
208
|
end
|
207
209
|
end
|
208
210
|
end
|
data/lib/groovy/vector.rb
CHANGED
data/lib/groovy/version.rb
CHANGED
data/spec/vector_spec.rb
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
require_relative './spec_helper'
|
2
|
+
|
3
|
+
describe Groovy::Model do
|
4
|
+
|
5
|
+
before :all do
|
6
|
+
Groovy.open('tmp/vector', 'vector_spec')
|
7
|
+
load_schema! 'vector_spec'
|
8
|
+
end
|
9
|
+
|
10
|
+
after :all do
|
11
|
+
Groovy.close('vector_spec')
|
12
|
+
end
|
13
|
+
|
14
|
+
def load_vector_schema!
|
15
|
+
klass = Class.new
|
16
|
+
Object.const_set("Comment", klass)
|
17
|
+
Comment.class_eval do
|
18
|
+
include Groovy::Model
|
19
|
+
schema(context: 'vector_spec') do |t|
|
20
|
+
t.string :content
|
21
|
+
t.timestamps
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
klass = Class.new;
|
26
|
+
Object.const_set("User", klass)
|
27
|
+
User.class_eval do
|
28
|
+
include Groovy::Model
|
29
|
+
schema(context: 'vector_spec') do |t|
|
30
|
+
t.string :name
|
31
|
+
t.timestamps
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
Comment.add_reference :author, "Users"
|
36
|
+
User.add_reference :comments, "Comments", type: :vector
|
37
|
+
end
|
38
|
+
|
39
|
+
describe 'relations' do
|
40
|
+
|
41
|
+
before do
|
42
|
+
load_vector_schema!
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'loads records and keeps relations' do
|
46
|
+
user = User.new(name: 'John')
|
47
|
+
expect(user.save).to eq(true)
|
48
|
+
comment = Comment.new(author: user, content: 'Hello there!')
|
49
|
+
expect(comment.save).to eq(true)
|
50
|
+
user.comments << comment
|
51
|
+
expect(user.reload.comments).to eq([comment])
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: groovy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tomás Pollak
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-11-
|
11
|
+
date: 2023-11-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rroonga
|
@@ -102,6 +102,7 @@ files:
|
|
102
102
|
- spec/query_spec.rb
|
103
103
|
- spec/search_spec.rb
|
104
104
|
- spec/spec_helper.rb
|
105
|
+
- spec/vector_spec.rb
|
105
106
|
homepage: https://github.com/tomas/groovy
|
106
107
|
licenses: []
|
107
108
|
metadata: {}
|