Sha256: fd3a8a13e0eb75e9c447c6e55465a06222ed569b85a2fc7a5fab8837a0ae6b9e
Contents?: true
Size: 1.03 KB
Versions: 25
Compression:
Stored size: 1.03 KB
Contents
# frozen_string_literal: true module Multiwoven module Integrations::Core class QueryBuilder def self.perform(action, table, record, primary_key = nil) case action.downcase when "insert" columns = record.keys.join(", ") values = record.values.map { |value| "'#{value}'" }.join(", ") # TODO: support bulk insert "INSERT INTO #{table} (#{columns}) VALUES (#{values});" when "update" # Ensure primary key is a string and exists within record for the WHERE clause return "Primary key '#{primary_key}' not found in record." if record[primary_key].nil? primary_key_value = record.delete(primary_key) # Remove and return the primary key value set_clause = record.map { |key, value| "#{key} = '#{value}'" }.join(", ") where_clause = "#{primary_key} = '#{primary_key_value}'" "UPDATE #{table} SET #{set_clause} WHERE #{where_clause};" else "Invalid action specified." end end end end end
Version data entries
25 entries across 25 versions & 2 rubygems