| ... | ... | 
                  @@ -1,3 +1,5 @@  | 
              
| 1 | 
                  +0.1681  | 
              |
| 2 | 
                  + - added EXPERIMENTAL assign_tag() method  | 
              |
| 1 | 3 | 
                  0.1680  | 
              
| 2 | 4 | 
                  - DEPRECATED select() param option, this is renamed to where_param  | 
              
| 3 | 5 | 
                  - added select(), update(), and delete() where_param option  | 
              
| ... | ... | 
                  @@ -1,6 +1,6 @@  | 
              
| 1 | 1 | 
                  package DBIx::Custom;  | 
              
| 2 | 2 | 
                   | 
              
| 3 | 
                  -our $VERSION = '0.1680';  | 
              |
| 3 | 
                  +our $VERSION = '0.1681';  | 
              |
| 4 | 4 | 
                   | 
              
| 5 | 5 | 
                  use 5.008001;  | 
              
| 6 | 6 | 
                  use strict;  | 
              
| ... | ... | 
                  @@ -151,6 +151,26 @@ sub apply_filter {
                 | 
              
| 151 | 151 | 
                  return $self;  | 
              
| 152 | 152 | 
                  }  | 
              
| 153 | 153 | 
                   | 
              
| 154 | 
                  +  | 
              |
| 155 | 
                  +sub assign_tag {
                 | 
              |
| 156 | 
                  + my ($self, $param) = @_;  | 
              |
| 157 | 
                  +  | 
              |
| 158 | 
                  + # Create set tag  | 
              |
| 159 | 
                  + my @params;  | 
              |
| 160 | 
                  + my $safety = $self->safety_character;  | 
              |
| 161 | 
                  + my $q = $self->reserved_word_quote;  | 
              |
| 162 | 
                  +    foreach my $column (keys %$param) {
                 | 
              |
| 163 | 
                  +        croak qq{"$column" is not safety column name } . _subname
                 | 
              |
| 164 | 
                  + unless $column =~ /^[$safety\.]+$/;  | 
              |
| 165 | 
                  + my $column = "$q$column$q";  | 
              |
| 166 | 
                  + $column =~ s/\./$q.$q/;  | 
              |
| 167 | 
                  +        push @params, "$column = {? $column}";
                 | 
              |
| 168 | 
                  + }  | 
              |
| 169 | 
                  +    my $tag = join(', ', @params);
                 | 
              |
| 170 | 
                  +  | 
              |
| 171 | 
                  + return $tag;  | 
              |
| 172 | 
                  +}  | 
              |
| 173 | 
                  +  | 
              |
| 154 | 174 | 
                   sub column {
                 | 
              
| 155 | 175 | 
                  my ($self, $table, $columns) = @_;  | 
              
| 156 | 176 | 
                   | 
              
| ... | ... | 
                  @@ -1084,20 +1104,9 @@ sub update_param_tag {
                 | 
              
| 1084 | 1104 | 
                  my ($self, $param, $opt) = @_;  | 
              
| 1085 | 1105 | 
                   | 
              
| 1086 | 1106 | 
                  # Create update parameter tag  | 
              
| 1087 | 
                  - my @params;  | 
              |
| 1088 | 
                  - my $safety = $self->safety_character;  | 
              |
| 1089 | 
                  - my $q = $self->reserved_word_quote;  | 
              |
| 1090 | 
                  -    foreach my $column (keys %$param) {
                 | 
              |
| 1091 | 
                  -        croak qq{"$column" is not safety column name } . _subname
                 | 
              |
| 1092 | 
                  - unless $column =~ /^[$safety\.]+$/;  | 
              |
| 1093 | 
                  - my $column = "$q$column$q";  | 
              |
| 1094 | 
                  - $column =~ s/\./$q.$q/;  | 
              |
| 1095 | 
                  -        push @params, "$column = {? $column}";
                 | 
              |
| 1096 | 
                  - }  | 
              |
| 1097 | 
                  - my $tag;  | 
              |
| 1098 | 
                  -    $tag .= 'set ' unless $opt->{no_set};
                 | 
              |
| 1099 | 
                  -    $tag .= join(', ', @params);
                 | 
              |
| 1100 | 
                  -  | 
              |
| 1107 | 
                  + my $tag = $self->assign_tag($param);  | 
              |
| 1108 | 
                  +    $tag = "set $tag" unless $opt->{no_set};
                 | 
              |
| 1109 | 
                  +  | 
              |
| 1101 | 1110 | 
                  return $tag;  | 
              
| 1102 | 1111 | 
                  }  | 
              
| 1103 | 1112 | 
                   | 
              
| ... | ... | 
                  @@ -1732,6 +1741,16 @@ You can set multiple filters at once.  | 
              
| 1732 | 1741 | 
                  }  | 
              
