From: Matt S Trout Date: Fri, 27 Jul 2007 05:16:18 +0000 (+0000) Subject: and my tradditional collection of missing add commands X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=c0494fe173384e4fdde1f165f0670aeb5dc084a8;p=dbsrgits%2FDBIx-Class-Historic.git and my tradditional collection of missing add commands --- diff --git a/lib/DBIx/Class/CDBICompat/AbstractSearch.pm b/lib/DBIx/Class/CDBICompat/AbstractSearch.pm new file mode 100644 index 0000000..f5c8751 --- /dev/null +++ b/lib/DBIx/Class/CDBICompat/AbstractSearch.pm @@ -0,0 +1,23 @@ +package # hide form PAUSE + DBIx::Class::CDBICompat::AbstractSearch; + +use strict; +use warnings; + +# The keys are mostly the same. +my %cdbi2dbix = ( + limit => 'rows', +); + +sub search_where { + my $class = shift; + my $where = (ref $_[0]) ? $_[0] : { @_ }; + my $attr = (ref $_[0]) ? $_[1] : {}; + + # Translate the keys + $attr->{$cdbi2dbix{$_}} = delete $attr->{$_} for keys %cdbi2dbix; + + return $class->resultset_instance->search($where, $attr); +} + +1; diff --git a/lib/DBIx/Class/CDBICompat/Copy.pm b/lib/DBIx/Class/CDBICompat/Copy.pm new file mode 100644 index 0000000..b11eca8 --- /dev/null +++ b/lib/DBIx/Class/CDBICompat/Copy.pm @@ -0,0 +1,21 @@ +package # hide from PAUSE + DBIx::Class::CDBICompat::Copy; + +use strict; +use warnings; + +use Carp; + +# CDBI's copy will take an id in addition to a hash ref. +sub copy { + my($self, $arg) = @_; + return $self->next::method($arg) if ref $arg; + + my @primary_columns = $self->primary_columns; + croak("Need hash-ref to edit copied column values") + if @primary_columns > 1; + + return $self->next::method({ $primary_columns[0] => $arg }); +} + +1; diff --git a/lib/DBIx/Class/CDBICompat/Iterator.pm b/lib/DBIx/Class/CDBICompat/Iterator.pm new file mode 100644 index 0000000..d50dd32 --- /dev/null +++ b/lib/DBIx/Class/CDBICompat/Iterator.pm @@ -0,0 +1,28 @@ +package DBIx::Class::CDBICompat::Iterator; + +use strict; +use warnings; + +sub _init_result_source_instance { + my $class = shift; + + my $table = $class->next::method(@_); + $table->resultset_class("DBIx::Class::CDBICompat::Iterator::ResultSet"); + + return $table; +} + + + +package DBIx::Class::CDBICompat::Iterator::ResultSet; + +use strict; +use warnings; + +use base qw(DBIx::Class::ResultSet); + +sub _bool { + return $_[0]->count; +} + +1;