in lib/elasticsearch-serverless/api/utils.rb [44:74]
def self.bulkify(payload)
operations = %w[index create delete update]
case
when payload.any? { |d|
d.is_a?(Hash) && d.values.first.is_a?(Hash) && operations.include?(d.keys.first.to_s) && (d.values.first[:data] || d.values.first['data'])
}
payload = payload
.inject([]) do |sum, item|
operation, meta = item.to_a.first
meta = meta.clone
data = meta.delete(:data) || meta.delete('data')
sum << { operation => meta }
sum << data if data
sum
end.map { |item| JSON.dump(item) }
payload << '' unless payload.empty?
when payload.all? { |d| d.is_a? String }
payload << ''
else
payload = payload.map { |item| JSON.dump(item) }
payload << ''
end
payload = payload.join("\n")
end