| 1733 | 1742 | 
                  );  | 
              
| 1734 | 1743 | 
                   | 
              
| 1744 | 
                  +=head2 C<assign_tag> EXPERIMENTAL  | 
              |
| 1745 | 
                  +  | 
              |
| 1746 | 
                  +    my $assign_tag = $dbi->assign_tag({title => 'a', age => 2});
                 | 
              |
| 1747 | 
                  +  | 
              |
| 1748 | 
                  +Create assign tag.  | 
              |
| 1749 | 
                  +  | 
              |
| 1750 | 
                  +    title = {? title}, author = {? author}
                 | 
              |
| 1751 | 
                  +  | 
              |
| 1752 | 
                  +This is equal to C<update_param_tag> exept that set is not added.  | 
              |
| 1753 | 
                  +  | 
              |
| 1735 | 1754 | 
                  =head2 C<connect>  | 
              
| 1736 | 1755 | 
                   | 
              
| 1737 | 1756 | 
                  my $dbi = DBIx::Custom->connect(  | 
              
| ... | ... | 
                  @@ -1792,7 +1792,7 @@ $result = $model->select(  | 
              
| 1792 | 1792 | 
                  is_deeply($result->fetch_hash_first,  | 
              
| 1793 | 1793 | 
                             {key1 => 1, key2 => 2, 'table2__key1' => 1, 'table2__key3' => 3});
                 | 
              
| 1794 | 1794 | 
                   | 
              
| 1795 | 
                  -test 'update_param';  | 
              |
| 1795 | 
                  +test 'update_param_tag';  | 
              |
| 1796 | 1796 | 
                   $dbi = DBIx::Custom->connect($NEW_ARGS->{0});
                 | 
              
| 1797 | 1797 | 
                   $dbi->execute($CREATE_TABLE->{1});
                 | 
              
| 1798 | 1798 | 
                   $dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5});
                 | 
              
| ... | ... | 
                  @@ -1853,6 +1853,27 @@ eval { $dbi->update_param_tag({";" => 1}) };
                 | 
              
| 1853 | 1853 | 
                  like($@, qr/not safety/);  | 
              
| 1854 | 1854 | 
                   | 
              
| 1855 | 1855 | 
                   | 
              
| 1856 | 
                  +test 'set_tag';  | 
              |
| 1857 | 
                  +test 'update_param_tag';  | 
              |
| 1858 | 
                  +$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
                 | 
              |
| 1859 | 
                  +$dbi->execute($CREATE_TABLE->{1});
                 | 
              |
| 1860 | 
                  +$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5});
                 | 
              |
| 1861 | 
                  +$dbi->insert(table => 'table1', param => {key1 => 6, key2 => 7, key3 => 8, key4 => 9, key5 => 10});
                 | 
              |
| 1862 | 
                  +  | 
              |
| 1863 | 
                  +$param = {key2 => 11};
                 | 
              |
| 1864 | 
                  +$update_param = $dbi->assign_tag($param);  | 
              |
| 1865 | 
                  +$sql = <<"EOS";  | 
              |
| 1866 | 
                  +update {table table1} set $update_param
                 | 
              |
| 1867 | 
                  +where key1 = 1  | 
              |
| 1868 | 
                  +EOS  | 
              |
| 1869 | 
                  +$dbi->execute($sql, param => $param);  | 
              |
| 1870 | 
                  +$result = $dbi->execute($SELECT_SOURCES->{0});
                 | 
              |
| 1871 | 
                  +$rows = $result->fetch_hash_all;  | 
              |
| 1872 | 
                  +is_deeply($rows, [{key1 => 1, key2 => 11, key3 => 3, key4 => 4, key5 => 5},
                 | 
              |
| 1873 | 
                  +                  {key1 => 6, key2 => 7,  key3 => 8, key4 => 9, key5 => 10}],
                 | 
              |
| 1874 | 
                  + "basic");  | 
              |
| 1875 | 
                  +  | 
              |
| 1876 | 
                  +  | 
              |
| 1856 | 1877 | 
                  test 'insert_param';  | 
              
| 1857 | 1878 | 
                   $dbi = DBIx::Custom->connect($NEW_ARGS->{0});
                 | 
              
| 1858 | 1879 | 
                   $dbi->execute($CREATE_TABLE->{1});
                 |