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 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