Showing 1 changed files with 43 additions and 10 deletions
+43 -10
t/02-sqlite.t
... ...
@@ -1,7 +1,6 @@
1 1
 use Test::More;
2 2
 use strict;
3 3
 use warnings;
4
-use DBI qw/:sql_types/;
5 4
 
6 5
 BEGIN {
7 6
     eval { require DBD::SQLite; 1 }
... ...
@@ -24,11 +23,16 @@ our $CREATE_TABLE = {
24 23
     0 => 'create table table1 (key1 char(255), key2 char(255));'
25 24
 };
26 25
 
26
+our $SELECT_TMPL = {
27
+    0 => 'select key1, key2 from table1;'
28
+};
29
+
27 30
 my $dbi;
28 31
 my $sth;
29 32
 my $tmpl;
30 33
 my $select_tmpl;
31 34
 my $insert_tmpl;
35
+my $update_tmpl;
32 36
 my $params;
33 37
 my $sql;
34 38
 my $result;
... ...
@@ -37,10 +41,12 @@ my $rows;
37 41
 my $query;
38 42
 my $select_query;
39 43
 my $insert_query;
44
+my $update_query;
40 45
 my $ret_val;
41 46
 
42 47
 
43 48
 
49
+
44 50
 # Prepare table
45 51
 $dbi = DBI::Custom->new(data_source => 'dbi:SQLite:dbname=:memory:');
46 52
 $dbi->connect;
... ...
@@ -105,11 +111,19 @@ $result = $dbi->execute($query);
105 111
 @rows = $result->fetch_all;
106 112
 is_deeply(\@rows, [[1, 2], [3, 4]], "$test : fetch_all_hash list context");
107 113
 
114
+test 'Insert query return value';
115
+$dbi->reconnect;
116
+$dbi->do($CREATE_TABLE->{0});
117
+$tmpl = "insert into table1 {insert key1 key2}";
118
+$query = $dbi->create_query($tmpl);
119
+$ret_val = $dbi->execute($query, {key1 => 1, key2 => 2});
120
+ok($ret_val, $test);
121
+
108 122
 test 'Filter';
109 123
 $dbi->reconnect;
110 124
 $dbi->do($CREATE_TABLE->{0});
111 125
 
112
-$insert_tmpl  = "insert into table1 {insert_values key1 key2};";
126
+$insert_tmpl  = "insert into table1 {insert key1 key2};";
113 127
 $insert_query = $dbi->create_query($insert_tmpl);
114 128
 $insert_query->bind_filter(sub {
115 129
     my ($key, $value, $table, $column) = @_;
... ...
@@ -119,11 +133,9 @@ $insert_query->bind_filter(sub {
119 133
     return $value;
120 134
 });
121 135
 
122
-$ret_val = $dbi->execute($insert_query, {key1 => 1, key2 => 2});
123
-ok($ret_val, "Insert success return value");
136
+$dbi->execute($insert_query, {key1 => 1, key2 => 2});
124 137
 
125
-$select_tmpl  = "select key1, key2 from table1";
126
-$select_query = $dbi->create_query($select_tmpl);
138
+$select_query = $dbi->create_query($SELECT_TMPL->{0});
127 139
 $select_query->fetch_filter(sub {
128 140
     my ($key, $value, $type, $sth, $i) = @_;
129 141
     if ($key eq 'key2' && $type =~ /char/ && $sth->can('execute') && $i == 1) {
... ...
@@ -136,6 +148,27 @@ $result = $dbi->execute($select_query);
136 148
 $rows = $result->fetch_all_hash;
137 149
 is_deeply($rows, [{key1 => 2, key2 => 6}], "$test : bind_filter fetch_filter");
138 150
 
151
+$dbi->reconnect;
152
+$dbi->do($CREATE_TABLE->{0});
153
+$insert_tmpl  = "insert into table1 {insert table1.key1 table1.key2}";
154
+
155
+$insert_query = $dbi->create_query($insert_tmpl);
156
+$insert_query->bind_filter(sub {
157
+    my ($key, $value, $table, $column) = @_;
158
+    if ($key eq 'table1.key1' && $table eq 'table1' && $column eq 'key1') {
159
+        return $value * 3;
160
+    }
161
+    return $value;
162
+});
163
+
164
+$dbi->execute($insert_query, {table1 => {key1 => 1, key2 => 2}});
165
+
166
+$select_query = $dbi->create_query($SELECT_TMPL->{0});
167
+$result       = $dbi->execute($select_query);
168
+$rows = $result->fetch_all_hash;
169
+is_deeply($rows, [{key1 => 3, key2 => 2}], "$test : insert with table name");
170
+
171
+
139 172
 __END__
140 173
 
141 174
 $dbi->fetch_filter(sub {
... ...
@@ -191,8 +224,8 @@ is_deeply(\@bind, ['g'], 'sql template bind2' );
191 224
 
192 225
 # Insert values
193 226
 $dbi = DBI::Custom->new;
194
-$tmpl   = "insert into table {insert_values}";
195
-$params = {insert_values => {key1 => 'a', key2 => 'b'}};
227
+$tmpl   = "insert into table {insert}";
228
+$params = {insert => {key1 => 'a', key2 => 'b'}};
196 229
 
197 230
 $dbi->filters(filter => sub {
198 231
     my ($key, $value) = @_;
... ...
@@ -208,8 +241,8 @@ is_deeply(\@bind, ['A', 'b'], 'sql template bind' );
208 241
 
209 242
 # Update set
210 243
 $dbi = DBI::Custom->new;
211
-$tmpl   = "update table {update_set}";
212
-$params = {update_set => {key1 => 'a', key2 => 'b'}};
244
+$tmpl   = "update table {update}";
245
+$params = {update => {key1 => 'a', key2 => 'b'}};
213 246
 
214 247
 $dbi->filters(filter => sub {
215 248
     my ($key, $value) = @_;