- removed EXPERIMENTAL map_param method from DBIx...
...::Custom
| ... | ... |
@@ -1,4 +1,5 @@ |
| 1 | 1 |
0.1723 |
| 2 |
+ - removed EXPERIMENTAL map_param method from DBIx::Custom |
|
| 2 | 3 |
- removed EXPERIMENTAL flag from the following DBIx::Custom::Result mehotds |
| 3 | 4 |
filter_on, type_rule, type_rule_off, type_rule_on, type_rule1_off, |
| 4 | 5 |
type_rule1_on, type_rule2_off, type_rule2_on |
| ... | ... |
@@ -6,11 +7,12 @@ |
| 6 | 7 |
sqlfilter, type_rule_off, type_rule1_off, type_rule2_off, |
| 7 | 8 |
table_alias, wrap |
| 8 | 9 |
- removed EXPERIMENTAL flag from DBIx::Custom::Order |
| 9 |
- - removed EXPERIMETNAL flag from the following DBIx::Custom mehtods |
|
| 10 |
+ - removed EXPERIMETNAL flag from the following DBIx::Custom methods |
|
| 10 | 11 |
exclude_table, user_column_info, |
| 11 | 12 |
user_table_info, available_datatype, available_typename, |
| 12 | 13 |
assign_param, count, get_column_info, get_table_info |
| 13 |
- order, show_datatype, show_typename methods, type_rule |
|
| 14 |
+ order, show_datatype, show_typename methods, type_rule, |
|
| 15 |
+ mapper |
|
| 14 | 16 |
- added EXPERIMENTAL update_timestamp method to DBIx::Custom |
| 15 | 17 |
- added EXPERIMENTAL insert_timestamp method to DBIx::Custom |
| 16 | 18 |
- removed EXPERIMENTAL timestamp attribute from DBIx::Custom |
| ... | ... |
@@ -751,48 +751,6 @@ sub mapper {
|
| 751 | 751 |
return DBIx::Custom::Mapper->new(@_); |
| 752 | 752 |
} |
| 753 | 753 |
|
| 754 |
-sub map_param {
|
|
| 755 |
- my $self = shift; |
|
| 756 |
- my $param = shift; |
|
| 757 |
- my %map = @_; |
|
| 758 |
- |
|
| 759 |
- # Mapping |
|
| 760 |
- my $map_param = {};
|
|
| 761 |
- foreach my $key (keys %map) {
|
|
| 762 |
- my $value_cb; |
|
| 763 |
- my $condition; |
|
| 764 |
- my $map_key; |
|
| 765 |
- |
|
| 766 |
- # Get mapping information |
|
| 767 |
- if (ref $map{$key} eq 'ARRAY') {
|
|
| 768 |
- foreach my $some (@{$map{$key}}) {
|
|
| 769 |
- $map_key = $some unless ref $some; |
|
| 770 |
- $condition = $some->{if} if ref $some eq 'HASH';
|
|
| 771 |
- $value_cb = $some if ref $some eq 'CODE'; |
|
| 772 |
- } |
|
| 773 |
- } |
|
| 774 |
- else {
|
|
| 775 |
- $map_key = $map{$key};
|
|
| 776 |
- } |
|
| 777 |
- $value_cb ||= sub { $_[0] };
|
|
| 778 |
- $condition ||= sub { defined $_[0] && length $_[0] };
|
|
| 779 |
- |
|
| 780 |
- # Map parameter |
|
| 781 |
- my $value; |
|
| 782 |
- if (ref $condition eq 'CODE') {
|
|
| 783 |
- $map_param->{$map_key} = $value_cb->($param->{$key})
|
|
| 784 |
- if $condition->($param->{$key});
|
|
| 785 |
- } |
|
| 786 |
- elsif ($condition eq 'exists') {
|
|
| 787 |
- $map_param->{$map_key} = $value_cb->($param->{$key})
|
|
| 788 |
- if exists $param->{$key};
|
|
| 789 |
- } |
|
| 790 |
- else { croak qq/Condition must be code reference or "exists" / . _subname }
|
|
| 791 |
- } |
|
| 792 |
- |
|
| 793 |
- return $map_param; |
|
| 794 |
-} |
|
| 795 |
- |
|
| 796 | 754 |
sub merge_param {
|
| 797 | 755 |
my ($self, @params) = @_; |
| 798 | 756 |
|
| ... | ... |
@@ -2918,60 +2876,12 @@ See L<DBIx::Custom::Model> to know model features. |
| 2918 | 2876 |
Parameter for timestamp columns when C<insert> method is executed |
| 2919 | 2877 |
with C<timestamp> option. |
| 2920 | 2878 |
|
| 2921 |
-=head2 C<mapper EXPERIMETNAL> |
|
| 2879 |
+=head2 C<mapper> |
|
| 2922 | 2880 |
|
| 2923 | 2881 |
my $mapper = $dbi->mapper(param => $param); |
| 2924 | 2882 |
|
| 2925 | 2883 |
Create a new L<DBIx::Custom::Mapper> object. |
| 2926 | 2884 |
|
| 2927 |
-=head2 C<map_param> EXPERIMENTAL |
|
| 2928 |
- |
|
| 2929 |
- my $map_param = $dbi->map_param( |
|
| 2930 |
- {id => 1, authro => 'Ken', price => 1900},
|
|
| 2931 |
- 'id' => 'book.id', |
|
| 2932 |
- 'author' => ['book.author' => sub { '%' . $_[0] . '%' }],
|
|
| 2933 |
- 'price' => [ |
|
| 2934 |
- 'book.price', {if => sub { length $_[0] }}
|
|
| 2935 |
- ] |
|
| 2936 |
- ); |
|
| 2937 |
- |
|
| 2938 |
-Map paramters to other key and value. First argument is original |
|
| 2939 |
-parameter. this is hash reference. Rest argument is mapping. |
|
| 2940 |
-By default, Mapping is done if the value length is not zero. |
|
| 2941 |
- |
|
| 2942 |
-=over 4 |
|
| 2943 |
- |
|
| 2944 |
-=item Key mapping |
|
| 2945 |
- |
|
| 2946 |
- 'id' => 'book.id' |
|
| 2947 |
- |
|
| 2948 |
-This is only key mapping. Value is same as original one. |
|
| 2949 |
- |
|
| 2950 |
- (id => 1) is mapped to ('book.id' => 1) if value length is not zero.
|
|
| 2951 |
- |
|
| 2952 |
-=item Key and value mapping |
|
| 2953 |
- |
|
| 2954 |
- 'author' => ['book.author' => sub { '%' . $_[0] . '%' }]
|
|
| 2955 |
- |
|
| 2956 |
-This is key and value mapping. Frist element of array reference |
|
| 2957 |
-is mapped key name, second element is code reference to map the value. |
|
| 2958 |
- |
|
| 2959 |
- (author => 'Ken') is mapped to ('book.author' => '%Ken%')
|
|
| 2960 |
- if value length is not zero. |
|
| 2961 |
- |
|
| 2962 |
-=item Condition |
|
| 2963 |
- |
|
| 2964 |
- 'price' => ['book.price', {if => 'exists'}]
|
|
| 2965 |
- 'price' => ['book.price', sub { '%' . $_[0] . '%' }, {if => 'exists'}]
|
|
| 2966 |
- 'price' => ['book.price', {if => sub { defined shift }}]
|
|
| 2967 |
- |
|
| 2968 |
-If you need condition, you can sepecify it. this is code reference |
|
| 2969 |
-or 'exists'. By default, condition is the following one. |
|
| 2970 |
- |
|
| 2971 |
- sub { defined $_[0] && length $_[0] }
|
|
| 2972 |
- |
|
| 2973 |
-=back |
|
| 2974 |
- |
|
| 2975 | 2885 |
=head2 C<merge_param> |
| 2976 | 2886 |
|
| 2977 | 2887 |
my $param = $dbi->merge_param({key1 => 1}, {key1 => 1, key2 => 2});
|
| ... | ... |
@@ -2873,49 +2873,6 @@ $param = $dbi->mapper(param => {id => 'a', author => 'b', price => 'c'}, pass =>
|
| 2873 | 2873 |
->map(price => 'book.price'); |
| 2874 | 2874 |
is_deeply($param, {id => 'a', author => 'b', 'book.price' => 'c'});
|
| 2875 | 2875 |
|
| 2876 |
-test 'map_param'; |
|
| 2877 |
-$dbi = DBIx::Custom->connect; |
|
| 2878 |
-$param = $dbi->map_param( |
|
| 2879 |
- {id => 1, author => 'Ken', price => 1900},
|
|
| 2880 |
- id => "$table1.id", |
|
| 2881 |
- author => ["$table1.author", sub { '%' . $_[0] . '%' }],
|
|
| 2882 |
- price => ["$table1.price", {if => sub { $_[0] eq 1900 }}]
|
|
| 2883 |
-); |
|
| 2884 |
-is_deeply($param, {"$table1.id" => 1, "$table1.author" => '%Ken%',
|
|
| 2885 |
- "$table1.price" => 1900}); |
|
| 2886 |
- |
|
| 2887 |
-$param = $dbi->map_param( |
|
| 2888 |
- {id => 0, author => 0, price => 0},
|
|
| 2889 |
- id => "$table1.id", |
|
| 2890 |
- author => ["$table1.author", sub { '%' . $_[0] . '%' }],
|
|
| 2891 |
- price => ["$table1.price", sub { '%' . $_[0] . '%' },
|
|
| 2892 |
- {if => sub { $_[0] eq 0 }}]
|
|
| 2893 |
-); |
|
| 2894 |
-is_deeply($param, {"$table1.id" => 0, "$table1.author" => '%0%', "$table1.price" => '%0%'});
|
|
| 2895 |
- |
|
| 2896 |
-$param = $dbi->map_param( |
|
| 2897 |
- {id => '', author => '', price => ''},
|
|
| 2898 |
- id => "$table1.id", |
|
| 2899 |
- author => ["$table1.author", sub { '%' . $_[0] . '%' }],
|
|
| 2900 |
- price => ["$table1.price", sub { '%' . $_[0] . '%' },
|
|
| 2901 |
- {if => sub { $_[0] eq 1 }}]
|
|
| 2902 |
-); |
|
| 2903 |
-is_deeply($param, {});
|
|
| 2904 |
- |
|
| 2905 |
-$param = $dbi->map_param( |
|
| 2906 |
- {id => undef, author => undef, price => undef},
|
|
| 2907 |
- id => "$table1.id", |
|
| 2908 |
- price => ["$table1.price", {if => 'exists'}]
|
|
| 2909 |
-); |
|
| 2910 |
-is_deeply($param, {"$table1.price" => undef});
|
|
| 2911 |
- |
|
| 2912 |
-$param = $dbi->map_param( |
|
| 2913 |
- {price => 'a'},
|
|
| 2914 |
- id => ["$table1.id", {if => 'exists'}],
|
|
| 2915 |
- price => ["$table1.price", sub { '%' . $_[0] }, {if => 'exists'}]
|
|
| 2916 |
-); |
|
| 2917 |
-is_deeply($param, {"$table1.price" => '%a'});
|
|
| 2918 |
- |
|
| 2919 | 2876 |
test 'order'; |
| 2920 | 2877 |
$dbi = DBIx::Custom->connect; |
| 2921 | 2878 |
eval { $dbi->execute("drop table $table1") };
|