fixed bug that when id option's value is object, don...
...'t work.
... | ... |
@@ -1,3 +1,5 @@ |
1 |
+0.26 |
|
2 |
+ - fixed bug that when id option's value is object, don't work. |
|
1 | 3 |
0.25 |
2 | 4 |
- added DBIX_CUSTOM_SUPPRESS_DEPRECATION environment varaible |
3 | 5 |
to suppress deprecation warnings |
... | ... |
@@ -2,7 +2,7 @@ use 5.008007; |
2 | 2 |
package DBIx::Custom; |
3 | 3 |
use Object::Simple -base; |
4 | 4 |
|
5 |
-our $VERSION = '0.25'; |
|
5 |
+our $VERSION = '0.26'; |
|
6 | 6 |
|
7 | 7 |
use Carp 'croak'; |
8 | 8 |
use DBI; |
... | ... |
@@ -461,8 +461,8 @@ sub execute { |
461 | 461 |
unless $statement; |
462 | 462 |
croak "execute id option must be specified with primary_key option" |
463 | 463 |
unless $opt{primary_key}; |
464 |
- $opt{primary_key} = [$opt{primary_key}] unless ref $opt{primary_key}; |
|
465 |
- $opt{id} = [$opt{id}] unless ref $opt{id}; |
|
464 |
+ $opt{primary_key} = [$opt{primary_key}] unless ref $opt{primary_key} eq 'ARRAY'; |
|
465 |
+ $opt{id} = [$opt{id}] unless ref $opt{id} eq 'ARRAY'; |
|
466 | 466 |
for (my $i = 0; $i < @{$opt{id}}; $i++) { |
467 | 467 |
my $key = $opt{primary_key}->[$i]; |
468 | 468 |
$key = "$main_table.$key" if $statement eq 'update' || |
... | ... |
@@ -732,8 +732,8 @@ sub insert { |
732 | 732 |
if (defined $opt{id} && !$multi) { |
733 | 733 |
croak "insert id option must be specified with primary_key option" |
734 | 734 |
unless $opt{primary_key}; |
735 |
- $opt{primary_key} = [$opt{primary_key}] unless ref $opt{primary_key}; |
|
736 |
- $opt{id} = [$opt{id}] unless ref $opt{id}; |
|
735 |
+ $opt{primary_key} = [$opt{primary_key}] unless ref $opt{primary_key} eq 'ARRAY'; |
|
736 |
+ $opt{id} = [$opt{id}] unless ref $opt{id} eq 'ARRAY'; |
|
737 | 737 |
for (my $i = 0; $i < @{$opt{primary_key}}; $i++) { |
738 | 738 |
my $key = $opt{primary_key}->[$i]; |
739 | 739 |
next if exists $params->[0]->{$key}; |
... | ... |
@@ -851,8 +851,8 @@ sub include_model { |
851 | 851 |
my $mclass = "${name_space}::$model_class"; |
852 | 852 |
croak qq{"$mclass" is invalid class name } . _subname |
853 | 853 |
if $mclass =~ /[^\w:]/; |
854 |
- unless ($mclass->can('isa')) { |
|
855 |
- eval "use $mclass"; |
|
854 |
+ unless ($mclass->can('new')) { |
|
855 |
+ eval "require $mclass"; |
|
856 | 856 |
croak "$@ " . _subname if $@; |
857 | 857 |
} |
858 | 858 |
|
... | ... |
@@ -1562,7 +1562,7 @@ sub _id_to_param { |
1562 | 1562 |
# Create parameter |
1563 | 1563 |
my $param = {}; |
1564 | 1564 |
if (defined $id) { |
1565 |
- $id = [$id] unless ref $id; |
|
1565 |
+ $id = [$id] unless ref $id eq 'ARRAY'; |
|
1566 | 1566 |
for(my $i = 0; $i < @$id; $i++) { |
1567 | 1567 |
my $key = $primary_keys->[$i]; |
1568 | 1568 |
$key = "$table." . $key if $table; |
... | ... |
@@ -2016,7 +2016,7 @@ sub insert_at { |
2016 | 2016 |
$param = shift if @_ % 2; |
2017 | 2017 |
my %opt = @_; |
2018 | 2018 |
my $primary_key = delete $opt{primary_key}; |
2019 |
- $primary_key = [$primary_key] unless ref $primary_key; |
|
2019 |
+ $primary_key = [$primary_key] unless ref $primary_key eq 'ARRAY'; |
|
2020 | 2020 |
my $where = delete $opt{where}; |
2021 | 2021 |
my $p = delete $opt{param} || {}; |
2022 | 2022 |
$param ||= $p; |
... | ... |
@@ -2818,6 +2818,16 @@ is($dbi->select(table => $table1)->one->{$key1}, 1); |
2818 | 2818 |
is($dbi->select(table => $table1)->one->{$key2}, 2); |
2819 | 2819 |
is($dbi->select(table => $table1)->one->{$key3}, 3); |
2820 | 2820 |
|
2821 |
+$dbi->insert( |
|
2822 |
+ {$key3 => 3}, |
|
2823 |
+ primary_key => [$key1, $key2], |
|
2824 |
+ table => $table1, |
|
2825 |
+ id => [1, 2], |
|
2826 |
+); |
|
2827 |
+is($dbi->select(table => $table1)->one->{$key1}, 1); |
|
2828 |
+is($dbi->select(table => $table1)->one->{$key2}, 2); |
|
2829 |
+is($dbi->select(table => $table1)->one->{$key3}, 3); |
|
2830 |
+ |
|
2821 | 2831 |
$dbi->delete_all(table => $table1); |
2822 | 2832 |
$dbi->insert( |
2823 | 2833 |
{$key2 => 2, $key3 => 3}, |
... | ... |
@@ -2830,6 +2840,19 @@ is($dbi->select(table => $table1)->one->{$key1}, 0); |
2830 | 2840 |
is($dbi->select(table => $table1)->one->{$key2}, 2); |
2831 | 2841 |
is($dbi->select(table => $table1)->one->{$key3}, 3); |
2832 | 2842 |
|
2843 |
+$dbi = DBIx::Custom->connect; |
|
2844 |
+eval { $dbi->execute("drop table $table1") }; |
|
2845 |
+$dbi->execute($create_table1_2); |
|
2846 |
+$dbi->insert( |
|
2847 |
+ {$key3 => 3}, |
|
2848 |
+ primary_key => $key1, |
|
2849 |
+ table => $table1, |
|
2850 |
+ id => bless({value => 1}, 'AAAA'), |
|
2851 |
+ filter => {$key1 => sub { shift->{value} }} |
|
2852 |
+); |
|
2853 |
+is($dbi->select(table => $table1)->one->{$key1}, 1); |
|
2854 |
+is($dbi->select(table => $table1)->one->{$key3}, 3); |
|
2855 |
+ |
|
2833 | 2856 |
$dbi = DBIx::Custom->connect; |
2834 | 2857 |
eval { $dbi->execute("drop table $table1") }; |
2835 | 2858 |
$dbi->execute($create_table1_2); |
... | ... |
@@ -3868,10 +3891,10 @@ $dbi->register_tag( |
3868 | 3891 |
|
3869 | 3892 |
test 'Default tag Error case'; |
3870 | 3893 |
eval{$builder->build_query("{= }")}; |
3871 |
-like($@, qr/Column name must be specified in tag "{= }"/, "basic '=' : key not exist"); |
|
3894 |
+like($@, qr/\QColumn name must be specified in tag "{= }"/, "basic '=' : key not exist"); |
|
3872 | 3895 |
|
3873 | 3896 |
eval{$builder->build_query("{in }")}; |
3874 |
-like($@, qr/Column name and count of values must be specified in tag "{in }"/, "in : key not exist"); |
|
3897 |
+like($@, qr/\QColumn name and count of values must be specified in tag "{in }"/, "in : key not exist"); |
|
3875 | 3898 |
|
3876 | 3899 |
eval{$builder->build_query("{in a}")}; |
3877 | 3900 |
like($@, qr/\QColumn name and count of values must be specified in tag "{in }"/, |
... | ... |
@@ -3904,7 +3927,7 @@ like($@, qr/unexpected "}"/, "error : 1"); |
3904 | 3927 |
|
3905 | 3928 |
$source = "a {= {}"; |
3906 | 3929 |
eval{$builder->build_query($source)}; |
3907 |
-like($@, qr/unexpected "{"/, "error : 2"); |
|
3930 |
+like($@, qr/\Qunexpected "{"/, "error : 2"); |
|
3908 | 3931 |
|
3909 | 3932 |
test 'select() sqlfilter option'; |
3910 | 3933 |
$dbi = DBIx::Custom->connect; |