class SchemaExtractor::Formatters::Bigquery

Public Instance Methods

extension() click to toggle source
# File lib/schema_extractor/formatters/bigquery.rb, line 22
def extension
  ".json"
end
format(schema) click to toggle source
# File lib/schema_extractor/formatters/bigquery.rb, line 10
def format(schema)
  JSON.pretty_generate(
    schema.fields.map do |f|
      {
        name: f.name,
        type: bq_type(f),
        mode: bq_mode(f)
      }
    end
  )
end

Private Instance Methods

bq_mode(f) click to toggle source
# File lib/schema_extractor/formatters/bigquery.rb, line 28
def bq_mode(f)
  f.nullable? && f.default.nil? ? "NULLABLE" : "REQUIRED"
end
bq_type(f) click to toggle source
# File lib/schema_extractor/formatters/bigquery.rb, line 32
def bq_type(f)
  case f.type
  when :boolean
    "BOOL"
  when :decimal, :float
    "FLOAT"
  when :integer
    "INTEGER"
  when :string
    "STRING"
  when :date
    "DATE"
  when :datetime
    "TIMESTAMP"
  else
    raise InvalidBigqueryFieldTypeError, "#{f.type} is invalid type for bigquery field."
  end
end