Mojo-DB-Results-Role-MoreMethods

 view release on metacpan or  search on metacpan

MANIFEST  view on Meta::CPAN

t/hashify.t
t/hashify_collect.t
t/one.t
t/one_array.t
t/one_by_name.t
t/one_c.t
t/one_c_by_name.t
t/one_hash.t
t/one_struct.t
t/struct_or_die.t
t/transform_validate.t

lib/Mojo/DB/Results/Role/MoreMethods.pm  view on Meta::CPAN

    my ($collection, $get_keys, $get_value, $flatten) = shift->_parse_transform_options({flatten_allowed => 1}, @_);

    return $collection->with_roles('+Transform')->collect_by({flatten => $flatten}, $get_keys, $get_value);
}

sub _parse_transform_options {
    my $self = shift;
    my $private_options = shift;
    my $options = ref $_[0] eq 'HASH' ? shift : {};

    my ($key, $key_ref)                       = _parse_and_validate_transform_key(shift);
    my ($value, $value_is_column, $value_ref) = _parse_and_validate_transform_value(@_);

    my ($type, $flatten) = _parse_and_validate_transform_options($private_options, $options);

    # if user will not access the rows and the type won't be used, default rows to arrays for speed
    if (($value_is_column or $flatten) and $key_ref ne 'CODE' and $value_ref ne 'CODE') {
        if ($type and $type ne 'array') {
            Carp::cluck 'Useless type option provided. array will be used for performance.';
        }
        $type = 'array';
    } elsif (not $type) {
        $type = 'hash';
    }

t/transform_validate.t  view on Meta::CPAN

    my ($db, $drop_table_sql, $create_table_sql, $role, $methods, $options) = @_;

    for my $method (@$methods) {
        note "Testing method $method";

        $db->query($drop_table_sql);
        $db->query($create_table_sql);
        $db->insert(people => {name => 'Bob', age => 23, favorite_food => 'Pizza'});

        test_useless_options_warning($db, $role, $method);
        test_validate_transform_options($db, $role, $method);

        for my $option (@$options) {
            note "Testing method $method and option " . dumper $option;
            test_method($db, $role, $method, $option ? $option : ());
        }
    }
}

sub test_useless_options_warning {
    my ($db, $role, $method) = @_;

 view all matches for this distribution
 view release on metacpan -  search on metacpan

( run in 1.039 second using v1.00-cache-2.02-grep-82fe00e-cpan-0ab70e22118 )