Class: ActiveRecord::ConnectionAdapters::CrateAdapter

Inherits:
AbstractAdapter
  • Object
show all
Includes:
ActiveRecord::ConnectionAdapters::Crate::SchemaStatements, DatabaseStatements
Defined in:
lib/active_record/connection_adapters/crate_adapter.rb

Defined Under Namespace

Classes: BindSubstitution, ColumnDefinition, CrateColumn, TableDefinition

Constant Summary collapse

ADAPTER_NAME =
'Crate'.freeze
NATIVE_DATABASE_TYPES =
{
    boolean: {name: "boolean"},
    string: {name: "string"},
    integer: {name: "integer"},
    float: {name: "float"},
    binary: {name: "byte"},
    datetime: {name: "timestamp"},
    timestamp: {name: "timestamp"},
    object: {name: "object"},
    array: {name: "array"}
}

Instance Method Summary collapse

Methods included from DatabaseStatements

#do_exec_query, #exec_query, #execute, #sql_key

Methods included from ActiveRecord::ConnectionAdapters::Crate::SchemaStatements

#add_index, #initialize_schema_migrations_table, #primary_key, #remove_index

Constructor Details

#initialize(connection, logger, pool, config) ⇒ CrateAdapter

Returns a new instance of CrateAdapter.



83
84
85
86
87
88
89
90
91
# File 'lib/active_record/connection_adapters/crate_adapter.rb', line 83

def initialize(connection, logger, pool, config)
  @port = config[:port]
  @host = config[:host]
  super(connection, logger, pool)
  @schema_cache = SchemaCache.new self
  @visitor = Arel::Visitors::Crate.new self
  @quoted_column_names = {}
  connect
end

Instance Method Details

#active?Boolean

TODO check what call to use for active

Returns:

  • (Boolean)


112
113
114
# File 'lib/active_record/connection_adapters/crate_adapter.rb', line 112

def active?
  true
end

#adapter_nameObject



93
94
95
# File 'lib/active_record/connection_adapters/crate_adapter.rb', line 93

def adapter_name
  ADAPTER_NAME
end

#clear_cache!Object

TODO



117
118
# File 'lib/active_record/connection_adapters/crate_adapter.rb', line 117

def clear_cache!
end

#columns(table_name) ⇒ Object

:nodoc:



132
133
134
135
136
137
# File 'lib/active_record/connection_adapters/crate_adapter.rb', line 132

def columns(table_name) #:nodoc:
  cols = @connection.table_structure(table_name).map do |field|
    CrateColumn.new(field[2], nil, field[4], nil)
  end
  cols
end

#connectObject



128
129
130
# File 'lib/active_record/connection_adapters/crate_adapter.rb', line 128

def connect
  @connection = CrateRuby::Client.new(["#{@host}:#{@port}"])
end

#create_table_definition(name, temporary, options, as = nil) ⇒ Object



218
219
220
# File 'lib/active_record/connection_adapters/crate_adapter.rb', line 218

def create_table_definition(name, temporary, options, as = nil)
  TableDefinition.new native_database_types, name, temporary, options, as
end

#migration_keysObject

Adds ‘:array` as a valid migration key



106
107
108
# File 'lib/active_record/connection_adapters/crate_adapter.rb', line 106

def migration_keys
  super + [:array, :object_schema_behaviour, :object_schema]
end

#native_database_typesObject



222
223
224
# File 'lib/active_record/connection_adapters/crate_adapter.rb', line 222

def native_database_types
  NATIVE_DATABASE_TYPES
end

#prepare_column_options(column, types) ⇒ Object

Adds ‘:array` option to the default set provided by the AbstractAdapter



99
100
101
102
103
# File 'lib/active_record/connection_adapters/crate_adapter.rb', line 99

def prepare_column_options(column, types)
  spec = super
  spec[:array] = 'true' if column.respond_to?(:array) && column.array
  spec
end

#reset!Object

TODO



121
122
# File 'lib/active_record/connection_adapters/crate_adapter.rb', line 121

def reset!
end

#schema_creationObject

:nodoc:



63
64
65
# File 'lib/active_record/connection_adapters/crate_adapter.rb', line 63

def schema_creation # :nodoc:
  Crate::SchemaCreation.new self
end

#supports_migrations?Boolean

Returns:

  • (Boolean)


124
125
126
# File 'lib/active_record/connection_adapters/crate_adapter.rb', line 124

def supports_migrations?
  true
end

#tablesObject



139
140
141
# File 'lib/active_record/connection_adapters/crate_adapter.rb', line 139

def tables
  @connection.tables
end