Class: DataMapper::Adapters::Sql::Commands::DeleteCommand
- Defined in:
- lib/data_mapper/adapters/sql/commands/delete_command.rb
Instance Method Summary collapse
- #call ⇒ Object
- #delete_all? ⇒ Boolean
- #drop? ⇒ Boolean
-
#initialize(adapter, klass_or_instance, options = nil) ⇒ DeleteCommand
constructor
A new instance of DeleteCommand.
- #klass ⇒ Object
- #session ⇒ Object
- #to_delete_sql ⇒ Object
- #to_drop_sql ⇒ Object
- #to_sql ⇒ Object
- #to_truncate_sql ⇒ Object
- #truncate? ⇒ Boolean
Constructor Details
#initialize(adapter, klass_or_instance, options = nil) ⇒ DeleteCommand
Returns a new instance of DeleteCommand.
8 9 10 |
# File 'lib/data_mapper/adapters/sql/commands/delete_command.rb', line 8 def initialize(adapter, klass_or_instance, = nil) @adapter, @klass_or_instance, @options = adapter, klass_or_instance, end |
Instance Method Details
#call ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/data_mapper/adapters/sql/commands/delete_command.rb', line 59 def call result = nil if truncate? result = execute_truncate(to_sql) session.identity_map.clear!(klass) unless session.nil? elsif drop? result = execute_drop(to_sql) session.identity_map.clear!(klass) unless session.nil? elsif delete_all? result = execute_delete_all(to_sql) session.identity_map.clear!(klass) unless session.nil? else @klass_or_instance.class.callbacks.execute(:before_destroy, @klass_or_instance) result = execute(to_sql) if result @klass_or_instance.instance_variable_set(:@new_record, true) @klass_or_instance.session = session @klass_or_instance.original_hashes.clear session.identity_map.delete(@klass_or_instance) unless session.nil? @klass_or_instance.class.callbacks.execute(:after_destroy, @klass_or_instance) end end return result rescue => error @adapter.log.error(error) raise error end |
#delete_all? ⇒ Boolean
22 23 24 |
# File 'lib/data_mapper/adapters/sql/commands/delete_command.rb', line 22 def delete_all? return !truncate? && !drop? && @klass_or_instance.kind_of?(Class) end |
#drop? ⇒ Boolean
17 18 19 20 |
# File 'lib/data_mapper/adapters/sql/commands/delete_command.rb', line 17 def drop? return false if @options.nil? @options[:drop] end |
#klass ⇒ Object
26 27 28 |
# File 'lib/data_mapper/adapters/sql/commands/delete_command.rb', line 26 def klass @klass_or_instance.kind_of?(Class) ? @klass_or_instance : @klass_or_instance.class end |
#session ⇒ Object
54 55 56 57 |
# File 'lib/data_mapper/adapters/sql/commands/delete_command.rb', line 54 def session return nil if @options.nil? @options[:session] end |
#to_delete_sql ⇒ Object
38 39 40 41 42 |
# File 'lib/data_mapper/adapters/sql/commands/delete_command.rb', line 38 def to_delete_sql sql = "DELETE FROM " << @adapter[klass].to_sql sql << " WHERE id = " << @adapter.quote_value(@klass_or_instance.key) unless delete_all? return sql end |
#to_drop_sql ⇒ Object
34 35 36 |
# File 'lib/data_mapper/adapters/sql/commands/delete_command.rb', line 34 def to_drop_sql "DROP TABLE #{@adapter[@klass_or_instance].to_sql}" end |
#to_sql ⇒ Object
44 45 46 47 48 49 50 51 52 |
# File 'lib/data_mapper/adapters/sql/commands/delete_command.rb', line 44 def to_sql if truncate? to_truncate_sql elsif drop? to_drop_sql else to_delete_sql end end |
#to_truncate_sql ⇒ Object
30 31 32 |
# File 'lib/data_mapper/adapters/sql/commands/delete_command.rb', line 30 def to_truncate_sql "TRUNCATE TABLE " << @adapter[@klass_or_instance].to_sql end |
#truncate? ⇒ Boolean
12 13 14 15 |
# File 'lib/data_mapper/adapters/sql/commands/delete_command.rb', line 12 def truncate? return false if @options.nil? @options[:truncate] end |