Ambrosia
view release on metacpan or search on metacpan
lib/Ambrosia/DataProvider/BaseDriver.pm view on Meta::CPAN
package Ambrosia::DataProvider::BaseDriver;
use strict;
use warnings;
use Ambrosia::core::Nil;
use Ambrosia::error::Exceptions;
require Ambrosia::core::ClassFactory;
use Ambrosia::Meta;
class abstract
{
public => [qw/type catalog schema host port/],
protected => [qw/_handler _cql_query _cache/],
};
our $VERSION = 0.010;
sub _init
{
my $self = shift;
$self->SUPER::_init(@_);
$self->_cql_query = [];
}
sub cache
{
return $_[0]->_cache;
}
######################## CONNECTION/TRANSACTION ########################
#Open connection. Return handler.
sub open_connection : Abstract {}
#Close connection
sub close_connection : Abstract {}
#Begin transaction
sub begin_transaction : Abstract {}
#Save transaction
sub save_transaction : Abstract {}
#Canceled transaction (rollback)
sub cancel_transaction : Abstract {}
sub handler
{
$_[0]->_handler ||= $_[0]->open_connection;
}
sub table_info
{
my $self = shift;
$self->handler()->table_info($self->catalog, $self->schema, @_);
}
sub foreign_key_info
{
my $self = shift;
$self->handler()->foreign_key_info($self->catalog, $self->schema, @_);
}
sub primary_key_info
{
my $self = shift;
$self->handler()->primary_key_info($self->catalog, $self->schema, @_);
}
sub column_info
{
my $self = shift;
$self->handler()->column_info($self->catalog, $self->schema, @_);
}
######################## CQL ########################
sub reset
{
my $self = shift;
$self->_cql_query = [];
$self->_cache = new Ambrosia::core::Nil();
return $self;
( run in 0.448 second using v1.01-cache-2.11-cpan-5b529ec07f3 )