Jifty-DBI
view release on metacpan or search on metacpan
lib/Jifty/DBI/Schema.pm view on Meta::CPAN
sub render_as ($) { render as @_ }
sub since ($) { since is @_ }
sub till ($) { till is @_ }
sub literal($) {
my $value = shift;
return \$value;
}
our $SCHEMA;
our $SORT_ORDERS = {};
use Exporter::Lite ();
# TODO - This "sub import" is strictly here to catch the deprecated "length is 40".
# Once the deprecation cycle is over we should take the SIGDIE swapping away
my $old_sig_die;
sub import {
no warnings qw( uninitialized numeric );
$old_sig_die ||= $SIG{__DIE__};
$SIG{__DIE__} = \&filter_die unless $SIG{__DIE__} and $SIG{__DIE__} == \&filter_die;
strict->import;
warnings->import;
goto &Exporter::Lite::import;
}
=head2 filter_die
=cut
sub filter_die {
# Calling it by hand means we restore the old sighandler.
$SIG{__DIE__} = $old_sig_die;
if ($_[0] =~ /near "is (\d+)"/) {
carp @_, << ".";
*********************************************************
Due to an incompatible API change, the "length" field in
Jifty::DBI columns has been renamed to "max_length":
column foo =>
length is $1; # NOT VALID
Please write this instead:
column foo =>
max_length is $1 # VALID
Sorry for the inconvenience.
**********************************************************
.
exit 1;
}
elsif ($_[0] =~ /Undefined subroutine &Jifty::DBI::Schema::column|Can't locate object method "type" via package "(?:is|are)"/) {
my $from = (caller)[0];
$from =~ s/::Schema$//;
my $base = $INC{'Jifty/Record.pm'} ? "Jifty::Record" : "Jifty::DBI::Record";
no strict 'refs';
carp @_, << ".";
*********************************************************
Calling 'column' within a schema class is an error:
package $from\::Schema;
column foo => ...; # NOT VALID
Please write this instead:
package $from;
use Jifty::DBI::Schema;
use @{[(${"$from\::ISA"} || [$base])->[0] || $base]} schema {
column foo => ...; # VALID
};
Sorry for the inconvenience.
*********************************************************
.
}
die @_;
}
=head1 FUNCTIONS
All these functions are exported. However, if you use the C<schema> helper function,
they will be unimported at the end of the block passed to C<schema>.
=head2 schema
Takes a block with schema declarations. Unimports all helper functions after
executing the code block. Usually used at C<BEGIN> time via this idiom:
use Jifty::DBI::Record schema { ... };
If your application subclasses C<::Record>, then write this instead:
use MyApp::Record schema { ... };
=cut
=head2 column
DEPRECATED. This method of defining columns will not work anymore. Please
use the C<schema {}> method documented above.
=cut
sub schema (&) {
my $code = shift;
my $from = caller;
my $new_code = sub {
( run in 1.001 second using v1.01-cache-2.11-cpan-800906f7e73 )