Cassandra-Lite
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
lib/Cassandra/Lite.pm view on Meta::CPAN
use Thrift::BinaryProtocol;
use Thrift::FramedTransport;
use Thrift::Socket;
=head1 FUNCTION
=cut
sub _build_client {
my $self = shift;
my $client = Cassandra::CassandraClient->new($self->protocol);
$self->transport->open;
$self->_login($client);
$client;
}
sub _build_protocol {
my $self = shift;
Thrift::BinaryProtocol->new($self->transport);
}
sub _build_socket {
my $self = shift;
Thrift::Socket->new($self->server_name, $self->server_port);
}
sub _build_transport {
my $self = shift;
Thrift::FramedTransport->new($self->socket, $self->transport_read, $self->transport_write);
}
sub _consistency_level_read {
my $self = shift;
my $opt = shift // {};
my $level = $opt->{consistency_level} // $self->consistency_level_read;
eval "\$level = Cassandra::ConsistencyLevel::$level;";
$level;
}
sub _consistency_level_write {
my $self = shift;
my $opt = shift // {};
my $level = $opt->{consistency_level} // $self->consistency_level_write;
eval "\$level = Cassandra::ConsistencyLevel::$level;";
$level;
}
sub _login {
my $self = shift;
my $client = shift;
my $auth = Cassandra::AuthenticationRequest->new;
$auth->{credentials} = {username => $self->username, password => $self->password};
$client->login($auth);
}
sub _trigger_keyspace {
my ($self, $keyspace) = @_;
$self->client->set_keyspace($keyspace);
}
=item
C<new(...)>
All supported options:
my $c = Cassandra::Lite->new(
server_name => 'server1', # optional, default to '127.0.0.1'
server_port => 9160, # optional, default to 9160
username => 'username', # optional, default to empty string ''
password => 'xxx', # optional, default to empty string ''
consistency_level_read => 'ONE' # optional, default to 'ONE'
consistency_level_write => 'ONE' # optional, default to 'ONE'
transport_read => 1024, # optional, default to 1024
transport_write => 1024, # optional, default to 1024
keyspace => 'Keyspace1',
);
So, usually we can use this in dev environment:
my $c = Cassandra::Lite->new(keyspace => 'Keyspace1');
=cut
=item
C<cql($query)>
=cut
sub cql {
my $self = shift;
my $query = shift;
$self->client->execute_cql_query($query, Cassandra::Compression::NONE);
}
=item
C<delete($columnFamily, $key, $options)>
Delete entire row.
=cut
sub delete {
my $self = shift;
my $columnFamily = shift;
my $key = shift;
my $opt = shift // {};
my $columnPath = Cassandra::ColumnPath->new({column_family => $columnFamily});
my $timestamp = $opt->{timestamp} // time;
view all matches for this distributionview release on metacpan - search on metacpan
( run in 0.523 second using v1.00-cache-2.02-grep-82fe00e-cpan-2c419f77a38b )