Ambrosia
view release on metacpan or search on metacpan
lib/Ambrosia/DataProvider/ResourceDriver.pm view on Meta::CPAN
package Ambrosia::DataProvider::ResourceDriver;
use strict;
use warnings;
use Ambrosia::core::Nil;
use Ambrosia::Meta;
class
{
extends => [qw/Ambrosia::DataProvider::BaseDriver/],
private => [qw/__start/],
};
sub _init
{
my $self = shift;
$self->SUPER::_init(@_);
$self->_cache = new Ambrosia::core::Nil();
}
our $VERSION = 0.010;
sub reset
{
my $self = shift;
$self->SUPER::reset();
$self->__start = 0;
return $self;
}
################################################################################
sub begin_transaction
{
}
sub save_transaction
{
}
sub cancel_transaction
{
}
################################################################################
sub predicate
{
my $self = shift;
my ($f, $op, $v) = @_;
my $old = $self->_cql_query->[&Ambrosia::DataProvider::BaseDriver::PREDICATE] || sub {1};
$self->_cql_query->[&Ambrosia::DataProvider::BaseDriver::PREDICATE] = {
'=' => sub {
my $h = shift;
$old->($h) && $h->{$f} eq $v
},
'<' => sub {
my $h = shift;
$old->($h) && $h->{$f} lt $v
},
'<=' => sub {
my $h = shift;
$old->($h) && $h->{$f} le $v
},
'>' => sub {
my $h = shift;
$old->($h) && $h->{$f} gt $v
},
'>=' => sub {
my $h = shift;
$old->($h) && $h->{$f} ge $v
},
'!=' => sub {
my $h = shift;
$old->($h) && $h->{$f} ne $v
},
'like' => sub {
my $h = shift;
$old->($h) && $h->{$f} =~ /$v/
},
}->{lc($op)};
return $self;
}
( run in 0.800 second using v1.01-cache-2.11-cpan-5b529ec07f3 )