[jifty-devel] [Jifty-commit] r5178 - in Jifty-DBI/trunk: . lib/Jifty/DBI lib/Jifty/DBI/Filter

Jesse Vincent jesse at bestpractical.com
Fri Feb 29 00:42:33 EST 2008


Maybe encode_for_select or encode_on_select?

On Fri, Feb 29, 2008 at 12:30:49AM -0500, Jifty commits wrote:
> Author: sartak
> Date: Fri Feb 29 00:30:47 2008
> New Revision: 5178
> 
> Modified:
>    Jifty-DBI/trunk/   (props changed)
>    Jifty-DBI/trunk/lib/Jifty/DBI/Collection.pm
>    Jifty-DBI/trunk/lib/Jifty/DBI/Column.pm
>    Jifty-DBI/trunk/lib/Jifty/DBI/Filter.pm
>    Jifty-DBI/trunk/lib/Jifty/DBI/Filter/Boolean.pm
>    Jifty-DBI/trunk/lib/Jifty/DBI/Record.pm
>    Jifty-DBI/trunk/lib/Jifty/DBI/Schema.pm
>    Jifty-DBI/trunk/t/06filter_boolean.t
> 
> Log:
>  r52259 at onn:  sartak | 2008-02-29 00:30:30 -0500
>  Add a new column attribute, encode_select. This will apply filters on load_by_cols and limit. Have Boolean use encode_select.
> 
> 
> Modified: Jifty-DBI/trunk/lib/Jifty/DBI/Collection.pm
> ==============================================================================
> --- Jifty-DBI/trunk/lib/Jifty/DBI/Collection.pm	(original)
> +++ Jifty-DBI/trunk/lib/Jifty/DBI/Collection.pm	Fri Feb 29 00:30:47 2008
> @@ -1329,6 +1329,11 @@
>          $args{'operator'} = 'IN';
>      }
>  
> +    $self->record_class->new(handle => $self->_handle)->_apply_input_filters(
> +        column    => $column_obj,
> +        value_ref => \$args{'value'},
> +    ) if $column_obj && $column_obj->encode_select;
> +
>      my $clause = {
>          column   => $qualified_column,
>          operator => $args{'operator'},
> 
> Modified: Jifty-DBI/trunk/lib/Jifty/DBI/Column.pm
> ==============================================================================
> --- Jifty-DBI/trunk/lib/Jifty/DBI/Column.pm	(original)
> +++ Jifty-DBI/trunk/lib/Jifty/DBI/Column.pm	Fri Feb 29 00:30:47 2008
> @@ -30,6 +30,7 @@
>      case_sensitive
>      private
>      protected
> +    encode_select
>      /;
>  
>  # these actually live in the attributes hash
> 
> Modified: Jifty-DBI/trunk/lib/Jifty/DBI/Filter.pm
> ==============================================================================
> --- Jifty-DBI/trunk/lib/Jifty/DBI/Filter.pm	(original)
> +++ Jifty-DBI/trunk/lib/Jifty/DBI/Filter.pm	Fri Feb 29 00:30:47 2008
> @@ -67,8 +67,6 @@
>  A L<Jifty::DBI::Column> object, whatever sort of column we're working
>  with here.
>  
> -=back
> -
>  =item handle
>  
>  A L<Jifty::DBI::Handle> object, because some filters (ie
> 
> Modified: Jifty-DBI/trunk/lib/Jifty/DBI/Filter/Boolean.pm
> ==============================================================================
> --- Jifty-DBI/trunk/lib/Jifty/DBI/Filter/Boolean.pm	(original)
> +++ Jifty-DBI/trunk/lib/Jifty/DBI/Filter/Boolean.pm	Fri Feb 29 00:30:47 2008
> @@ -12,7 +12,7 @@
>      my $self = shift;
>      my $value = shift;
>  
> -    for ($self->TRUE_VALUES) {
> +    for ($self->TRUE_VALUES, map { "'$_'" } $self->TRUE_VALUES) {
>          return 1 if $value eq $_;
>      }
>  
> @@ -23,7 +23,7 @@
>      my $self = shift;
>      my $value = shift;
>  
> -    for ($self->FALSE_VALUES) {
> +    for ($self->FALSE_VALUES, map { "'$_'" } $self->FALSE_VALUES) {
>          return 1 if $value eq $_;
>      }
>  
> 
> Modified: Jifty-DBI/trunk/lib/Jifty/DBI/Record.pm
> ==============================================================================
> --- Jifty-DBI/trunk/lib/Jifty/DBI/Record.pm	(original)
> +++ Jifty-DBI/trunk/lib/Jifty/DBI/Record.pm	Fri Feb 29 00:30:47 2008
> @@ -1068,6 +1068,11 @@
>                  $value = $value->id;
>              }
>  
> +            $self->_apply_input_filters(
> +                column    => $column_obj,
> +                value_ref => \$value,
> +            ) if $column_obj->encode_select;
> +
>              # if the handle is in a case_sensitive world and we need to make
>              # a case-insensitive query
>              if ( $self->_handle->case_sensitive && $value ) {
> 
> Modified: Jifty-DBI/trunk/lib/Jifty/DBI/Schema.pm
> ==============================================================================
> --- Jifty-DBI/trunk/lib/Jifty/DBI/Schema.pm	(original)
> +++ Jifty-DBI/trunk/lib/Jifty/DBI/Schema.pm	Fri Feb 29 00:30:47 2008
> @@ -405,6 +405,11 @@
>  
>  __PACKAGE__->register_types(
>      boolean => sub {
> +        _init_handler is sub {
> +            my ($column, $from) = @_;
> +            $column->encode_select(1);
> +            $column->type('boolean');
> +        },
>          type is 'boolean',
>          filters are qw(Jifty::DBI::Filter::Boolean),
>      },
> 
> Modified: Jifty-DBI/trunk/t/06filter_boolean.t
> ==============================================================================
> --- Jifty-DBI/trunk/t/06filter_boolean.t	(original)
> +++ Jifty-DBI/trunk/t/06filter_boolean.t	Fri Feb 29 00:30:47 2008
> @@ -6,7 +6,7 @@
>  BEGIN { require "t/utils.pl" }
>  our (@available_drivers);
>  
> -use constant TESTS_PER_DRIVER => 86;
> +use constant TESTS_PER_DRIVER => 122;
>  
>  my $total = scalar(@available_drivers) * TESTS_PER_DRIVER;
>  plan tests => $total;
> @@ -61,6 +61,25 @@
>          # undef/NULL
>          $rec->set_my_data;
>          is($rec->my_data, undef, 'set undef value');
> +
> +        $rec->set_my_data($input);
> +        ok($bool eq 'true' ? $rec->my_data : !$rec->my_data, 'Perl agrees with the expected boolean value');
> +    }
> +
> +    for my $value ( @values ) {
> +        my ($input, $bool) = @$value;
> +        my $rec = TestApp::User->new( handle => $handle );
> +        $rec->load_by_cols(
> +            my_data => $input,
> +        );
> +        ok($rec->id, "loaded a record by boolean value '$input'");
> +
> +        my $col = TestApp::UserCollection->new( handle => $handle );
> +        $col->limit(
> +            column => 'my_data',
> +            value  => $input,
> +        );
> +        ok($bool eq 'true' ? $col->first->my_data : !$col->first->my_data, 'Perl agrees with the expected boolean value');
>      }
>  
>      cleanup_schema('TestApp', $handle);
> @@ -71,8 +90,6 @@
>  package TestApp::User;
>  use base qw/ Jifty::DBI::Record /;
>  
> -1;
> -
>  sub schema_sqlite {
>  
>  <<EOF;
> @@ -115,4 +132,13 @@
>      }
>  }
>  
> +package TestApp::UserCollection;
> +
> +use base qw/Jifty::DBI::Collection/;
> +
> +sub _init {
> +    my $self = shift;
> +    $self->SUPER::_init(@_);
> +    $self->table('users');
> +}
>  
> _______________________________________________
> Jifty-commit mailing list
> Jifty-commit at lists.jifty.org
> http://lists.jifty.org/cgi-bin/mailman/listinfo/jifty-commit
> 

-- 


More information about the jifty-devel mailing list