Module: Sack::Database::Generator

Defined in:
lib/sack/database/generator.rb

Overview

Generator Module: Provides SQL generator methods for building queries.

Class Method Summary collapse

Class Method Details

.fields(schema, table, field_hash) ⇒ String

Generate Field Name List: Builds a list of field names present in field_hash, separated by commas.

Parameters:

  • schema (Hash)

    Database schema

  • table (Symbol)

    Table name

  • field_hash (Hash)

    Hash containing field names as keys

Returns:

  • (String)

    A comma-separated list of field names



23
24
25
# File 'lib/sack/database/generator.rb', line 23

def self.fields schema, table, field_hash
	field_hash.keys.collect { |k| Sanitizer.field schema, table, k }.join ', '
end

.marks(field_hash) ⇒ String

Value Marks: Builds a list of field markers (‘?’) for fields present in field_hash, separated by commas.

Parameters:

  • field_hash (Hash)

    Hash containing fields

Returns:

  • (String)

    A comma-separated list of field markers (‘?’)



31
32
33
# File 'lib/sack/database/generator.rb', line 31

def self.marks field_hash
	(['?'] * field_hash.size).join ', '
end

.update_marks(schema, table, field_hash) ⇒ String

Update Marks: Builds a list of field value markers (‘field = ?’) for fields present in field_hash, separated by commas.

Parameters:

  • schema (Hash)

    Database schema

  • table (Symbol)

    Table name

  • field_hash (Hash)

    Hash containing field names as keys

Returns:

  • (String)

    A comma-separated list of field value markers (‘field = ?’)



41
42
43
# File 'lib/sack/database/generator.rb', line 41

def self.update_marks schema, table, field_hash
	field_hash.keys.collect { |k| "#{Sanitizer.field schema, table, k} = ?" }.join ', '
end

.values(vals) ⇒ Array

Values: Replaces all symbols in vals by their stringified values.

Parameters:

  • vals (Array)

    Array of value objects

Returns:

  • (Array)

    A copy of vals where every symbol has been replaced by its string representation



49
50
51
# File 'lib/sack/database/generator.rb', line 49

def self.values vals
	vals.collect { |v| v.is_a?(Symbol) ? v.to_s : v }
end