Class: Aikido::Zen::IDOR::SQLQueryResult

Inherits:
Object
  • Object
show all
Defined in:
lib/aikido/zen/idor/analysis_result.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(kind:, tables:, filter_columns:, insert_columns: nil) ⇒ SQLQueryResult

Returns a new instance of SQLQueryResult.

Parameters:

Raises:

  • (ArgumentError)


142
143
144
145
146
147
148
149
# File 'lib/aikido/zen/idor/analysis_result.rb', line 142

def initialize(kind:, tables:, filter_columns:, insert_columns: nil)
  raise ArgumentError, "kind must be one of :select, :insert, :update, or :delete" unless [:select, :insert, :update, :delete].include?(kind)

  @kind = kind
  @tables = tables
  @filter_columns = filter_columns
  @insert_columns = insert_columns
end

Instance Attribute Details

#filter_columnsArray<Aikido::Zen::IDOR::FilterColumn>



158
159
160
# File 'lib/aikido/zen/idor/analysis_result.rb', line 158

def filter_columns
  @filter_columns
end

#insert_columnsArray<Array<Aikido::Zen::IDOR::InsertColumn>>?

Returns:



161
162
163
# File 'lib/aikido/zen/idor/analysis_result.rb', line 161

def insert_columns
  @insert_columns
end

#kind:select, ...

Returns:

  • (:select, :insert, :update, :delete)


152
153
154
# File 'lib/aikido/zen/idor/analysis_result.rb', line 152

def kind
  @kind
end

#tablesArray<Aikido::Zen::IDOR::Table>

Returns:



155
156
157
# File 'lib/aikido/zen/idor/analysis_result.rb', line 155

def tables
  @tables
end

Class Method Details

.from_json(data) ⇒ Object



127
128
129
130
131
132
133
134
135
136
# File 'lib/aikido/zen/idor/analysis_result.rb', line 127

def self.from_json(data)
  new(
    kind: data["kind"].to_sym,
    tables: data["tables"].map { |value| Table.from_json(value) },
    filter_columns: data["filters"].map { |value| FilterColumn.from_json(value) },
    insert_columns: data["insert_columns"]&.map do |values|
      values.map { |value| InsertColumn.from_json(value) }
    end
  )
end

Instance Method Details

#==(other) ⇒ Object Also known as: eql?



163
164
165
166
167
168
169
# File 'lib/aikido/zen/idor/analysis_result.rb', line 163

def ==(other)
  other.is_a?(self.class) &&
    other.kind == kind &&
    other.tables == tables &&
    other.filter_columns == filter_columns &&
    other.insert_columns == insert_columns
end