Sha256: 9becd55e145645c64a82da656c2da7e62449542e52f5a88f8cddc9d50e33e97c

Contents?: true

Size: 992 Bytes

Versions: 4

Compression:

Stored size: 992 Bytes

Contents

module Spider; module Migrations
    
    class Replace < Migration
        
        def initialize(model, element, values)
            @model = model
            @element = element
            @values = values
        end
        
        def run
            field = @model.mapper.schema.field(@model.get_element(@element).name)
            table = @model.mapper.schema.table
            raise "Table #{table} does not have a field #{field}" unless field
            @values.each do |from, to|
                save = {
                    :table => table, 
                    :values => {field => to},
                    :condition => {:values => [[field, '=', from]]}
                }
                sql, bind_vars = @model.storage.sql_update(save)
                return @model.storage.execute(sql, *bind_vars)                
            end
        end
        
        def undo
            Replace.new(@model, @element, @values.invert).run
        end
        
    end
    
end; end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
spiderfw-0.6.20 lib/spiderfw/model/migrations/replace.rb
spiderfw-0.6.19 lib/spiderfw/model/migrations/replace.rb
spiderfw-0.6.18 lib/spiderfw/model/migrations/replace.rb
spiderfw-0.6.17 lib/spiderfw/model/migrations/replace.rb