sequel 0.0.13 → 0.0.14

Sign up to get free protection for your applications and to get access to all the features.
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.13"
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",
@@ -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; @@db; end
8
- def self.db=(db); @@db = db; end
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 || ((superclass != Model) && (superclass.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
- def self.set_dataset(ds); @dataset = ds; @dataset.record_class = self; end
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; @@db; end
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(table_name)
261
+ def self.Model(table)
250
262
  Class.new(Sequel::Model) do
251
- meta_def(:inherited) {|c| c.set_table_name(table_name)}
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.13
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