Sha256: 0897b51d9b4956623fde3c404be066a751ca0eefd5d82243b894c281800ce278

Contents?: true

Size: 1.03 KB

Versions: 16

Compression:

Stored size: 1.03 KB

Contents

module CassandraCQL
  class Statement
    def self.sanitize(statement, bind_vars=[])
      return statement if bind_vars.empty?

      bind_vars = bind_vars.dup
      expected_bind_vars = statement.count("?")

      raise Error::InvalidBindVariable, "Wrong number of bound variables (statement expected #{expected_bind_vars}, was #{bind_vars.size})" if expected_bind_vars != bind_vars.size

      statement.gsub(/\?/) do
        quote(cast_to_cql(bind_vars.shift))
      end
    end
  end
end

module CassandraObject
  module Connection
    extend ActiveSupport::Concern

    module ClassMethods
      def cql
        @@cql ||= CassandraCQL::Database.new(config.servers, {keyspace: config.keyspace}, config.thrift_options)
      end

      def execute_cql(cql_string, *bind_vars)
        statement = CassandraCQL::Statement.sanitize(cql_string, bind_vars).force_encoding(Encoding::UTF_8)

        ActiveSupport::Notifications.instrument("cql.cassandra_object", cql: statement) do
          cql.execute statement
        end
      end
    end
  end
end

Version data entries

16 entries across 16 versions & 2 rubygems

Version Path
gotime-cassandra_object-4.11.5 lib/cassandra_object/connection.rb
gotime-cassandra_object-4.11.4 lib/cassandra_object/connection.rb
gotime-cassandra_object-4.11.3 lib/cassandra_object/connection.rb
gotime-cassandra_object-4.11.2 lib/cassandra_object/connection.rb
gotime-cassandra_object-4.11.1 lib/cassandra_object/connection.rb
gotime-cassandra_object-4.11.0 lib/cassandra_object/connection.rb
gotime-cassandra_object-4.10.5 lib/cassandra_object/connection.rb
gotime-cassandra_object-4.10.4 lib/cassandra_object/connection.rb
gotime-cassandra_object-4.10.3 lib/cassandra_object/connection.rb
gotime-cassandra_object-4.10.2 lib/cassandra_object/connection.rb
gotime-cassandra_object-4.10.1 lib/cassandra_object/connection.rb
cassandra_object_rails-0.0.1 lib/cassandra_object/connection.rb
gotime-cassandra_object-4.10.0 lib/cassandra_object/connection.rb
gotime-cassandra_object-4.9.2 lib/cassandra_object/connection.rb
gotime-cassandra_object-4.9.1 lib/cassandra_object/connection.rb
gotime-cassandra_object-4.9.0 lib/cassandra_object/connection.rb