sequel 0.0.13 → 0.0.14
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.
- data/CHANGELOG +10 -0
- data/Rakefile +1 -1
- data/lib/sequel/dataset.rb +4 -4
- data/lib/sequel/model.rb +30 -12
- metadata +1 -2
data/CHANGELOG
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
*0.0.14*
|
2
|
+
|
3
|
+
* Added Model#id to to return the id column.
|
4
|
+
|
5
|
+
* Fixed Model's attribute accessors (hopefully for the last time).
|
6
|
+
|
7
|
+
* Changed Model.db and Model.db= to allow different databases for different model classes.
|
8
|
+
|
9
|
+
* Fixed bug in aggregate methods (max, min, etc) for datasets using record classes.
|
10
|
+
|
1
11
|
*0.0.13*
|
2
12
|
|
3
13
|
* Fixed Model#method_missing to do both find, filter and attribute accessors. duh.
|
data/Rakefile
CHANGED
@@ -6,7 +6,7 @@ require 'fileutils'
|
|
6
6
|
include FileUtils
|
7
7
|
|
8
8
|
NAME = "sequel"
|
9
|
-
VERS = "0.0.
|
9
|
+
VERS = "0.0.14"
|
10
10
|
CLEAN.include ['**/.*.sw?', 'pkg/*', '.config', 'doc/*', 'coverage/*']
|
11
11
|
RDOC_OPTS = ['--quiet', '--title', "Sequel: Concise ORM for Ruby",
|
12
12
|
"--opname", "index.html",
|
data/lib/sequel/dataset.rb
CHANGED
@@ -365,19 +365,19 @@ module Sequel
|
|
365
365
|
|
366
366
|
# aggregates
|
367
367
|
def min(field)
|
368
|
-
select(field.MIN).first.values.first
|
368
|
+
select(field.MIN).naked.first.values.first
|
369
369
|
end
|
370
370
|
|
371
371
|
def max(field)
|
372
|
-
select(field.MAX).first.values.first
|
372
|
+
select(field.MAX).naked.first.values.first
|
373
373
|
end
|
374
374
|
|
375
375
|
def sum(field)
|
376
|
-
select(field.SUM).first.values.first
|
376
|
+
select(field.SUM).naked.first.values.first
|
377
377
|
end
|
378
378
|
|
379
379
|
def avg(field)
|
380
|
-
select(field.AVG).first.values.first
|
380
|
+
select(field.AVG).naked.first.values.first
|
381
381
|
end
|
382
382
|
|
383
383
|
EXISTS_EXPR = "EXISTS (%s)".freeze
|
data/lib/sequel/model.rb
CHANGED
@@ -4,11 +4,13 @@ module Sequel
|
|
4
4
|
class Model
|
5
5
|
@@db = nil
|
6
6
|
|
7
|
-
def self.db
|
8
|
-
|
7
|
+
def self.db
|
8
|
+
@db ||= ((superclass != Object) && (superclass.db)) || nil
|
9
|
+
end
|
10
|
+
def self.db=(db); @db = db; end
|
9
11
|
|
10
12
|
def self.table_name
|
11
|
-
@table_name
|
13
|
+
@table_name ||= ((superclass != Model) && (superclass.table_name)) || nil
|
12
14
|
end
|
13
15
|
def self.set_table_name(t); @table_name = t; end
|
14
16
|
|
@@ -23,7 +25,12 @@ module Sequel
|
|
23
25
|
@dataset.record_class = self
|
24
26
|
@dataset
|
25
27
|
end
|
26
|
-
|
28
|
+
|
29
|
+
def self.set_dataset(ds)
|
30
|
+
@db = ds.db
|
31
|
+
@dataset = ds
|
32
|
+
@dataset.record_class = self
|
33
|
+
end
|
27
34
|
|
28
35
|
def self.cache_by(column, expiration)
|
29
36
|
@cache_column = column
|
@@ -195,7 +202,6 @@ module Sequel
|
|
195
202
|
|
196
203
|
FIND_BY_REGEXP = /^find_by_(.*)/.freeze
|
197
204
|
FILTER_BY_REGEXP = /^filter_by_(.*)/.freeze
|
198
|
-
WRITE_ATTR_REGEXP = /(.*)=$/.freeze
|
199
205
|
|
200
206
|
def self.method_missing(m, *args)
|
201
207
|
Thread.exclusive do
|
@@ -208,15 +214,11 @@ module Sequel
|
|
208
214
|
c = $1
|
209
215
|
meta_def(method_name) {|arg| filter(c => arg)}
|
210
216
|
send(m, *args) if respond_to?(m)
|
211
|
-
elsif method_name =~ WRITE_ATTR_REGEXP
|
212
|
-
self[$1.to_sym] = value
|
213
|
-
else
|
214
|
-
self[m]
|
215
217
|
end
|
216
218
|
end
|
217
219
|
end
|
218
220
|
|
219
|
-
def db;
|
221
|
+
def db; self.class.db; end
|
220
222
|
|
221
223
|
def reload
|
222
224
|
temp = self.class[@pkey]
|
@@ -227,6 +229,16 @@ module Sequel
|
|
227
229
|
|
228
230
|
def []=(field, value); @values[field] = value; end
|
229
231
|
|
232
|
+
WRITE_ATTR_REGEXP = /(.*)=$/.freeze
|
233
|
+
|
234
|
+
def method_missing(m, value = nil)
|
235
|
+
if m.to_s =~ WRITE_ATTR_REGEXP
|
236
|
+
self[$1.to_sym] = value
|
237
|
+
else
|
238
|
+
self[m]
|
239
|
+
end
|
240
|
+
end
|
241
|
+
|
230
242
|
def save
|
231
243
|
if @pkey
|
232
244
|
model.dataset.filter(primary_key => @pkey).update(@values)
|
@@ -246,9 +258,15 @@ module Sequel
|
|
246
258
|
end
|
247
259
|
end
|
248
260
|
|
249
|
-
def self.Model(
|
261
|
+
def self.Model(table)
|
250
262
|
Class.new(Sequel::Model) do
|
251
|
-
meta_def(:inherited)
|
263
|
+
meta_def(:inherited) do |c|
|
264
|
+
if table.is_a?(Dataset)
|
265
|
+
c.set_dataset(table)
|
266
|
+
else
|
267
|
+
c.set_table_name(table)
|
268
|
+
end
|
269
|
+
end
|
252
270
|
end
|
253
271
|
end
|
254
272
|
end
|
metadata
CHANGED
@@ -3,7 +3,7 @@ rubygems_version: 0.9.2
|
|
3
3
|
specification_version: 1
|
4
4
|
name: sequel
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.0.
|
6
|
+
version: 0.0.14
|
7
7
|
date: 2007-03-28 00:00:00 +02:00
|
8
8
|
summary: Concise ORM for Ruby.
|
9
9
|
require_paths:
|
@@ -33,7 +33,6 @@ files:
|
|
33
33
|
- README
|
34
34
|
- Rakefile
|
35
35
|
- bin/sequel
|
36
|
-
- doc/rdoc
|
37
36
|
- lib/sequel
|
38
37
|
- lib/sequel.rb
|
39
38
|
- lib/sequel/dataset.rb
|