mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
6e43a207c6
This partly reverts #35617. #35617 includes unused code (for `InsertStatement`) and re-using query annotation for `update_all` and `delete_all`, which has not been discussed yet. If a relation has any annotation, I think it is mostly for SELECT query, so re-using annotation by default is not always desired behavior for me. We should discuss about desired behavior before publishing the implementation.
45 lines
1.1 KiB
Ruby
45 lines
1.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module Arel # :nodoc: all
|
|
module Nodes
|
|
class DeleteStatement < Arel::Nodes::Node
|
|
attr_accessor :left, :right, :orders, :limit, :offset, :key
|
|
|
|
alias :relation :left
|
|
alias :relation= :left=
|
|
alias :wheres :right
|
|
alias :wheres= :right=
|
|
|
|
def initialize(relation = nil, wheres = [])
|
|
super()
|
|
@left = relation
|
|
@right = wheres
|
|
@orders = []
|
|
@limit = nil
|
|
@offset = nil
|
|
@key = nil
|
|
end
|
|
|
|
def initialize_copy(other)
|
|
super
|
|
@left = @left.clone if @left
|
|
@right = @right.clone if @right
|
|
end
|
|
|
|
def hash
|
|
[self.class, @left, @right, @orders, @limit, @offset, @key].hash
|
|
end
|
|
|
|
def eql?(other)
|
|
self.class == other.class &&
|
|
self.left == other.left &&
|
|
self.right == other.right &&
|
|
self.orders == other.orders &&
|
|
self.limit == other.limit &&
|
|
self.offset == other.offset &&
|
|
self.key == other.key
|
|
end
|
|
alias :== :eql?
|
|
end
|
|
end
|
|
end
|