sequel 0.0.11 → 0.0.12

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,5 +1,19 @@
1
+ *0.0.12*
2
+
3
+ * Model#save now correctly performs an INSERT for new objects.
4
+
5
+ * Added Model#reload for reloading an object from the database.
6
+
7
+ * Added Dataset#naked method for getting a version of a dataset that fetches records as hashes.
8
+
9
+ * Implemented attribute accessors for column values ala ActiveRecord models.
10
+
11
+ * Fixed filtering using nil values (e.g. dataset.filter(:parent_id => nil)).
12
+
1
13
  *0.0.11*
2
14
 
15
+ * Renamed Model.schema to Model.set_schema and Model.get_schema to Model.schema.
16
+
3
17
  * Improved Model class to allow descendants of model clases (thanks Pedro Gutierrez.)
4
18
 
5
19
  * Removed require 'postgres' in schema.rb (thanks Douglas Koszerek.)
data/Rakefile CHANGED
@@ -6,7 +6,7 @@ require 'fileutils'
6
6
  include FileUtils
7
7
 
8
8
  NAME = "sequel"
9
- VERS = "0.0.11"
9
+ VERS = "0.0.12"
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",
@@ -47,6 +47,13 @@ module Sequel
47
47
  self.class.new(@db, @opts.merge(opts), @record_class)
48
48
  end
49
49
 
50
+ # Returns a dataset that fetches records as hashes (instead of model
51
+ # objects). If no record class is defined for the dataset, self is
52
+ # returned.
53
+ def naked
54
+ @record_class ? self.class.new(@db, @opts) : self
55
+ end
56
+
50
57
  AS_REGEXP = /(.*)___(.*)/.freeze
51
58
  AS_FORMAT = "%s AS %s".freeze
52
59
  DOUBLE_UNDERSCORE = '__'.freeze
@@ -118,6 +125,7 @@ module Sequel
118
125
  # BETWEEN_EXPR = "(%s BETWEEN %s AND %s)".freeze
119
126
  INCLUSIVE_RANGE_EXPR = "(%s >= %s AND %s <= %s)".freeze
120
127
  EXCLUSIVE_RANGE_EXPR = "(%s >= %s AND %s < %s)".freeze
128
+ NULL_EXPR = "(%s IS NULL)".freeze
121
129
 
122
130
  # Formats an equality condition SQL expression.
123
131
  def where_condition(left, right)
@@ -129,6 +137,8 @@ module Sequel
129
137
  # BETWEEN_EXPR % [field_name(left), literal(right.begin), literal(right.end)]
130
138
  when Array:
131
139
  IN_EXPR % [left, literal(right)]
140
+ when NilClass:
141
+ NULL_EXPR % left
132
142
  when self.class:
133
143
  IN_EXPR % [left, right.sql]
134
144
  else
@@ -415,7 +425,7 @@ module Sequel
415
425
  end
416
426
 
417
427
  def print(*columns)
418
- Sequel::PrettyTable.print(all, columns.empty? ? nil : columns)
428
+ Sequel::PrettyTable.print(naked.all, columns.empty? ? nil : columns)
419
429
  end
420
430
  end
421
431
  end
data/lib/sequel/model.rb CHANGED
@@ -215,8 +215,34 @@ module Sequel
215
215
 
216
216
  def db; @@db; end
217
217
 
218
+ ASSIGN_METHOD_REGEXP = /(.*)=$/.freeze
219
+
220
+ def method_missing(sym, value = nil)
221
+ if sym.to_s =~ ASSIGN_METHOD_REGEXP
222
+ @values[$1.to_sym] = value
223
+ else
224
+ @values[sym]
225
+ end
226
+ end
227
+
228
+ def reload
229
+ temp = self.class[@pkey]
230
+ @values = self.class.dataset.naked[primary_key => @pkey]
231
+ end
232
+
218
233
  def [](field); @values[field]; end
219
234
 
235
+ def []=(field, value); @values[field] = value; end
236
+
237
+ def save
238
+ if @pkey
239
+ model.dataset.filter(primary_key => @pkey).update(@values)
240
+ else
241
+ @pkey = model.dataset.insert(@values)
242
+ reload
243
+ end
244
+ end
245
+
220
246
  def ==(obj)
221
247
  (obj.class == model) && (obj.pkey == @pkey)
222
248
  end
@@ -225,12 +251,6 @@ module Sequel
225
251
  model.dataset.filter(primary_key => @pkey).update(values)
226
252
  @values.merge!(values)
227
253
  end
228
-
229
- def []=(field, value); @values[field] = value; end
230
-
231
- def save
232
- model.dataset.filter(primary_key => @pkey).update(@values)
233
- end
234
254
  end
235
255
 
236
256
  def self.Model(table_name)
metadata CHANGED
@@ -1,9 +1,9 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.2
2
+ rubygems_version: 0.9.0
3
3
  specification_version: 1
4
4
  name: sequel
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.0.11
6
+ version: 0.0.12
7
7
  date: 2007-03-27 00:00:00 +02:00
8
8
  summary: Concise ORM for Ruby.
9
9
  require_paths:
@@ -33,18 +33,19 @@ files:
33
33
  - README
34
34
  - Rakefile
35
35
  - bin/sequel
36
+ - doc/rdoc
36
37
  - lib/sequel
37
38
  - lib/sequel.rb
39
+ - lib/sequel/connection_pool.rb
40
+ - lib/sequel/core_ext.rb
41
+ - lib/sequel/database.rb
38
42
  - lib/sequel/dataset.rb
39
43
  - lib/sequel/model.rb
44
+ - lib/sequel/mysql.rb
40
45
  - lib/sequel/postgres.rb
46
+ - lib/sequel/pretty_table.rb
41
47
  - lib/sequel/schema.rb
42
48
  - lib/sequel/sqlite.rb
43
- - lib/sequel/connection_pool.rb
44
- - lib/sequel/database.rb
45
- - lib/sequel/core_ext.rb
46
- - lib/sequel/mysql.rb
47
- - lib/sequel/pretty_table.rb
48
49
  - CHANGELOG
49
50
  test_files: []
50
51