rapids 0.1.2 → 0.1.3

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.
@@ -6,9 +6,10 @@ module Rapids
6
6
  class CreateTrigger
7
7
  include ModelExtensions
8
8
 
9
- def initialize(model,batch_definition)
9
+ def initialize(model,batch_definition,options = {})
10
10
  @model = model
11
11
  @batch = batch_definition
12
+ @options = options
12
13
  end
13
14
 
14
15
  def to_sql
@@ -29,7 +30,7 @@ module Rapids
29
30
 
30
31
  #{find_or_create_sql(@model,@batch.find_or_creates)}
31
32
 
32
- insert into `#{@model.table_name}` (#{insert_header.join(",")})
33
+ #{@options[:replace] ? "replace" : "insert"} into `#{@model.table_name}` (#{insert_header.join(",")})
33
34
  values (#{insert_values.join(",")});
34
35
  end
35
36
  TRIGGER_SQL
@@ -6,10 +6,11 @@ module Rapids
6
6
  class InsertInto
7
7
  include ModelExtensions
8
8
 
9
- def initialize(model,batch_definition,values)
9
+ def initialize(model,batch_definition,values,options = {})
10
10
  @model = model
11
11
  @batch = batch_definition
12
12
  @values = values
13
+ @options = options
13
14
  end
14
15
 
15
16
  def to_sql
data/lib/rapids/batch.rb CHANGED
@@ -17,14 +17,14 @@ module Rapids
17
17
  end
18
18
  end
19
19
 
20
- def batch_create(collection)
20
+ def batch_create(collection,options = {})
21
21
  drop_batch_table_if_exists
22
22
 
23
23
  create_batch_table
24
24
 
25
- create_batch_trigger
25
+ create_batch_trigger(options)
26
26
 
27
- batch_insert(collection)
27
+ batch_insert(collection,options)
28
28
  end
29
29
 
30
30
  def batch(&block)
@@ -44,14 +44,14 @@ module Rapids
44
44
  connection.execute(create_table.to_sql)
45
45
  end
46
46
 
47
- def create_batch_trigger
48
- create_trigger = CreateTrigger.new(self,@batch)
49
-
47
+ def create_batch_trigger(options)
48
+ create_trigger = CreateTrigger.new(self,@batch,options)
49
+
50
50
  connection.execute(create_trigger.to_sql)
51
51
  end
52
52
 
53
- def batch_insert(values)
54
- insert_into = InsertInto.new(self,@batch,values)
53
+ def batch_insert(values,options)
54
+ insert_into = InsertInto.new(self,@batch,values,options)
55
55
 
56
56
  connection.execute(insert_into.to_sql)
57
57
  end
@@ -1,3 +1,3 @@
1
1
  module Rapids
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.3"
3
3
  end
@@ -32,5 +32,12 @@ module Rapids::Batch
32
32
  create_trigger = CreateTrigger.new(Post,batch)
33
33
  clean_sql(create_trigger.to_sql).should == "create trigger `$posts_batch_trigger` after insert on `$posts_batch` for each row\nbegin\ndeclare find_or_create$AltCategory integer;\nselect id from `alt_categories` where `name` <=> new.`foc$AltCategory$name` into find_or_create$AltCategory;\nif find_or_create$AltCategory is null then\ninsert into alt_categories (`name`)\nvalues (new.`foc$AltCategory$name`);\nend if;\ninsert into `posts` (`author_id`,`category`,`name`)\nvalues (new.`author_id`,new.`category`,new.`name`);\nend"
34
34
  end
35
+
36
+ it "should generate sql for a replace insert instead" do
37
+ batch = Rapids::Batch::DefineBatch.new
38
+
39
+ create_trigger = CreateTrigger.new(Category,batch,:replace => true)
40
+ clean_sql(create_trigger.to_sql).should == "create trigger `$categories_batch_trigger` after insert on `$categories_batch` for each row\nbegin\nreplace into `categories` (`category`)\nvalues (new.`category`);\nend"
41
+ end
35
42
  end
36
43
  end
@@ -39,6 +39,16 @@ module Rapids::Batch
39
39
  clean_sql(insert_into.to_sql).should == "INSERT INTO `$posts_batch` (`foc$AltCategory$name`,`author_id`,`category`,`name`) VALUES ('food',NULL,'food','Dining at 323 Butter St')"
40
40
  end
41
41
 
42
+ it "should generate sql and ignore the replace option" do
43
+ batch = Rapids::Batch::DefineBatch.new
44
+ collection = %w{food politics}.map do |category_name|
45
+ Category.new(:category => category_name)
46
+ end
47
+
48
+ insert_into = InsertInto.new(Category,batch,collection,:replace => true)
49
+ clean_sql(insert_into.to_sql).should == "INSERT INTO `$categories_batch` (`category`) VALUES ('food'),('politics')"
50
+ end
51
+
42
52
  describe "Without model objects" do
43
53
  it "should generate sql for a simple batch definition" do
44
54
  batch = Rapids::Batch::DefineBatch.new
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rapids
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
4
+ hash: 29
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 2
10
- version: 0.1.2
9
+ - 3
10
+ version: 0.1.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - James Smith
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-08-24 00:00:00 -04:00
18
+ date: 2011-08-26 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency