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 )