Class: Rapids::Batch::CreateTrigger
- Inherits:
-
Object
- Object
- Rapids::Batch::CreateTrigger
- Includes:
- ModelExtensions
- Defined in:
- lib/rapids/batch/create_trigger.rb
Instance Method Summary collapse
-
#initialize(model, batch_definition, options = {}) ⇒ CreateTrigger
constructor
A new instance of CreateTrigger.
- #to_sql ⇒ Object
Methods included from ModelExtensions
#batch_table_name, #columns, #default_on_nil, #quote_bound_value, #sql_column_name
Constructor Details
#initialize(model, batch_definition, options = {}) ⇒ CreateTrigger
Returns a new instance of CreateTrigger.
9 10 11 12 13 |
# File 'lib/rapids/batch/create_trigger.rb', line 9 def initialize(model,batch_definition, = {}) @model = model @batch = batch_definition @options = end |
Instance Method Details
#to_sql ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/rapids/batch/create_trigger.rb', line 15 def to_sql declares = @batch.find_or_creates.map do |find_or_create| "declare #{variable_name(find_or_create.name,[])} integer;" end.join("\n") columns_helper = ColumnsHelper.new(@model,@batch) main_columns = columns_helper.find_all{|column,path| path == []} insert_header = (main_columns.map(&:first) + criteria_columns(@model,association_find_or_creates.map(&:name))).map{|a|sql_column_name(a,[])} insert_values = main_columns.map{|a|"new.#{sql_column_name(a.first,[])}"} + association_find_or_creates.map(&:name).map{|name|variable_name(name,[])} <<-TRIGGER_SQL create trigger `#{batch_table_name}_trigger` after insert on `#{batch_table_name}` for each row begin #{declares} #{find_or_create_sql(@model,@batch)} #{@options[:replace] ? "replace" : "insert"} into `#{@model.table_name}` (#{insert_header.join(",")}) values (#{insert_values.join(",")}); #{updates_sql(@model,@batch)} end TRIGGER_SQL end |