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

Version Path
multiwoven-integrations-0.1.48 lib/multiwoven/integrations/core/query_builder.rb
multiwoven-integrations-0.1.47 lib/multiwoven/integrations/core/query_builder.rb
multiwoven-integrations-0.1.46 lib/multiwoven/integrations/core/query_builder.rb
multiwoven-integrations-0.1.45 lib/multiwoven/integrations/core/query_builder.rb
multiwoven-integrations-0.1.44 lib/multiwoven/integrations/core/query_builder.rb