DBIx-ObjectMapper
view release on metacpan or search on metacpan
lib/DBIx/ObjectMapper/Mapper/Attribute/Property.pm view on Meta::CPAN
package DBIx::ObjectMapper::Mapper::Attribute::Property;
use strict;
use warnings;
use Carp::Clan qw/^DBIx::ObjectMapper/;
use Params::Validate qw(:all);
use Scalar::Util qw(weaken);
my @TYPES = qw(column relation);
sub new {
my $class = shift;
my %prop = validate(
@_,
{
isa => +{
type => OBJECT,
callbacks => {
check_duck_type => sub {
$_[0]->can('name') && $_[0]->can('validation');
}
}
},
lazy => +{ type => BOOLEAN, default => 0 },
validation => +{ type => BOOLEAN, default => 0 },
getter => +{ type => SCALAR },
setter => +{ type => SCALAR },
}
);
bless \%prop, $class;
}
sub lazy { $_[0]->{lazy} }
sub getter { $_[0]->{getter} }
sub setter { $_[0]->{setter} }
## proxy
sub type {
my $self = shift;
if( $self->{isa}->isa('DBIx::ObjectMapper::Metadata::Table::Column') ) {
return 'column';
}
elsif( $self->{isa}->isa('DBIx::ObjectMapper::Relation') ) {
return 'relation';
}
return 0;
}
sub validation {
my $self = shift;
return $self->{isa}->validation if $self->{validation};
return;
}
sub name {
my $self = shift;
return $self->{isa}->name;
}
sub get {
my $self = shift;
if( $self->type eq 'relation' ) {
return $self->{isa}->get(@_);
( run in 1.682 second using v1.01-cache-2.11-cpan-437f7b0c052 )