[Bast-commits] r4202 -
DBIx-Class/0.08/trunk/lib/DBIx/Class/CDBICompat
schwern at dev.catalyst.perl.org
schwern at dev.catalyst.perl.org
Fri Mar 14 03:27:47 GMT 2008
Author: schwern
Date: 2008-03-14 03:27:47 +0000 (Fri, 14 Mar 2008)
New Revision: 4202
Modified:
DBIx-Class/0.08/trunk/lib/DBIx/Class/CDBICompat/Constructor.pm
Log:
Better emulation of add_constructor, unfortunately also slower.
Modified: DBIx-Class/0.08/trunk/lib/DBIx/Class/CDBICompat/Constructor.pm
===================================================================
--- DBIx-Class/0.08/trunk/lib/DBIx/Class/CDBICompat/Constructor.pm 2008-03-14 03:17:12 UTC (rev 4201)
+++ DBIx-Class/0.08/trunk/lib/DBIx/Class/CDBICompat/Constructor.pm 2008-03-14 03:27:47 UTC (rev 4202)
@@ -1,22 +1,30 @@
package # hide from PAUSE
DBIx::Class::CDBICompat::Constructor;
+use base qw(DBIx::Class::CDBICompat::ImaDBI);
+
use strict;
use warnings;
+use Carp;
+
+__PACKAGE__->set_sql(Retrieve => <<'');
+SELECT __ESSENTIAL__
+FROM __TABLE__
+WHERE %s
+
sub add_constructor {
- my ($class, $meth, $sql) = @_;
- $class = ref $class if ref $class;
- no strict 'refs';
-
- my %attrs;
- $attrs{rows} = $1 if $sql =~ s/LIMIT\s+(.*)\s+$//i;
- $attrs{order_by} = $1 if $sql =~ s/ORDER BY\s+(.*)//i;
-
- *{"${class}::${meth}"} =
- sub {
- my ($class, @args) = @_;
- return $class->search_literal($sql, @args, \%attrs);
+ my ($class, $method, $fragment) = @_;
+ return croak("constructors needs a name") unless $method;
+
+ no strict 'refs';
+ my $meth = "$class\::$method";
+ return carp("$method already exists in $class")
+ if *$meth{CODE};
+
+ *$meth = sub {
+ my $self = shift;
+ $self->sth_to_objects($self->sql_Retrieve($fragment), \@_);
};
}
More information about the Bast-commits
mailing list