lib/duckdb/converter/int_to_sym.rb



# frozen_string_literal: true

module DuckDB
  module Converter
    module IntToSym # :nodoc: all
      STATEMENT_TYPES = %i[
        invalid
        select
        insert
        update
        explain
        delete
        prepare
        create
        execute
        alter
        transaction
        copy
        analyze
        variable_set
        create_func
        drop
        export
        pragma
        vacuum
        call
        set
        load
        relation
        extension
        logical_plan
        attach
        detach
        multi
      ].freeze

      HASH_TYPES = {
        0 => :invalid,
        1 => :boolean,
        2 => :tinyint,
        3 => :smallint,
        4 => :integer,
        5 => :bigint,
        6 => :utinyint,
        7 => :usmallint,
        8 => :uinteger,
        9 => :ubigint,
        10 => :float,
        11 => :double,
        12 => :timestamp,
        13 => :date,
        14 => :time,
        15 => :interval,
        16 => :hugeint,
        32 => :uhugeint,
        17 => :varchar,
        18 => :blob,
        19 => :decimal,
        20 => :timestamp_s,
        21 => :timestamp_ms,
        22 => :timestamp_ns,
        23 => :enum,
        24 => :list,
        25 => :struct,
        26 => :map,
        33 => :array,
        27 => :uuid,
        28 => :union,
        29 => :bit,
        30 => :time_tz,
        31 => :timestamp_tz,
        35 => :bignum,
        36 => :sqlnull,
        37 => :string_literal,
        38 => :integer_literal
      }.freeze

      module_function

      def statement_type_to_sym(val) # :nodoc:
        raise DuckDB::Error, "Unknown statement type: #{val}" if val >= STATEMENT_TYPES.size

        STATEMENT_TYPES[val]
      end

      def type_to_sym(val) # :nodoc:
        raise DuckDB::Error, "Unknown type: #{val}" unless HASH_TYPES.key?(val)

        HASH_TYPES[val]
      end
    end
  end
end