[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