DBIx-Class-Candy
view release on metacpan or search on metacpan
lib/DBIx/Class/Candy.pm view on Meta::CPAN
my $column = shift;
$set_table->();
$i->add_columns($column => { @_ })
}
}
}
sub gen_rename_proxy {
my ($self, $inheritor, $set_table, %aliases) = @_;
sub {
my ($class, $name) = @_;
my $meth = $aliases{$name};
my $i = $inheritor;
sub { $set_table->(); $i->$meth(@_) }
}
}
sub gen_proxy {
my ($self, $inheritor, $set_table) = @_;
sub {
my ($class, $name) = @_;
my $i = $inheritor;
sub { $set_table->(); $i->$name(@_) }
}
}
sub installer {
my ($self) = @_;
sub {
Sub::Exporter::default_installer @_;
my %subs = @{ $_[1] };
namespace::clean->import( -cleanee => $_[0]{into}, keys %subs )
}
}
sub set_base {
my ($self, $inheritor, $base) = @_;
# inlined from parent.pm
for ( my @useless = $self->base($base) ) {
s{::|'}{/}g;
require "$_.pm"; # dies if the file is not found
}
{
no strict 'refs';
# This is more efficient than push for the new MRO
# at least until the new MRO is fixed
@{"$inheritor\::ISA"} = (@{"$inheritor\::ISA"} , $self->base($base));
}
}
sub gen_INIT {
my ($self, $perl_version, $custom_aliases, $custom_methods, $inheritor, $experimental) = @_;
sub {
my $orig = $_[1]->{import_args};
$_[1]->{import_args} = [];
%$custom_aliases = ();
@$custom_methods = ();
strict->import;
warnings->import;
if ($perl_version) {
require feature;
feature->import(":5.$perl_version")
}
if ($experimental) {
require experimental;
die 'experimental arg must be an arrayref!'
unless ref $experimental && ref $experimental eq 'ARRAY';
# to avoid experimental referring to the method
experimental::->import(@$experimental)
}
mro::set_mro($inheritor, 'c3');
1;
}
}
1;
__END__
=pod
=head1 NAME
DBIx::Class::Candy - Sugar for your favorite ORM, DBIx::Class
=head1 SYNOPSIS
package MyApp::Schema::Result::Artist;
use DBIx::Class::Candy -autotable => v1;
primary_column id => {
data_type => 'int',
is_auto_increment => 1,
};
column name => {
data_type => 'varchar',
size => 25,
is_nullable => 1,
};
has_many albums => 'A::Schema::Result::Album', 'artist_id';
1;
=head1 DESCRIPTION
C<DBIx::Class::Candy> is a simple sugar layer for definition of
L<DBIx::Class> results. Note that it may later be expanded to add sugar
for more C<DBIx::Class> related things. By default C<DBIx::Class::Candy>:
=over
( run in 0.695 second using v1.01-cache-2.11-cpan-97f6503c9c8 )