Showing 3 changed files with 90 additions and 5 deletions
+2
Changes
... ...
@@ -1,3 +1,5 @@
1
+0.1647
2
+  add default_dbi_option()
1 3
 0.1646
2 4
   add feture. all model class in namespace is included by include_model
3 5
   rename experimental include_table to include_model
+25 -5
lib/DBIx/Custom.pm
... ...
@@ -1,6 +1,6 @@
1 1
 package DBIx::Custom;
2 2
 
3
-our $VERSION = '0.1646';
3
+our $VERSION = '0.1647';
4 4
 
5 5
 use 5.008001;
6 6
 use strict;
... ...
@@ -21,7 +21,12 @@ use Encode qw/encode_utf8 decode_utf8/;
21 21
 __PACKAGE__->attr(
22 22
     [qw/data_source dbh password user/],
23 23
     cache => 1,
24
-    dbi_option    => sub { {} },
24
+    dbi_option => sub { {} },
25
+    default_dbi_option => sub {{
26
+        RaiseError => 1,
27
+        PrintError => 0,
28
+        AutoCommit => 1
29
+    }},
25 30
     query_builder => sub { DBIx::Custom::QueryBuilder->new },
26 31
     result_class  => 'DBIx::Custom::Result',
27 32
     safety_column_name => sub { qr/^[\w\.]*$/ },
... ...
@@ -156,9 +161,7 @@ sub connect {
156 161
         $user,
157 162
         $password,
158 163
         {
159
-            RaiseError => 1,
160
-            PrintError => 0,
161
-            AutoCommit => 1,
164
+            %{$self->default_dbi_option},
162 165
             %$dbi_option
163 166
         }
164 167
     )};
... ...
@@ -1025,6 +1028,23 @@ L<DBI> object. You can call all methods of L<DBI>.
1025 1028
     $dbi            = $dbi->dbi_option($dbi_option);
1026 1029
 
1027 1030
 DBI options.
1031
+
1032
+Each option specified can ovewrite C<default_dbi_option>.
1033
+
1034
+C<connect()> method use this value to connect the database.
1035
+
1036
+
1037
+=head2 C<default_dbi_option>
1038
+
1039
+    my $default_dbi_option = $dbi->default_dbi_option;
1040
+    $dbi            = $dbi->default_dbi_option($default_dbi_option);
1041
+
1042
+DBI default options.
1043
+
1044
+    RaiseError => 1,
1045
+    PrintError => 0,
1046
+    AutoCommit => 1,
1047
+
1028 1048
 C<connect()> method use this value to connect the database.
1029 1049
 
1030 1050
 Default filter when row is fetched.
+63
xt/dbix-connector.t
... ...
@@ -0,0 +1,63 @@
1
+use Test::More 'no_plan';
2
+
3
+{
4
+     package MyDBI1;
5
+     
6
+     use base 'DBIx::Custom';
7
+     
8
+     use DBIx::Connector;
9
+     
10
+     __PACKAGE__->attr(connection_manager => sub {
11
+         my $self = shift;
12
+         
13
+         my $cm = DBIx::Connector->new(
14
+             $self->data_source,
15
+             $self->user,
16
+             $self->password,
17
+             {
18
+                 %{$self->default_dbi_option},
19
+                 %{$self->dbi_option}
20
+             }
21
+         );
22
+         
23
+         return $cm
24
+     });
25
+     
26
+     sub dbh { shift->connection_manager->dbh }
27
+     
28
+     sub connect {
29
+         my $self = shift->SUPER::new(@_);
30
+         
31
+         return $self;
32
+     }
33
+}
34
+
35
+# user password database
36
+our ($USER, $PASSWORD, $DATABASE) = connect_info();
37
+
38
+# Functions for tests
39
+sub connect_info {
40
+    my $file = 'password.tmp';
41
+    open my $fh, '<', $file
42
+      or return;
43
+    
44
+    my ($user, $password, $database) = split(/\s/, (<$fh>)[0]);
45
+    
46
+    close $fh;
47
+    
48
+    return ($user, $password, $database);
49
+}
50
+
51
+my $dbi = MyDBI1->connect(
52
+    user => $USER, password => $PASSWORD,
53
+    data_source => "dbi:mysql:database=$DATABASE");
54
+
55
+$dbi->delete_all(table => 'table1');
56
+$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
57
+is_deeply($dbi->select(table => 'table1')->fetch_hash_all, [{key1 => 1, key2 => 2}]);
58
+
59
+
60
+
61
+
62
+
63
+