DBIx-Custom / t / dbix-custom-core-sqlite.t /
Newer Older
2812 lines | 91.499kb
removed register_format()
yuki-kimoto authored on 2010-05-26
1
use Test::More;
2
use strict;
3
use warnings;
4

            
5
use utf8;
6
use Encode qw/encode_utf8 decode_utf8/;
add experimental DBIx::Custo...
Yuki Kimoto authored on 2011-02-22
7
use Data::Dumper;
removed register_format()
yuki-kimoto authored on 2010-05-26
8

            
set reserved_word_quote auto...
Yuki Kimoto authored on 2011-06-08
9
$SIG{__WARN__} = sub { warn $_[0] unless $_[0] =~ /DEPRECATED/};
removed EXPERIMETNAL select(...
Yuki Kimoto authored on 2011-04-01
10

            
removed register_format()
yuki-kimoto authored on 2010-05-26
11
BEGIN {
12
    eval { require DBD::SQLite; 1 }
13
        or plan skip_all => 'DBD::SQLite required';
14
    eval { DBD::SQLite->VERSION >= 1.25 }
15
        or plan skip_all => 'DBD::SQLite >= 1.25 required';
16

            
17
    plan 'no_plan';
18
    use_ok('DBIx::Custom');
19
}
20

            
removed experimental base_ta...
Yuki Kimoto authored on 2011-02-15
21
use FindBin;
22
use lib "$FindBin::Bin/dbix-custom-core-sqlite";
23

            
removed register_format()
yuki-kimoto authored on 2010-05-26
24
# Function for test name
table object call dbi object...
Yuki Kimoto authored on 2011-01-25
25
sub test { print "# $_[0]\n" }
removed register_format()
yuki-kimoto authored on 2010-05-26
26

            
27
# Constant varialbes for test
28
my $CREATE_TABLE = {
29
    0 => 'create table table1 (key1 char(255), key2 char(255));',
30
    1 => 'create table table1 (key1 char(255), key2 char(255), key3 char(255), key4 char(255), key5 char(255));',
added experimental iterate_a...
Yuki Kimoto authored on 2010-12-22
31
    2 => 'create table table2 (key1 char(255), key3 char(255));',
- added experimental DBIx::C...
Yuki Kimoto authored on 2011-03-08
32
    3 => 'create table table1 (key1 Date, key2 datetime);',
33
    4 => 'create table table3 (key3 int, key4 int);'
removed register_format()
yuki-kimoto authored on 2010-05-26
34
};
35

            
add tests
yuki-kimoto authored on 2010-08-10
36
my $SELECT_SOURCES = {
removed register_format()
yuki-kimoto authored on 2010-05-26
37
    0 => 'select * from table1;'
38
};
39

            
40
my $DROP_TABLE = {
41
    0 => 'drop table table1'
42
};
43

            
44
my $NEW_ARGS = {
data_source is DEPRECATED! I...
Yuki Kimoto authored on 2011-06-06
45
    0 => {dsn => 'dbi:SQLite:dbname=:memory:'}
removed register_format()
yuki-kimoto authored on 2010-05-26
46
};
47

            
48
# Variables
49
my $dbi;
50
my $sth;
renamed build_query to creat...
yuki-kimoto authored on 2010-08-06
51
my $source;
52
my @sources;
add tests
yuki-kimoto authored on 2010-08-10
53
my $select_SOURCE;
54
my $insert_SOURCE;
55
my $update_SOURCE;
added experimental update_pa...
Yuki Kimoto authored on 2011-03-08
56
my $param;
removed register_format()
yuki-kimoto authored on 2010-05-26
57
my $params;
58
my $sql;
59
my $result;
60
my $row;
61
my @rows;
62
my $rows;
63
my $query;
64
my @queries;
65
my $select_query;
66
my $insert_query;
67
my $update_query;
68
my $ret_val;
added experimental iterate_a...
Yuki Kimoto authored on 2010-12-22
69
my $infos;
add feture. all model class ...
Yuki Kimoto authored on 2011-02-18
70
my $model;
create_model() return model
Yuki Kimoto authored on 2011-03-29
71
my $model2;
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
72
my $where;
added experimental update_pa...
Yuki Kimoto authored on 2011-03-08
73
my $update_param;
74
my $insert_param;
added EXPERIMENTAL replace()...
Yuki Kimoto authored on 2011-04-01
75
my $join;
removed register_format()
yuki-kimoto authored on 2010-05-26
76

            
77
# Prepare table
78
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
79
$dbi->execute($CREATE_TABLE->{0});
80
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
81
$dbi->insert(table => 'table1', param => {key1 => 3, key2 => 4});
82

            
83
test 'DBIx::Custom::Result test';
renamed build_query to creat...
yuki-kimoto authored on 2010-08-06
84
$source = "select key1, key2 from table1";
85
$query = $dbi->create_query($source);
removed register_format()
yuki-kimoto authored on 2010-05-26
86
$result = $dbi->execute($query);
87

            
88
@rows = ();
89
while (my $row = $result->fetch) {
90
    push @rows, [@$row];
91
}
cleanup
Yuki Kimoto authored on 2011-01-23
92
is_deeply(\@rows, [[1, 2], [3, 4]], "fetch");
removed register_format()
yuki-kimoto authored on 2010-05-26
93

            
94
$result = $dbi->execute($query);
95
@rows = ();
96
while (my $row = $result->fetch_hash) {
97
    push @rows, {%$row};
98
}
cleanup
Yuki Kimoto authored on 2011-01-23
99
is_deeply(\@rows, [{key1 => 1, key2 => 2}, {key1 => 3, key2 => 4}], "fetch_hash");
removed register_format()
yuki-kimoto authored on 2010-05-26
100

            
101
$result = $dbi->execute($query);
102
$rows = $result->fetch_all;
cleanup
Yuki Kimoto authored on 2011-01-23
103
is_deeply($rows, [[1, 2], [3, 4]], "fetch_all");
removed register_format()
yuki-kimoto authored on 2010-05-26
104

            
105
$result = $dbi->execute($query);
removed reconnect method
yuki-kimoto authored on 2010-05-28
106
$rows = $result->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
107
is_deeply($rows, [{key1 => 1, key2 => 2}, {key1 => 3, key2 => 4}], "fetch_hash_all");
removed register_format()
yuki-kimoto authored on 2010-05-26
108

            
109
test 'Insert query return value';
110
$dbi->execute($DROP_TABLE->{0});
111
$dbi->execute($CREATE_TABLE->{0});
renamed update tag to update...
yuki-kimoto authored on 2010-08-09
112
$source = "insert into table1 {insert_param key1 key2}";
renamed build_query to creat...
yuki-kimoto authored on 2010-08-06
113
$query = $dbi->create_query($source);
removed register_format()
yuki-kimoto authored on 2010-05-26
114
$ret_val = $dbi->execute($query, param => {key1 => 1, key2 => 2});
cleanup
Yuki Kimoto authored on 2011-01-23
115
ok($ret_val);
removed register_format()
yuki-kimoto authored on 2010-05-26
116

            
117

            
118
test 'Direct query';
119
$dbi->execute($DROP_TABLE->{0});
120
$dbi->execute($CREATE_TABLE->{0});
add tests
yuki-kimoto authored on 2010-08-10
121
$insert_SOURCE = "insert into table1 {insert_param key1 key2}";
122
$dbi->execute($insert_SOURCE, param => {key1 => 1, key2 => 2});
123
$result = $dbi->execute($SELECT_SOURCES->{0});
removed register_format()
yuki-kimoto authored on 2010-05-26
124
$rows = $result->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
125
is_deeply($rows, [{key1 => 1, key2 => 2}]);
removed register_format()
yuki-kimoto authored on 2010-05-26
126

            
127
test 'Filter basic';
128
$dbi->execute($DROP_TABLE->{0});
129
$dbi->execute($CREATE_TABLE->{0});
130
$dbi->register_filter(twice       => sub { $_[0] * 2}, 
131
                    three_times => sub { $_[0] * 3});
132

            
add tests
yuki-kimoto authored on 2010-08-10
133
$insert_SOURCE  = "insert into table1 {insert_param key1 key2};";
134
$insert_query = $dbi->create_query($insert_SOURCE);
removed register_format()
yuki-kimoto authored on 2010-05-26
135
$insert_query->filter({key1 => 'twice'});
136
$dbi->execute($insert_query, param => {key1 => 1, key2 => 2});
add tests
yuki-kimoto authored on 2010-08-10
137
$result = $dbi->execute($SELECT_SOURCES->{0});
removed register_format()
yuki-kimoto authored on 2010-05-26
138
$rows = $result->filter({key2 => 'three_times'})->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
139
is_deeply($rows, [{key1 => 2, key2 => 6}], "filter fetch_filter");
removed register_format()
yuki-kimoto authored on 2010-05-26
140
$dbi->execute($DROP_TABLE->{0});
141

            
142
test 'Filter in';
143
$dbi->execute($CREATE_TABLE->{0});
add tests
yuki-kimoto authored on 2010-08-10
144
$insert_SOURCE  = "insert into table1 {insert_param key1 key2};";
145
$insert_query = $dbi->create_query($insert_SOURCE);
removed register_format()
yuki-kimoto authored on 2010-05-26
146
$dbi->execute($insert_query, param => {key1 => 2, key2 => 4});
add tests
yuki-kimoto authored on 2010-08-10
147
$select_SOURCE = "select * from table1 where {in table1.key1 2} and {in table1.key2 2}";
148
$select_query = $dbi->create_query($select_SOURCE);
removed register_format()
yuki-kimoto authored on 2010-05-26
149
$select_query->filter({'table1.key1' => 'twice'});
150
$result = $dbi->execute($select_query, param => {'table1.key1' => [1,5], 'table1.key2' => [2,4]});
151
$rows = $result->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
152
is_deeply($rows, [{key1 => 2, key2 => 4}], "filter");
removed register_format()
yuki-kimoto authored on 2010-05-26
153

            
154
test 'DBIx::Custom::SQLTemplate basic tag';
155
$dbi->execute($DROP_TABLE->{0});
156
$dbi->execute($CREATE_TABLE->{1});
157
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5});
158
$dbi->insert(table => 'table1', param => {key1 => 6, key2 => 7, key3 => 8, key4 => 9, key5 => 10});
159

            
renamed build_query to creat...
yuki-kimoto authored on 2010-08-06
160
$source = "select * from table1 where {= key1} and {<> key2} and {< key3} and {> key4} and {>= key5};";
161
$query = $dbi->create_query($source);
removed register_format()
yuki-kimoto authored on 2010-05-26
162
$result = $dbi->execute($query, param => {key1 => 1, key2 => 3, key3 => 4, key4 => 3, key5 => 5});
163
$rows = $result->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
164
is_deeply($rows, [{key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5}], "basic tag1");
removed register_format()
yuki-kimoto authored on 2010-05-26
165

            
execute method can second ar...
Yuki Kimoto authored on 2011-06-09
166
$source = "select * from table1 where {= key1} and {<> key2} and {< key3} and {> key4} and {>= key5};";
167
$query = $dbi->create_query($source);
168
$result = $dbi->execute($query, {key1 => 1, key2 => 3, key3 => 4, key4 => 3, key5 => 5});
169
$rows = $result->fetch_hash_all;
170
is_deeply($rows, [{key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5}], "basic tag1");
171

            
renamed build_query to creat...
yuki-kimoto authored on 2010-08-06
172
$source = "select * from table1 where {<= key1} and {like key2};";
173
$query = $dbi->create_query($source);
removed register_format()
yuki-kimoto authored on 2010-05-26
174
$result = $dbi->execute($query, param => {key1 => 1, key2 => '%2%'});
175
$rows = $result->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
176
is_deeply($rows, [{key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5}], "basic tag2");
removed register_format()
yuki-kimoto authored on 2010-05-26
177

            
178
test 'DIB::Custom::SQLTemplate in tag';
179
$dbi->execute($DROP_TABLE->{0});
180
$dbi->execute($CREATE_TABLE->{1});
181
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5});
182
$dbi->insert(table => 'table1', param => {key1 => 6, key2 => 7, key3 => 8, key4 => 9, key5 => 10});
183

            
renamed build_query to creat...
yuki-kimoto authored on 2010-08-06
184
$source = "select * from table1 where {in key1 2};";
185
$query = $dbi->create_query($source);
removed register_format()
yuki-kimoto authored on 2010-05-26
186
$result = $dbi->execute($query, param => {key1 => [9, 1]});
187
$rows = $result->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
188
is_deeply($rows, [{key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5}], "basic");
removed register_format()
yuki-kimoto authored on 2010-05-26
189

            
190
test 'DBIx::Custom::SQLTemplate insert tag';
191
$dbi->execute("delete from table1");
add tests
yuki-kimoto authored on 2010-08-10
192
$insert_SOURCE = 'insert into table1 {insert_param key1 key2 key3 key4 key5}';
193
$dbi->execute($insert_SOURCE, param => {key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5});
removed register_format()
yuki-kimoto authored on 2010-05-26
194

            
add tests
yuki-kimoto authored on 2010-08-10
195
$result = $dbi->execute($SELECT_SOURCES->{0});
removed register_format()
yuki-kimoto authored on 2010-05-26
196
$rows = $result->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
197
is_deeply($rows, [{key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5}], "basic");
removed register_format()
yuki-kimoto authored on 2010-05-26
198

            
199
test 'DBIx::Custom::SQLTemplate update tag';
200
$dbi->execute("delete from table1");
add tests
yuki-kimoto authored on 2010-08-10
201
$insert_SOURCE = "insert into table1 {insert_param key1 key2 key3 key4 key5}";
202
$dbi->execute($insert_SOURCE, param => {key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5});
203
$dbi->execute($insert_SOURCE, param => {key1 => 6, key2 => 7, key3 => 8, key4 => 9, key5 => 10});
removed register_format()
yuki-kimoto authored on 2010-05-26
204

            
add tests
yuki-kimoto authored on 2010-08-10
205
$update_SOURCE = 'update table1 {update_param key1 key2 key3 key4} where {= key5}';
206
$dbi->execute($update_SOURCE, param => {key1 => 1, key2 => 1, key3 => 1, key4 => 1, key5 => 5});
removed register_format()
yuki-kimoto authored on 2010-05-26
207

            
add tests
yuki-kimoto authored on 2010-08-10
208
$result = $dbi->execute($SELECT_SOURCES->{0});
removed register_format()
yuki-kimoto authored on 2010-05-26
209
$rows = $result->fetch_hash_all;
210
is_deeply($rows, [{key1 => 1, key2 => 1, key3 => 1, key4 => 1, key5 => 5},
cleanup
Yuki Kimoto authored on 2011-01-23
211
                  {key1 => 6, key2 => 7, key3 => 8, key4 => 9, key5 => 10}], "basic");
removed register_format()
yuki-kimoto authored on 2010-05-26
212

            
- update_param_tag is DEPREC...
Yuki Kimoto authored on 2011-06-07
213

            
214
test 'parameter';
215
$dbi->execute($DROP_TABLE->{0});
216
$dbi->execute($CREATE_TABLE->{1});
217
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5});
218
$dbi->insert(table => 'table1', param => {key1 => 6, key2 => 7, key3 => 8, key4 => 9, key5 => 10});
219

            
220
$source = "select * from table1 where key1 = :key1 and key2 = :key2";
221
$result = $dbi->execute($source, param => {key1 => 1, key2 => 2});
222
$rows = $result->fetch_hash_all;
223
is_deeply($rows, [{key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5}]);
224

            
225
$source = "select * from table1 where key1 = \n:key1\n and key2 = :key2";
226
$result = $dbi->execute($source, param => {key1 => 1, key2 => 2});
227
$rows = $result->fetch_hash_all;
228
is_deeply($rows, [{key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5}]);
229

            
230
$source = "select * from table1 where key1 = :key1 or key1 = :key1";
231
$result = $dbi->execute($source, param => {key1 => [1, 2]});
232
$rows = $result->fetch_hash_all;
233
is_deeply($rows, [{key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5}]);
234

            
235
$source = "select * from table1 where key1 = :table1.key1 and key2 = :table1.key2";
236
$result = $dbi->execute(
237
    $source,
238
    param => {'table1.key1' => 1, 'table1.key2' => 1},
239
    filter => {'table1.key2' => sub { $_[0] * 2 }}
240
);
241
$rows = $result->fetch_hash_all;
242
is_deeply($rows, [{key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5}]);
243

            
removed register_format()
yuki-kimoto authored on 2010-05-26
244
test 'Error case';
data_source is DEPRECATED! I...
Yuki Kimoto authored on 2011-06-06
245
eval {DBIx::Custom->connect(dsn => 'dbi:SQLit')};
cleanup
Yuki Kimoto authored on 2011-01-23
246
ok($@, "connect error");
removed register_format()
yuki-kimoto authored on 2010-05-26
247

            
248
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
renamed build_query to creat...
yuki-kimoto authored on 2010-08-06
249
eval{$dbi->create_query("{p }")};
cleanup
Yuki Kimoto authored on 2011-01-23
250
ok($@, "create_query invalid SQL template");
removed register_format()
yuki-kimoto authored on 2010-05-26
251

            
252
test 'insert';
253
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
254
$dbi->execute($CREATE_TABLE->{0});
255
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
256
$dbi->insert(table => 'table1', param => {key1 => 3, key2 => 4});
add tests
yuki-kimoto authored on 2010-08-10
257
$result = $dbi->execute($SELECT_SOURCES->{0});
removed register_format()
yuki-kimoto authored on 2010-05-26
258
$rows   = $result->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
259
is_deeply($rows, [{key1 => 1, key2 => 2}, {key1 => 3, key2 => 4}], "basic");
removed register_format()
yuki-kimoto authored on 2010-05-26
260

            
261
$dbi->execute('delete from table1');
262
$dbi->register_filter(
263
    twice       => sub { $_[0] * 2 },
264
    three_times => sub { $_[0] * 3 }
265
);
renamed default_query_filter...
yuki-kimoto authored on 2010-08-03
266
$dbi->default_bind_filter('twice');
removed register_format()
yuki-kimoto authored on 2010-05-26
267
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2}, filter => {key1 => 'three_times'});
add tests
yuki-kimoto authored on 2010-08-10
268
$result = $dbi->execute($SELECT_SOURCES->{0});
removed register_format()
yuki-kimoto authored on 2010-05-26
269
$rows   = $result->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
270
is_deeply($rows, [{key1 => 3, key2 => 4}], "filter");
renamed default_query_filter...
yuki-kimoto authored on 2010-08-03
271
$dbi->default_bind_filter(undef);
removed register_format()
yuki-kimoto authored on 2010-05-26
272

            
273
$dbi->execute($DROP_TABLE->{0});
274
$dbi->execute($CREATE_TABLE->{0});
275
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2}, append => '   ');
276
$rows = $dbi->select(table => 'table1')->fetch_hash_all;
277
is_deeply($rows, [{key1 => 1, key2 => 2}], 'insert append');
278

            
changed argument of tag proc...
yuki-kimoto authored on 2010-08-03
279
eval{$dbi->insert(table => 'table1', noexist => 1)};
cleanup
Yuki Kimoto authored on 2011-03-09
280
like($@, qr/noexist/, "invalid");
changed argument of tag proc...
yuki-kimoto authored on 2010-08-03
281

            
select() where can't receive...
Yuki Kimoto authored on 2011-01-27
282
eval{$dbi->insert(table => 'table', param => {';' => 1})};
283
like($@, qr/safety/);
changed argument of tag proc...
yuki-kimoto authored on 2010-08-03
284

            
added EXPERIMENTAL reserved_...
Yuki Kimoto authored on 2011-03-30
285
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
286
$dbi->reserved_word_quote('"');
287
$dbi->execute('create table "table" ("select")');
288
$dbi->apply_filter('table', select => {out => sub { $_[0] * 2}});
289
$dbi->insert(table => 'table', param => {select => 1});
290
$result = $dbi->execute('select * from "table"');
291
$rows   = $result->fetch_hash_all;
292
is_deeply($rows, [{select => 2}], "reserved word");
293

            
- insert, insert_at, update,...
Yuki Kimoto authored on 2011-06-08
294
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
295
$dbi->execute($CREATE_TABLE->{0});
296
$dbi->insert({key1 => 1, key2 => 2}, table => 'table1');
297
$dbi->insert({key1 => 3, key2 => 4}, table => 'table1');
298
$result = $dbi->execute($SELECT_SOURCES->{0});
299
$rows   = $result->fetch_hash_all;
300
is_deeply($rows, [{key1 => 1, key2 => 2}, {key1 => 3, key2 => 4}], "basic");
301

            
removed register_format()
yuki-kimoto authored on 2010-05-26
302
test 'update';
303
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
304
$dbi->execute($CREATE_TABLE->{1});
305
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5});
306
$dbi->insert(table => 'table1', param => {key1 => 6, key2 => 7, key3 => 8, key4 => 9, key5 => 10});
307
$dbi->update(table => 'table1', param => {key2 => 11}, where => {key1 => 1});
add tests
yuki-kimoto authored on 2010-08-10
308
$result = $dbi->execute($SELECT_SOURCES->{0});
removed register_format()
yuki-kimoto authored on 2010-05-26
309
$rows   = $result->fetch_hash_all;
310
is_deeply($rows, [{key1 => 1, key2 => 11, key3 => 3, key4 => 4, key5 => 5},
311
                  {key1 => 6, key2 => 7,  key3 => 8, key4 => 9, key5 => 10}],
cleanup
Yuki Kimoto authored on 2011-01-23
312
                  "basic");
removed register_format()
yuki-kimoto authored on 2010-05-26
313
                  
314
$dbi->execute("delete from table1");
315
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5});
316
$dbi->insert(table => 'table1', param => {key1 => 6, key2 => 7, key3 => 8, key4 => 9, key5 => 10});
317
$dbi->update(table => 'table1', param => {key2 => 12}, where => {key2 => 2, key3 => 3});
add tests
yuki-kimoto authored on 2010-08-10
318
$result = $dbi->execute($SELECT_SOURCES->{0});
removed register_format()
yuki-kimoto authored on 2010-05-26
319
$rows   = $result->fetch_hash_all;
320
is_deeply($rows, [{key1 => 1, key2 => 12, key3 => 3, key4 => 4, key5 => 5},
321
                  {key1 => 6, key2 => 7,  key3 => 8, key4 => 9, key5 => 10}],
cleanup
Yuki Kimoto authored on 2011-01-23
322
                  "update key same as search key");
removed register_format()
yuki-kimoto authored on 2010-05-26
323

            
add tests
yuki-kimoto authored on 2010-08-10
324
$dbi->update(table => 'table1', param => {key2 => [12]}, where => {key2 => 2, key3 => 3});
325
$result = $dbi->execute($SELECT_SOURCES->{0});
326
$rows   = $result->fetch_hash_all;
327
is_deeply($rows, [{key1 => 1, key2 => 12, key3 => 3, key4 => 4, key5 => 5},
328
                  {key1 => 6, key2 => 7,  key3 => 8, key4 => 9, key5 => 10}],
cleanup
Yuki Kimoto authored on 2011-01-23
329
                  "update key same as search key : param is array ref");
add tests
yuki-kimoto authored on 2010-08-10
330

            
removed register_format()
yuki-kimoto authored on 2010-05-26
331
$dbi->execute("delete from table1");
332
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5});
333
$dbi->insert(table => 'table1', param => {key1 => 6, key2 => 7, key3 => 8, key4 => 9, key5 => 10});
334
$dbi->register_filter(twice => sub { $_[0] * 2 });
335
$dbi->update(table => 'table1', param => {key2 => 11}, where => {key1 => 1},
many changed
Yuki Kimoto authored on 2011-01-23
336
              filter => {key2 => sub { $_[0] * 2 }});
add tests
yuki-kimoto authored on 2010-08-10
337
$result = $dbi->execute($SELECT_SOURCES->{0});
removed register_format()
yuki-kimoto authored on 2010-05-26
338
$rows   = $result->fetch_hash_all;
339
is_deeply($rows, [{key1 => 1, key2 => 22, key3 => 3, key4 => 4, key5 => 5},
340
                  {key1 => 6, key2 => 7,  key3 => 8, key4 => 9, key5 => 10}],
cleanup
Yuki Kimoto authored on 2011-01-23
341
                  "filter");
removed register_format()
yuki-kimoto authored on 2010-05-26
342

            
343
$result = $dbi->update(table => 'table1', param => {key2 => 11}, where => {key1 => 1}, append => '   ');
344

            
changed argument of tag proc...
yuki-kimoto authored on 2010-08-03
345
eval{$dbi->update(table => 'table1', noexist => 1)};
cleanup
Yuki Kimoto authored on 2011-03-09
346
like($@, qr/noexist/, "invalid");
changed argument of tag proc...
yuki-kimoto authored on 2010-08-03
347

            
348
eval{$dbi->update(table => 'table1')};
cleanup
Yuki Kimoto authored on 2011-01-23
349
like($@, qr/where/, "not contain where");
changed argument of tag proc...
yuki-kimoto authored on 2010-08-03
350

            
improved delete() and update...
Yuki Kimoto authored on 2011-01-26
351
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
352
$dbi->execute($CREATE_TABLE->{0});
353
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
354
$where = $dbi->where;
- update_param_tag is DEPREC...
Yuki Kimoto authored on 2011-06-07
355
$where->clause(['and', 'key1 = :key1', 'key2 = :key2']);
improved delete() and update...
Yuki Kimoto authored on 2011-01-26
356
$where->param({key1 => 1, key2 => 2});
357
$dbi->update(table => 'table1', param => {key1 => 3}, where => $where);
358
$result = $dbi->select(table => 'table1');
where can recieve array refr...
Yuki Kimoto authored on 2011-03-24
359
is_deeply($result->fetch_hash_all, [{key1 => 3, key2 => 2}], 'update() where');
360

            
361
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
362
$dbi->execute($CREATE_TABLE->{0});
363
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
364
$dbi->update(
365
    table => 'table1',
366
    param => {key1 => 3},
367
    where => [
368
        ['and', '{= key1}', '{= key2}'],
369
        {key1 => 1, key2 => 2}
370
    ]
371
);
372
$result = $dbi->select(table => 'table1');
373
is_deeply($result->fetch_hash_all, [{key1 => 3, key2 => 2}], 'update() where');
improved delete() and update...
Yuki Kimoto authored on 2011-01-26
374

            
375
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
376
$dbi->execute($CREATE_TABLE->{0});
377
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
378
$where = $dbi->where;
379
$where->clause(['and', '{= key2}']);
380
$where->param({key2 => 2});
381
$dbi->update(table => 'table1', param => {key1 => 3}, where => $where);
382
$result = $dbi->select(table => 'table1');
where can recieve array refr...
Yuki Kimoto authored on 2011-03-24
383
is_deeply($result->fetch_hash_all, [{key1 => 3, key2 => 2}], 'update() where');
changed argument of tag proc...
yuki-kimoto authored on 2010-08-03
384

            
select() where can't receive...
Yuki Kimoto authored on 2011-01-27
385
eval{$dbi->update(table => 'table1', param => {';' => 1})};
386
like($@, qr/safety/);
387

            
388
eval{$dbi->update(table => 'table1', param => {'key1' => 1}, where => {';' => 1})};
389
like($@, qr/safety/);
390

            
added EXPERIMENTAL reserved_...
Yuki Kimoto authored on 2011-03-30
391
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
392
$dbi->reserved_word_quote('"');
393
$dbi->execute('create table "table" ("select", "update")');
394
$dbi->apply_filter('table', select => {out => sub { $_[0] * 2}});
395
$dbi->apply_filter('table', update => {out => sub { $_[0] * 3}});
396
$dbi->insert(table => 'table', param => {select => 1});
397
$dbi->update(table => 'table', where => {select => 1}, param => {update => 2});
398
$result = $dbi->execute('select * from "table"');
399
$rows   = $result->fetch_hash_all;
400
is_deeply($rows, [{select => 2, update => 6}], "reserved word");
401

            
402
eval {$dbi->update_all(table => 'table', param => {';' => 2}) };
403
like($@, qr/safety/);
404

            
405
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
406
$dbi->reserved_word_quote('"');
407
$dbi->execute('create table "table" ("select", "update")');
408
$dbi->apply_filter('table', select => {out => sub { $_[0] * 2}});
409
$dbi->apply_filter('table', update => {out => sub { $_[0] * 3}});
410
$dbi->insert(table => 'table', param => {select => 1});
411
$dbi->update(table => 'table', where => {'table.select' => 1}, param => {update => 2});
412
$result = $dbi->execute('select * from "table"');
413
$rows   = $result->fetch_hash_all;
414
is_deeply($rows, [{select => 2, update => 6}], "reserved word");
415

            
- insert, insert_at, update,...
Yuki Kimoto authored on 2011-06-08
416
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
417
$dbi->execute($CREATE_TABLE->{1});
418
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5});
419
$dbi->insert(table => 'table1', param => {key1 => 6, key2 => 7, key3 => 8, key4 => 9, key5 => 10});
420
$dbi->update({key2 => 11}, table => 'table1', where => {key1 => 1});
421
$result = $dbi->execute($SELECT_SOURCES->{0});
422
$rows   = $result->fetch_hash_all;
423
is_deeply($rows, [{key1 => 1, key2 => 11, key3 => 3, key4 => 4, key5 => 5},
424
                  {key1 => 6, key2 => 7,  key3 => 8, key4 => 9, key5 => 10}],
425
                  "basic");
426

            
removed register_format()
yuki-kimoto authored on 2010-05-26
427
test 'update_all';
428
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
429
$dbi->execute($CREATE_TABLE->{1});
430
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5});
431
$dbi->insert(table => 'table1', param => {key1 => 6, key2 => 7, key3 => 8, key4 => 9, key5 => 10});
432
$dbi->register_filter(twice => sub { $_[0] * 2 });
433
$dbi->update_all(table => 'table1', param => {key2 => 10}, filter => {key2 => 'twice'});
add tests
yuki-kimoto authored on 2010-08-10
434
$result = $dbi->execute($SELECT_SOURCES->{0});
removed register_format()
yuki-kimoto authored on 2010-05-26
435
$rows   = $result->fetch_hash_all;
436
is_deeply($rows, [{key1 => 1, key2 => 20, key3 => 3, key4 => 4, key5 => 5},
437
                  {key1 => 6, key2 => 20, key3 => 8, key4 => 9, key5 => 10}],
cleanup
Yuki Kimoto authored on 2011-01-23
438
                  "filter");
removed register_format()
yuki-kimoto authored on 2010-05-26
439

            
440

            
441
test 'delete';
442
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
443
$dbi->execute($CREATE_TABLE->{0});
444
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
445
$dbi->insert(table => 'table1', param => {key1 => 3, key2 => 4});
446
$dbi->delete(table => 'table1', where => {key1 => 1});
add tests
yuki-kimoto authored on 2010-08-10
447
$result = $dbi->execute($SELECT_SOURCES->{0});
removed register_format()
yuki-kimoto authored on 2010-05-26
448
$rows   = $result->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
449
is_deeply($rows, [{key1 => 3, key2 => 4}], "basic");
removed register_format()
yuki-kimoto authored on 2010-05-26
450

            
451
$dbi->execute("delete from table1;");
452
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
453
$dbi->insert(table => 'table1', param => {key1 => 3, key2 => 4});
454
$dbi->register_filter(twice => sub { $_[0] * 2 });
455
$dbi->delete(table => 'table1', where => {key2 => 1}, filter => {key2 => 'twice'});
add tests
yuki-kimoto authored on 2010-08-10
456
$result = $dbi->execute($SELECT_SOURCES->{0});
removed register_format()
yuki-kimoto authored on 2010-05-26
457
$rows   = $result->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
458
is_deeply($rows, [{key1 => 3, key2 => 4}], "filter");
removed register_format()
yuki-kimoto authored on 2010-05-26
459

            
460
$dbi->delete(table => 'table1', where => {key1 => 1}, append => '   ');
461

            
462
$dbi->delete_all(table => 'table1');
463
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
464
$dbi->insert(table => 'table1', param => {key1 => 3, key2 => 4});
465
$dbi->delete(table => 'table1', where => {key1 => 1, key2 => 2});
466
$rows = $dbi->select(table => 'table1')->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
467
is_deeply($rows, [{key1 => 3, key2 => 4}], "delete multi key");
removed register_format()
yuki-kimoto authored on 2010-05-26
468

            
changed argument of tag proc...
yuki-kimoto authored on 2010-08-03
469
eval{$dbi->delete(table => 'table1', noexist => 1)};
cleanup
Yuki Kimoto authored on 2011-03-09
470
like($@, qr/noexist/, "invalid");
changed argument of tag proc...
yuki-kimoto authored on 2010-08-03
471

            
improved delete() and update...
Yuki Kimoto authored on 2011-01-26
472
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
473
$dbi->execute($CREATE_TABLE->{0});
474
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
475
$dbi->insert(table => 'table1', param => {key1 => 3, key2 => 4});
476
$where = $dbi->where;
477
$where->clause(['and', '{= key1}', '{= key2}']);
478
$where->param({ke1 => 1, key2 => 2});
479
$dbi->delete(table => 'table1', where => $where);
480
$result = $dbi->select(table => 'table1');
481
is_deeply($result->fetch_hash_all, [{key1 => 3, key2 => 4}], 'delete() where');
changed argument of tag proc...
yuki-kimoto authored on 2010-08-03
482

            
where can recieve array refr...
Yuki Kimoto authored on 2011-03-24
483
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
484
$dbi->execute($CREATE_TABLE->{0});
485
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
486
$dbi->insert(table => 'table1', param => {key1 => 3, key2 => 4});
487
$dbi->delete(
488
    table => 'table1',
489
    where => [
490
        ['and', '{= key1}', '{= key2}'],
491
        {ke1 => 1, key2 => 2}
492
    ]
493
);
494
$result = $dbi->select(table => 'table1');
495
is_deeply($result->fetch_hash_all, [{key1 => 3, key2 => 4}], 'delete() where');
496

            
removed register_format()
yuki-kimoto authored on 2010-05-26
497
test 'delete error';
498
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
499
$dbi->execute($CREATE_TABLE->{0});
500
eval{$dbi->delete(table => 'table1')};
make delete() using where ob...
Yuki Kimoto authored on 2011-01-26
501
like($@, qr/"where" must be specified/,
cleanup
Yuki Kimoto authored on 2011-01-23
502
         "where key-value pairs not specified");
removed register_format()
yuki-kimoto authored on 2010-05-26
503

            
select() where can't receive...
Yuki Kimoto authored on 2011-01-27
504
eval{$dbi->delete(table => 'table1', where => {';' => 1})};
505
like($@, qr/safety/);
506

            
added EXPERIMENTAL reserved_...
Yuki Kimoto authored on 2011-03-30
507
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
508
$dbi->reserved_word_quote('"');
509
$dbi->execute('create table "table" ("select", "update")');
510
$dbi->apply_filter('table', select => {out => sub { $_[0] * 2}});
511
$dbi->insert(table => 'table', param => {select => 1});
512
$dbi->delete(table => 'table', where => {select => 1});
513
$result = $dbi->execute('select * from "table"');
514
$rows   = $result->fetch_hash_all;
515
is_deeply($rows, [], "reserved word");
516

            
removed register_format()
yuki-kimoto authored on 2010-05-26
517
test 'delete_all';
518
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
519
$dbi->execute($CREATE_TABLE->{0});
520
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
521
$dbi->insert(table => 'table1', param => {key1 => 3, key2 => 4});
522
$dbi->delete_all(table => 'table1');
add tests
yuki-kimoto authored on 2010-08-10
523
$result = $dbi->execute($SELECT_SOURCES->{0});
removed register_format()
yuki-kimoto authored on 2010-05-26
524
$rows   = $result->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
525
is_deeply($rows, [], "basic");
removed register_format()
yuki-kimoto authored on 2010-05-26
526

            
527

            
528
test 'select';
529
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
530
$dbi->execute($CREATE_TABLE->{0});
531
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
532
$dbi->insert(table => 'table1', param => {key1 => 3, key2 => 4});
533
$rows = $dbi->select(table => 'table1')->fetch_hash_all;
534
is_deeply($rows, [{key1 => 1, key2 => 2},
cleanup
Yuki Kimoto authored on 2011-01-23
535
                  {key1 => 3, key2 => 4}], "table");
removed register_format()
yuki-kimoto authored on 2010-05-26
536

            
update document
yuki-kimoto authored on 2010-05-27
537
$rows = $dbi->select(table => 'table1', column => ['key1'])->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
538
is_deeply($rows, [{key1 => 1}, {key1 => 3}], "table and columns and where key");
removed register_format()
yuki-kimoto authored on 2010-05-26
539

            
540
$rows = $dbi->select(table => 'table1', where => {key1 => 1})->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
541
is_deeply($rows, [{key1 => 1, key2 => 2}], "table and columns and where key");
removed register_format()
yuki-kimoto authored on 2010-05-26
542

            
update document
yuki-kimoto authored on 2010-05-27
543
$rows = $dbi->select(table => 'table1', column => ['key1'], where => {key1 => 3})->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
544
is_deeply($rows, [{key1 => 3}], "table and columns and where key");
removed register_format()
yuki-kimoto authored on 2010-05-26
545

            
546
$rows = $dbi->select(table => 'table1', append => "order by key1 desc limit 1")->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
547
is_deeply($rows, [{key1 => 3, key2 => 4}], "append statement");
removed register_format()
yuki-kimoto authored on 2010-05-26
548

            
549
$dbi->register_filter(decrement => sub { $_[0] - 1 });
update document
yuki-kimoto authored on 2010-05-27
550
$rows = $dbi->select(table => 'table1', where => {key1 => 2}, filter => {key1 => 'decrement'})
removed register_format()
yuki-kimoto authored on 2010-05-26
551
            ->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
552
is_deeply($rows, [{key1 => 1, key2 => 2}], "filter");
removed register_format()
yuki-kimoto authored on 2010-05-26
553

            
554
$dbi->execute($CREATE_TABLE->{2});
555
$dbi->insert(table => 'table2', param => {key1 => 1, key3 => 5});
556
$rows = $dbi->select(
557
    table => [qw/table1 table2/],
select method column option ...
Yuki Kimoto authored on 2011-02-22
558
    column => 'table1.key1 as table1_key1, table2.key1 as table2_key1, key2, key3',
removed register_format()
yuki-kimoto authored on 2010-05-26
559
    where   => {'table1.key2' => 2},
added commit method
yuki-kimoto authored on 2010-05-27
560
    relation  => {'table1.key1' => 'table2.key1'}
removed register_format()
yuki-kimoto authored on 2010-05-26
561
)->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
562
is_deeply($rows, [{table1_key1 => 1, table2_key1 => 1, key2 => 2, key3 => 5}], "relation : exists where");
added commit method
yuki-kimoto authored on 2010-05-27
563

            
564
$rows = $dbi->select(
565
    table => [qw/table1 table2/],
566
    column => ['table1.key1 as table1_key1', 'table2.key1 as table2_key1', 'key2', 'key3'],
567
    relation  => {'table1.key1' => 'table2.key1'}
568
)->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
569
is_deeply($rows, [{table1_key1 => 1, table2_key1 => 1, key2 => 2, key3 => 5}], "relation : no exists where");
removed register_format()
yuki-kimoto authored on 2010-05-26
570

            
changed argument of tag proc...
yuki-kimoto authored on 2010-08-03
571
eval{$dbi->select(table => 'table1', noexist => 1)};
cleanup
Yuki Kimoto authored on 2011-03-09
572
like($@, qr/noexist/, "invalid");
changed argument of tag proc...
yuki-kimoto authored on 2010-08-03
573

            
added EXPERIMENTAL reserved_...
Yuki Kimoto authored on 2011-03-30
574
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
575
$dbi->reserved_word_quote('"');
576
$dbi->execute('create table "table" ("select", "update")');
577
$dbi->apply_filter('table', select => {out => sub { $_[0] * 2}});
578
$dbi->insert(table => 'table', param => {select => 1, update => 2});
579
$result = $dbi->select(table => 'table', where => {select => 1});
580
$rows   = $result->fetch_hash_all;
581
is_deeply($rows, [{select => 2, update => 2}], "reserved word");
changed argument of tag proc...
yuki-kimoto authored on 2010-08-03
582

            
removed register_format()
yuki-kimoto authored on 2010-05-26
583
test 'fetch filter';
584
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
585
$dbi->register_filter(
586
    twice       => sub { $_[0] * 2 },
587
    three_times => sub { $_[0] * 3 }
588
);
589
$dbi->default_fetch_filter('twice');
590
$dbi->execute($CREATE_TABLE->{0});
591
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
592
$result = $dbi->select(table => 'table1');
593
$result->filter({key1 => 'three_times'});
- added DBIx::Custom::Result...
Yuki Kimoto authored on 2011-06-07
594
$row = $result->one;
cleanup
Yuki Kimoto authored on 2011-01-23
595
is_deeply($row, {key1 => 3, key2 => 4}, "default_fetch_filter and filter");
removed register_format()
yuki-kimoto authored on 2010-05-26
596

            
597
test 'filters';
598
$dbi = DBIx::Custom->new;
599

            
update document
yuki-kimoto authored on 2010-05-27
600
is($dbi->filters->{decode_utf8}->(encode_utf8('あ')),
cleanup
Yuki Kimoto authored on 2011-01-23
601
   'あ', "decode_utf8");
removed register_format()
yuki-kimoto authored on 2010-05-26
602

            
603
is($dbi->filters->{encode_utf8}->('あ'),
cleanup
Yuki Kimoto authored on 2011-01-23
604
   encode_utf8('あ'), "encode_utf8");
removed register_format()
yuki-kimoto authored on 2010-05-26
605

            
added commit method
yuki-kimoto authored on 2010-05-27
606
test 'transaction';
607
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
608
$dbi->execute($CREATE_TABLE->{0});
removed DBIx::Custom commit ...
yuki-kimoto authored on 2010-07-14
609
$dbi->dbh->begin_work;
added commit method
yuki-kimoto authored on 2010-05-27
610
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
611
$dbi->insert(table => 'table1', param => {key1 => 2, key2 => 3});
removed DBIx::Custom commit ...
yuki-kimoto authored on 2010-07-14
612
$dbi->dbh->commit;
added commit method
yuki-kimoto authored on 2010-05-27
613
$result = $dbi->select(table => 'table1');
- added DBIx::Custom::Result...
Yuki Kimoto authored on 2011-06-07
614
is_deeply(scalar $result->all, [{key1 => 1, key2 => 2}, {key1 => 2, key2 => 3}],
cleanup
Yuki Kimoto authored on 2011-01-23
615
          "commit");
added commit method
yuki-kimoto authored on 2010-05-27
616

            
617
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
618
$dbi->execute($CREATE_TABLE->{0});
removed DBIx::Custom commit ...
yuki-kimoto authored on 2010-07-14
619
$dbi->dbh->begin_work(0);
added commit method
yuki-kimoto authored on 2010-05-27
620
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
removed DBIx::Custom commit ...
yuki-kimoto authored on 2010-07-14
621
$dbi->dbh->rollback;
added commit method
yuki-kimoto authored on 2010-05-27
622

            
623
$result = $dbi->select(table => 'table1');
cleanup
Yuki Kimoto authored on 2011-01-23
624
ok(! $result->fetch_first, "rollback");
add cache attribute
yuki-kimoto authored on 2010-06-14
625

            
626
test 'cache';
627
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
removed from cache() and cac...
Yuki Kimoto authored on 2011-03-29
628
$dbi->cache(1);
add cache attribute
yuki-kimoto authored on 2010-06-14
629
$dbi->execute($CREATE_TABLE->{0});
renamed build_query to creat...
yuki-kimoto authored on 2010-08-06
630
$source = 'select * from table1 where {= key1} and {= key2};';
631
$dbi->create_query($source);
632
is_deeply($dbi->{_cached}->{$source}, 
add table tag
Yuki Kimoto authored on 2011-02-09
633
          {sql => "select * from table1 where key1 = ? and key2 = ?;", columns => ['key1', 'key2'], tables => []}, "cache");
add cache attribute
yuki-kimoto authored on 2010-06-14
634

            
635
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
636
$dbi->execute($CREATE_TABLE->{0});
637
$dbi->{_cached} = {};
638
$dbi->cache(0);
639
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
640
is(scalar keys %{$dbi->{_cached}}, 0, 'not cache');
641

            
add tests
yuki-kimoto authored on 2010-08-10
642
test 'execute';
643
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
644
$dbi->execute($CREATE_TABLE->{0});
removed experimental registe...
yuki-kimoto authored on 2010-08-24
645
{
646
    local $Carp::Verbose = 0;
647
    eval{$dbi->execute('select * frm table1')};
cleanup
Yuki Kimoto authored on 2011-01-23
648
    like($@, qr/\Qselect * frm table1;/, "fail prepare");
649
    like($@, qr/\.t /, "fail : not verbose");
removed experimental registe...
yuki-kimoto authored on 2010-08-24
650
}
651
{
652
    local $Carp::Verbose = 1;
653
    eval{$dbi->execute('select * frm table1')};
cleanup
Yuki Kimoto authored on 2011-01-23
654
    like($@, qr/Custom.*\.t /s, "fail : verbose");
removed experimental registe...
yuki-kimoto authored on 2010-08-24
655
}
add tests
yuki-kimoto authored on 2010-08-10
656

            
657
eval{$dbi->execute('select * from table1', no_exists => 1)};
improved error messages
Yuki Kimoto authored on 2011-04-18
658
like($@, qr/wrong/, "invald SQL");
add tests
yuki-kimoto authored on 2010-08-10
659

            
660
$query = $dbi->create_query('select * from table1 where {= key1}');
661
$dbi->dbh->disconnect;
662
eval{$dbi->execute($query, param => {key1 => {a => 1}})};
cleanup
Yuki Kimoto authored on 2011-01-23
663
ok($@, "execute fail");
add tests
yuki-kimoto authored on 2010-08-10
664

            
removed experimental registe...
yuki-kimoto authored on 2010-08-24
665
{
666
    local $Carp::Verbose = 0;
667
    eval{$dbi->create_query('select * from table1 where {0 key1}')};
cleanup
Yuki Kimoto authored on 2011-01-23
668
    like($@, qr/\Q.t /, "caller spec : not vebose");
removed experimental registe...
yuki-kimoto authored on 2010-08-24
669
}
670
{
671
    local $Carp::Verbose = 1;
672
    eval{$dbi->create_query('select * from table1 where {0 key1}')};
cleanup
Yuki Kimoto authored on 2011-01-23
673
    like($@, qr/QueryBuilder.*\.t /s, "caller spec : not vebose");
removed experimental registe...
yuki-kimoto authored on 2010-08-24
674
}
cleanup
yuki-kimoto authored on 2010-10-17
675

            
676

            
677
test 'transaction';
678
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
679
$dbi->execute($CREATE_TABLE->{0});
680

            
681
$dbi->begin_work;
682

            
683
eval {
684
    $dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
685
    die "Error";
686
    $dbi->insert(table => 'table1', param => {key1 => 3, key2 => 4});
687
};
688

            
689
$dbi->rollback if $@;
690

            
691
$result = $dbi->select(table => 'table1');
692
$rows = $result->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
693
is_deeply($rows, [], "rollback");
cleanup
yuki-kimoto authored on 2010-10-17
694

            
695
$dbi->begin_work;
696

            
697
eval {
698
    $dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
699
    $dbi->insert(table => 'table1', param => {key1 => 3, key2 => 4});
700
};
701

            
702
$dbi->commit unless $@;
703

            
704
$result = $dbi->select(table => 'table1');
705
$rows = $result->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
706
is_deeply($rows, [{key1 => 1, key2 => 2}, {key1 => 3, key2 => 4}], "commit");
cleanup
yuki-kimoto authored on 2010-10-17
707

            
708
$dbi->dbh->{AutoCommit} = 0;
709
eval{ $dbi->begin_work };
cleanup
Yuki Kimoto authored on 2011-01-23
710
ok($@, "exception");
cleanup
yuki-kimoto authored on 2010-10-17
711
$dbi->dbh->{AutoCommit} = 1;
712

            
added helper method
yuki-kimoto authored on 2010-10-17
713

            
renamed helper to method.
Yuki Kimoto authored on 2011-01-25
714
test 'method';
added helper method
yuki-kimoto authored on 2010-10-17
715
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
renamed helper to method.
Yuki Kimoto authored on 2011-01-25
716
$dbi->method(
added helper method
yuki-kimoto authored on 2010-10-17
717
    one => sub { 1 }
718
);
renamed helper to method.
Yuki Kimoto authored on 2011-01-25
719
$dbi->method(
added helper method
yuki-kimoto authored on 2010-10-17
720
    two => sub { 2 }
721
);
renamed helper to method.
Yuki Kimoto authored on 2011-01-25
722
$dbi->method({
added helper method
yuki-kimoto authored on 2010-10-17
723
    twice => sub {
724
        my $self = shift;
725
        return $_[0] * 2;
726
    }
727
});
728

            
cleanup
Yuki Kimoto authored on 2011-01-23
729
is($dbi->one, 1, "first");
730
is($dbi->two, 2, "second");
731
is($dbi->twice(5), 10 , "second");
added helper method
yuki-kimoto authored on 2010-10-17
732

            
733
eval {$dbi->XXXXXX};
autoload DBI method
Yuki Kimoto authored on 2011-01-26
734
ok($@, "not exists");
added helper method
yuki-kimoto authored on 2010-10-17
735

            
renamed auto_filter to apply...
Yuki Kimoto authored on 2011-01-12
736
test 'out filter';
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
737
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
738
$dbi->execute($CREATE_TABLE->{0});
739
$dbi->register_filter(twice => sub { $_[0] * 2 });
740
$dbi->register_filter(three_times => sub { $_[0] * 3});
renamed auto_filter to apply...
Yuki Kimoto authored on 2011-01-12
741
$dbi->apply_filter(
renamed auto_filter to apply...
Yuki Kimoto authored on 2011-01-12
742
    'table1', 'key1' => {out => 'twice', in => 'three_times'}, 
743
              'key2' => {out => 'three_times', in => 'twice'});
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
744
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
745
$result = $dbi->execute($SELECT_SOURCES->{0});
746
$row   = $result->fetch_hash_first;
cleanup
Yuki Kimoto authored on 2011-01-23
747
is_deeply($row, {key1 => 2, key2 => 6}, "insert");
renamed auto_filter to apply...
Yuki Kimoto authored on 2011-01-12
748
$result = $dbi->select(table => 'table1');
added tests
Yuki Kimoto authored on 2011-06-08
749
$row   = $result->one;
cleanup
Yuki Kimoto authored on 2011-01-23
750
is_deeply($row, {key1 => 6, key2 => 12}, "insert");
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
751

            
fix bug : filter can't over...
Yuki Kimoto authored on 2011-02-09
752
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
753
$dbi->execute($CREATE_TABLE->{0});
754
$dbi->register_filter(twice => sub { $_[0] * 2 });
755
$dbi->register_filter(three_times => sub { $_[0] * 3});
756
$dbi->apply_filter(
757
    'table1', 'key1' => {out => 'twice', in => 'three_times'}, 
758
              'key2' => {out => 'three_times', in => 'twice'});
759
$dbi->apply_filter(
760
    'table1', 'key1' => {out => undef}
761
); 
762
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
763
$result = $dbi->execute($SELECT_SOURCES->{0});
added tests
Yuki Kimoto authored on 2011-06-08
764
$row   = $result->one;
fix bug : filter can't over...
Yuki Kimoto authored on 2011-02-09
765
is_deeply($row, {key1 => 1, key2 => 6}, "insert");
766

            
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
767
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
768
$dbi->execute($CREATE_TABLE->{0});
769
$dbi->register_filter(twice => sub { $_[0] * 2 });
renamed auto_filter to apply...
Yuki Kimoto authored on 2011-01-12
770
$dbi->apply_filter(
renamed auto_filter to apply...
Yuki Kimoto authored on 2011-01-12
771
    'table1', 'key1' => {out => 'twice', in => 'twice'}
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
772
);
renamed auto_filter to apply...
Yuki Kimoto authored on 2011-01-12
773
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2}, filter => {key1 => undef});
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
774
$dbi->update(table => 'table1', param => {key1 => 2}, where => {key2 => 2});
775
$result = $dbi->execute($SELECT_SOURCES->{0});
added tests
Yuki Kimoto authored on 2011-06-08
776
$row   = $result->one;
cleanup
Yuki Kimoto authored on 2011-01-23
777
is_deeply($row, {key1 => 4, key2 => 2}, "update");
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
778

            
779
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
780
$dbi->execute($CREATE_TABLE->{0});
781
$dbi->register_filter(twice => sub { $_[0] * 2 });
renamed auto_filter to apply...
Yuki Kimoto authored on 2011-01-12
782
$dbi->apply_filter(
renamed auto_filter to apply...
Yuki Kimoto authored on 2011-01-12
783
    'table1', 'key1' => {out => 'twice', in => 'twice'}
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
784
);
renamed auto_filter to apply...
Yuki Kimoto authored on 2011-01-12
785
$dbi->insert(table => 'table1', param => {key1 => 2, key2 => 2}, filter => {key1=> undef});
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
786
$dbi->delete(table => 'table1', where => {key1 => 1});
787
$result = $dbi->execute($SELECT_SOURCES->{0});
788
$rows   = $result->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
789
is_deeply($rows, [], "delete");
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
790

            
791
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
792
$dbi->execute($CREATE_TABLE->{0});
793
$dbi->register_filter(twice => sub { $_[0] * 2 });
renamed auto_filter to apply...
Yuki Kimoto authored on 2011-01-12
794
$dbi->apply_filter(
renamed auto_filter to apply...
Yuki Kimoto authored on 2011-01-12
795
    'table1', 'key1' => {out => 'twice', in => 'twice'}
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
796
);
renamed auto_filter to apply...
Yuki Kimoto authored on 2011-01-12
797
$dbi->insert(table => 'table1', param => {key1 => 2, key2 => 2}, filter => {key1 => undef});
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
798
$result = $dbi->select(table => 'table1', where => {key1 => 1});
799
$result->filter({'key2' => 'twice'});
800
$rows   = $result->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
801
is_deeply($rows, [{key1 => 4, key2 => 4}], "select");
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
802

            
803
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
804
$dbi->execute($CREATE_TABLE->{0});
805
$dbi->register_filter(twice => sub { $_[0] * 2 });
renamed auto_filter to apply...
Yuki Kimoto authored on 2011-01-12
806
$dbi->apply_filter(
renamed auto_filter to apply...
Yuki Kimoto authored on 2011-01-12
807
    'table1', 'key1' => {out => 'twice', in => 'twice'}
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
808
);
renamed auto_filter to apply...
Yuki Kimoto authored on 2011-01-12
809
$dbi->insert(table => 'table1', param => {key1 => 2, key2 => 2}, filter => {key1 => undef});
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
810
$result = $dbi->execute("select * from table1 where {= key1} and {= key2};",
811
                        param => {key1 => 1, key2 => 2},
renamed auto_filter to apply...
Yuki Kimoto authored on 2011-01-12
812
                        table => ['table1']);
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
813
$rows   = $result->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
814
is_deeply($rows, [{key1 => 4, key2 => 2}], "execute");
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
815

            
add table tag
Yuki Kimoto authored on 2011-02-09
816
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
817
$dbi->execute($CREATE_TABLE->{0});
818
$dbi->register_filter(twice => sub { $_[0] * 2 });
819
$dbi->apply_filter(
820
    'table1', 'key1' => {out => 'twice', in => 'twice'}
821
);
822
$dbi->insert(table => 'table1', param => {key1 => 2, key2 => 2}, filter => {key1 => undef});
823
$result = $dbi->execute("select * from {table table1} where {= key1} and {= key2};",
824
                        param => {key1 => 1, key2 => 2});
825
$rows   = $result->fetch_hash_all;
826
is_deeply($rows, [{key1 => 4, key2 => 2}], "execute table tag");
827

            
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
828
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
829
$dbi->execute($CREATE_TABLE->{0});
830
$dbi->execute($CREATE_TABLE->{2});
831
$dbi->register_filter(twice => sub { $_[0] * 2 });
832
$dbi->register_filter(three_times => sub { $_[0] * 3 });
renamed auto_filter to apply...
Yuki Kimoto authored on 2011-01-12
833
$dbi->apply_filter(
renamed auto_filter to apply...
Yuki Kimoto authored on 2011-01-12
834
    'table1', 'key2' => {out => 'twice', in => 'twice'}
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
835
);
renamed auto_filter to apply...
Yuki Kimoto authored on 2011-01-12
836
$dbi->apply_filter(
renamed auto_filter to apply...
Yuki Kimoto authored on 2011-01-12
837
    'table2', 'key3' => {out => 'three_times', in => 'three_times'}
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
838
);
renamed auto_filter to apply...
Yuki Kimoto authored on 2011-01-12
839
$dbi->insert(table => 'table1', param => {key1 => 5, key2 => 2}, filter => {key2 => undef});
840
$dbi->insert(table => 'table2', param => {key1 => 5, key3 => 6}, filter => {key3 => undef});
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
841
$result = $dbi->select(
842
     table => ['table1', 'table2'],
843
     column => ['key2', 'key3'],
844
     where => {'table1.key2' => 1, 'table2.key3' => 2}, relation => {'table1.key1' => 'table2.key1'});
845

            
846
$result->filter({'key2' => 'twice'});
847
$rows   = $result->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
848
is_deeply($rows, [{key2 => 4, key3 => 18}], "select : join");
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
849

            
850
$result = $dbi->select(
851
     table => ['table1', 'table2'],
852
     column => ['key2', 'key3'],
853
     where => {'key2' => 1, 'key3' => 2}, relation => {'table1.key1' => 'table2.key1'});
854

            
855
$result->filter({'key2' => 'twice'});
856
$rows   = $result->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
857
is_deeply($rows, [{key2 => 4, key3 => 18}], "select : join : omit");
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
858

            
pod fix
Yuki Kimoto authored on 2011-01-21
859
test 'each_column';
added experimental iterate_a...
Yuki Kimoto authored on 2010-12-22
860
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
861
$dbi->execute($CREATE_TABLE->{2});
862
$dbi->execute($CREATE_TABLE->{3});
863

            
864
$infos = [];
pod fix
Yuki Kimoto authored on 2011-01-21
865
$dbi->each_column(sub {
removed experimental txn_sco...
Yuki Kimoto authored on 2011-01-24
866
    my ($self, $table, $column, $cinfo) = @_;
added experimental iterate_a...
Yuki Kimoto authored on 2010-12-22
867
    
868
    if ($table =~ /^table/) {
869
         my $info = [$table, $column, $cinfo->{COLUMN_NAME}];
870
         push @$infos, $info;
871
    }
872
});
873
$infos = [sort { $a->[0] cmp $b->[0] || $a->[1] cmp $b->[1] } @$infos];
874
is_deeply($infos, 
875
    [
876
        ['table1', 'key1', 'key1'],
877
        ['table1', 'key2', 'key2'],
878
        ['table2', 'key1', 'key1'],
879
        ['table2', 'key3', 'key3']
880
    ]
cleanup
Yuki Kimoto authored on 2011-01-23
881
    
added experimental iterate_a...
Yuki Kimoto authored on 2010-12-22
882
);
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
883

            
add examples
Yuki Kimoto authored on 2011-01-07
884
test 'limit';
885
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
886
$dbi->execute($CREATE_TABLE->{0});
887
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
888
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 4});
889
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 6});
renamed DBIx::Custom::TagPro...
Yuki Kimoto authored on 2011-01-24
890
$dbi->register_tag(
add examples
Yuki Kimoto authored on 2011-01-07
891
    limit => sub {
892
        my ($count, $offset) = @_;
893
        
894
        my $s = '';
895
        $s .= "limit $count";
896
        $s .= " offset $offset" if defined $offset;
897
        
898
        return [$s, []];
899
    }
900
);
901
$rows = $dbi->select(
902
  table => 'table1',
903
  where => {key1 => 1},
904
  append => "order by key2 {limit 1 0}"
905
)->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
906
is_deeply($rows, [{key1 => 1, key2 => 2}]);
add examples
Yuki Kimoto authored on 2011-01-07
907
$rows = $dbi->select(
908
  table => 'table1',
909
  where => {key1 => 1},
910
  append => "order by key2 {limit 2 1}"
911
)->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
912
is_deeply($rows, [{key1 => 1, key2 => 4},{key1 => 1, key2 => 6}]);
add examples
Yuki Kimoto authored on 2011-01-07
913
$rows = $dbi->select(
914
  table => 'table1',
915
  where => {key1 => 1},
916
  append => "order by key2 {limit 1}"
917
)->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
918
is_deeply($rows, [{key1 => 1, key2 => 2}]);
added insert, update, update...
Yuki Kimoto authored on 2011-01-04
919

            
remove DBIx::Custom::Model
Yuki Kimoto authored on 2011-01-12
920
test 'connect super';
921
{
922
    package MyDBI;
923
    
924
    use base 'DBIx::Custom';
925
    sub connect {
926
        my $self = shift->SUPER::connect(@_);
927
        
928
        return $self;
929
    }
930
    
931
    sub new {
cleanup
Yuki Kimoto authored on 2011-01-25
932
        my $self = shift->SUPER::new(@_);
remove DBIx::Custom::Model
Yuki Kimoto authored on 2011-01-12
933
        
934
        return $self;
935
    }
936
}
937

            
938
$dbi = MyDBI->connect($NEW_ARGS->{0});
939
$dbi->execute($CREATE_TABLE->{0});
940
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
added tests
Yuki Kimoto authored on 2011-06-08
941
is($dbi->select(table => 'table1')->one->{key1}, 1);
remove DBIx::Custom::Model
Yuki Kimoto authored on 2011-01-12
942

            
943
$dbi = MyDBI->new($NEW_ARGS->{0});
cleanup
Yuki Kimoto authored on 2011-01-25
944
$dbi->connect;
remove DBIx::Custom::Model
Yuki Kimoto authored on 2011-01-12
945
$dbi->execute($CREATE_TABLE->{0});
946
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
added tests
Yuki Kimoto authored on 2011-06-08
947
is($dbi->select(table => 'table1')->one->{key1}, 1);
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-17
948

            
cleanup
Yuki Kimoto authored on 2011-01-25
949
{
950
    package MyDBI2;
951
    
952
    use base 'DBIx::Custom';
953
    sub connect {
954
        my $self = shift->SUPER::new(@_);
955
        $self->connect;
956
        
957
        return $self;
958
    }
959
}
960

            
961
$dbi = MyDBI->connect($NEW_ARGS->{0});
962
$dbi->execute($CREATE_TABLE->{0});
963
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
added tests
Yuki Kimoto authored on 2011-06-08
964
is($dbi->select(table => 'table1')->one->{key1}, 1);
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-17
965

            
966
test 'end_filter';
967
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
968
$dbi->execute($CREATE_TABLE->{0});
969
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
970
$result = $dbi->select(table => 'table1');
971
$result->filter(key1 => sub { $_[0] * 2 }, key2 => sub { $_[0] * 4 });
972
$result->end_filter(key1 => sub { $_[0] * 3 }, key2 => sub { $_[0] * 5 });
973
$row = $result->fetch_first;
974
is_deeply($row, [6, 40]);
975

            
all filter can receive array...
Yuki Kimoto authored on 2011-02-25
976
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
977
$dbi->execute($CREATE_TABLE->{0});
978
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
979
$result = $dbi->select(table => 'table1');
980
$result->filter([qw/key1 key2/] => sub { $_[0] * 2 });
981
$result->end_filter([[qw/key1 key2/] => sub { $_[0] * 3 }]);
982
$row = $result->fetch_first;
983
is_deeply($row, [6, 12]);
984

            
985
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
986
$dbi->execute($CREATE_TABLE->{0});
987
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
988
$result = $dbi->select(table => 'table1');
989
$result->filter([[qw/key1 key2/] => sub { $_[0] * 2 }]);
990
$result->end_filter([qw/key1 key2/] => sub { $_[0] * 3 });
991
$row = $result->fetch_first;
992
is_deeply($row, [6, 12]);
993

            
many changed
Yuki Kimoto authored on 2011-01-23
994
$dbi->register_filter(five_times => sub { $_[0] * 5 });
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-17
995
$result = $dbi->select(table => 'table1');
996
$result->filter(key1 => sub { $_[0] * 2 }, key2 => sub { $_[0] * 4 });
many changed
Yuki Kimoto authored on 2011-01-23
997
$result->end_filter({key1 => sub { $_[0] * 3 }, key2 => 'five_times' });
added tests
Yuki Kimoto authored on 2011-06-08
998
$row = $result->one;
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-17
999
is_deeply($row, {key1 => 6, key2 => 40});
fix select method empty wher...
Yuki Kimoto authored on 2011-01-17
1000

            
fix bug : filter can't over...
Yuki Kimoto authored on 2011-02-09
1001
$dbi->register_filter(five_times => sub { $_[0] * 5 });
1002
$dbi->apply_filter('table1',
1003
    key1 => {end => sub { $_[0] * 3 } },
1004
    key2 => {end => 'five_times'}
1005
);
1006
$result = $dbi->select(table => 'table1');
1007
$result->filter(key1 => sub { $_[0] * 2 }, key2 => sub { $_[0] * 4 });
added tests
Yuki Kimoto authored on 2011-06-08
1008
$row = $result->one;
fix bug : filter can't over...
Yuki Kimoto authored on 2011-02-09
1009
is_deeply($row, {key1 => 6, key2 => 40}, 'apply_filter');
1010

            
1011
$dbi->register_filter(five_times => sub { $_[0] * 5 });
1012
$dbi->apply_filter('table1',
1013
    key1 => {end => sub { $_[0] * 3 } },
1014
    key2 => {end => 'five_times'}
1015
);
1016
$result = $dbi->select(table => 'table1');
1017
$result->filter(key1 => sub { $_[0] * 2 }, key2 => sub { $_[0] * 4 });
1018
$result->filter(key1 => undef);
1019
$result->end_filter(key1 => undef);
added tests
Yuki Kimoto authored on 2011-06-08
1020
$row = $result->one;
fix bug : filter can't over...
Yuki Kimoto authored on 2011-02-09
1021
is_deeply($row, {key1 => 1, key2 => 40}, 'apply_filter overwrite');
fix select method empty wher...
Yuki Kimoto authored on 2011-01-17
1022

            
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-02-28
1023
test 'remove_end_filter and remove_filter';
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-02-28
1024
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1025
$dbi->execute($CREATE_TABLE->{0});
1026
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
1027
$result = $dbi->select(table => 'table1');
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-02-28
1028
$row = $result
1029
       ->filter(key1 => sub { $_[0] * 2 }, key2 => sub { $_[0] * 4 })
1030
       ->remove_filter
1031
       ->end_filter(key1 => sub { $_[0] * 3 }, key2 => sub { $_[0] * 5 })
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-02-28
1032
       ->remove_end_filter
1033
       ->fetch_first;
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-02-28
1034
is_deeply($row, [1, 2]);
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-02-28
1035

            
fix select method empty wher...
Yuki Kimoto authored on 2011-01-17
1036
test 'empty where select';
1037
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1038
$dbi->execute($CREATE_TABLE->{0});
1039
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
1040
$result = $dbi->select(table => 'table1', where => {});
added tests
Yuki Kimoto authored on 2011-06-08
1041
$row = $result->one;
fix select method empty wher...
Yuki Kimoto authored on 2011-01-17
1042
is_deeply($row, {key1 => 1, key2 => 2});
1043

            
added experimental sugar met...
Yuki Kimoto authored on 2011-01-17
1044
test 'select query option';
1045
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1046
$dbi->execute($CREATE_TABLE->{0});
1047
$query = $dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2}, query => 1);
1048
is(ref $query, 'DBIx::Custom::Query');
1049
$query = $dbi->update(table => 'table1', where => {key1 => 1}, param => {key2 => 2}, query => 1);
1050
is(ref $query, 'DBIx::Custom::Query');
1051
$query = $dbi->delete(table => 'table1', where => {key1 => 1}, query => 1);
1052
is(ref $query, 'DBIx::Custom::Query');
1053
$query = $dbi->select(table => 'table1', where => {key1 => 1, key2 => 2}, query => 1);
1054
is(ref $query, 'DBIx::Custom::Query');
1055

            
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
1056
test 'DBIx::Custom::Where';
experimental extended select...
Yuki Kimoto authored on 2011-01-17
1057
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1058
$dbi->execute($CREATE_TABLE->{0});
1059
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
1060
$dbi->insert(table => 'table1', param => {key1 => 3, key2 => 4});
renamed DBIx::Custom::TagPro...
Yuki Kimoto authored on 2011-01-24
1061
$where = $dbi->where->clause(['and', '{= key1}', '{= key2}']);
1062
is("$where", "where ( {= key1} and {= key2} )", 'no param');
1063

            
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
1064
$where = $dbi->where
added test
Yuki Kimoto authored on 2011-01-19
1065
             ->clause(['and', '{= key1}', '{= key2}'])
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
1066
             ->param({key1 => 1});
added test
Yuki Kimoto authored on 2011-01-19
1067

            
experimental extended select...
Yuki Kimoto authored on 2011-01-17
1068
$result = $dbi->select(
1069
    table => 'table1',
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
1070
    where => $where
experimental extended select...
Yuki Kimoto authored on 2011-01-17
1071
);
1072
$row = $result->fetch_hash_all;
1073
is_deeply($row, [{key1 => 1, key2 => 2}]);
1074

            
where can recieve array refr...
Yuki Kimoto authored on 2011-03-24
1075
$result = $dbi->select(
1076
    table => 'table1',
1077
    where => [
1078
        ['and', '{= key1}', '{= key2}'],
1079
        {key1 => 1}
1080
    ]
1081
);
1082
$row = $result->fetch_hash_all;
1083
is_deeply($row, [{key1 => 1, key2 => 2}]);
1084

            
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
1085
$where = $dbi->where
added test
Yuki Kimoto authored on 2011-01-19
1086
             ->clause(['and', '{= key1}', '{= key2}'])
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
1087
             ->param({key1 => 1, key2 => 2});
experimental extended select...
Yuki Kimoto authored on 2011-01-17
1088
$result = $dbi->select(
1089
    table => 'table1',
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
1090
    where => $where
experimental extended select...
Yuki Kimoto authored on 2011-01-17
1091
);
1092
$row = $result->fetch_hash_all;
1093
is_deeply($row, [{key1 => 1, key2 => 2}]);
1094

            
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
1095
$where = $dbi->where
added test
Yuki Kimoto authored on 2011-01-19
1096
             ->clause(['and', '{= key1}', '{= key2}'])
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
1097
             ->param({});
experimental extended select...
Yuki Kimoto authored on 2011-01-17
1098
$result = $dbi->select(
1099
    table => 'table1',
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
1100
    where => $where,
experimental extended select...
Yuki Kimoto authored on 2011-01-17
1101
);
1102
$row = $result->fetch_hash_all;
1103
is_deeply($row, [{key1 => 1, key2 => 2}, {key1 => 3, key2 => 4}]);
1104

            
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
1105
$where = $dbi->where
updated pod
Yuki Kimoto authored on 2011-06-07
1106
             ->clause(['and', ['or', 'key1 > :key1', 'key1 < :key1'], 'key2 = :key2'])
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
1107
             ->param({key1 => [0, 3], key2 => 2});
experimental extended select...
Yuki Kimoto authored on 2011-01-17
1108
$result = $dbi->select(
1109
    table => 'table1',
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
1110
    where => $where,
added experimental not_exist...
Yuki Kimoto authored on 2011-01-26
1111
); 
experimental extended select...
Yuki Kimoto authored on 2011-01-17
1112
$row = $result->fetch_hash_all;
1113
is_deeply($row, [{key1 => 1, key2 => 2}]);
1114

            
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
1115
$where = $dbi->where;
1116
$result = $dbi->select(
1117
    table => 'table1',
1118
    where => $where
1119
);
1120
$row = $result->fetch_hash_all;
1121
is_deeply($row, [{key1 => 1, key2 => 2}, {key1 => 3, key2 => 4}]);
1122

            
experimental extended select...
Yuki Kimoto authored on 2011-01-17
1123
eval {
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
1124
$where = $dbi->where
added test
Yuki Kimoto authored on 2011-01-19
1125
             ->clause(['uuu']);
experimental extended select...
Yuki Kimoto authored on 2011-01-17
1126
$result = $dbi->select(
1127
    table => 'table1',
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
1128
    where => $where
experimental extended select...
Yuki Kimoto authored on 2011-01-17
1129
);
1130
};
1131
ok($@);
1132

            
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
1133
$where = $dbi->where;
1134
is("$where", '');
1135

            
added test
Yuki Kimoto authored on 2011-01-19
1136
$where = $dbi->where
1137
             ->clause(['or', ('{= key1}') x 2])
1138
             ->param({key1 => [1, 3]});
1139
$result = $dbi->select(
1140
    table => 'table1',
1141
    where => $where,
1142
);
1143
$row = $result->fetch_hash_all;
1144
is_deeply($row, [{key1 => 1, key2 => 2}, {key1 => 3, key2 => 4}]);
1145

            
1146
$where = $dbi->where
1147
             ->clause(['or', ('{= key1}') x 2])
1148
             ->param({key1 => [1]});
1149
$result = $dbi->select(
1150
    table => 'table1',
1151
    where => $where,
1152
);
1153
$row = $result->fetch_hash_all;
1154
is_deeply($row, [{key1 => 1, key2 => 2}]);
1155

            
1156
$where = $dbi->where
1157
             ->clause(['or', ('{= key1}') x 2])
1158
             ->param({key1 => 1});
1159
$result = $dbi->select(
1160
    table => 'table1',
1161
    where => $where,
1162
);
1163
$row = $result->fetch_hash_all;
1164
is_deeply($row, [{key1 => 1, key2 => 2}]);
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
1165

            
many changed
Yuki Kimoto authored on 2011-01-23
1166
$where = $dbi->where
1167
             ->clause('{= key1}')
1168
             ->param({key1 => 1});
1169
$result = $dbi->select(
1170
    table => 'table1',
1171
    where => $where,
1172
);
1173
$row = $result->fetch_hash_all;
1174
is_deeply($row, [{key1 => 1, key2 => 2}]);
1175

            
1176
$where = $dbi->where
1177
             ->clause('{= key1} {= key2}')
1178
             ->param({key1 => 1});
1179
eval{$where->to_string};
1180
like($@, qr/one column/);
1181

            
added experimental not_exist...
Yuki Kimoto authored on 2011-01-26
1182
$where = $dbi->where
1183
             ->clause('{= key1}')
1184
             ->param([]);
1185
eval{$where->to_string};
1186
like($@, qr/Parameter/);
1187

            
1188
$where = $dbi->where
1189
             ->clause(['or', ('{= key1}') x 3])
1190
             ->param({key1 => [$dbi->not_exists, 1, 3]});
1191
$result = $dbi->select(
1192
    table => 'table1',
1193
    where => $where,
1194
);
1195
$row = $result->fetch_hash_all;
1196
is_deeply($row, [{key1 => 1, key2 => 2}, {key1 => 3, key2 => 4}], 'not_exists');
1197

            
1198
$where = $dbi->where
1199
             ->clause(['or', ('{= key1}') x 3])
1200
             ->param({key1 => [1, $dbi->not_exists, 3]});
1201
$result = $dbi->select(
1202
    table => 'table1',
1203
    where => $where,
1204
);
1205
$row = $result->fetch_hash_all;
1206
is_deeply($row, [{key1 => 1, key2 => 2}, {key1 => 3, key2 => 4}], 'not_exists');
1207

            
1208
$where = $dbi->where
1209
             ->clause(['or', ('{= key1}') x 3])
1210
             ->param({key1 => [1, 3, $dbi->not_exists]});
1211
$result = $dbi->select(
1212
    table => 'table1',
1213
    where => $where,
1214
);
1215
$row = $result->fetch_hash_all;
1216
is_deeply($row, [{key1 => 1, key2 => 2}, {key1 => 3, key2 => 4}], 'not_exists');
1217

            
1218
$where = $dbi->where
1219
             ->clause(['or', ('{= key1}') x 3])
1220
             ->param({key1 => [1, $dbi->not_exists, $dbi->not_exists]});
1221
$result = $dbi->select(
1222
    table => 'table1',
1223
    where => $where,
1224
);
1225
$row = $result->fetch_hash_all;
1226
is_deeply($row, [{key1 => 1, key2 => 2}], 'not_exists');
1227

            
1228
$where = $dbi->where
1229
             ->clause(['or', ('{= key1}') x 3])
1230
             ->param({key1 => [$dbi->not_exists, 1, $dbi->not_exists]});
1231
$result = $dbi->select(
1232
    table => 'table1',
1233
    where => $where,
1234
);
1235
$row = $result->fetch_hash_all;
1236
is_deeply($row, [{key1 => 1, key2 => 2}], 'not_exists');
1237

            
1238
$where = $dbi->where
1239
             ->clause(['or', ('{= key1}') x 3])
1240
             ->param({key1 => [$dbi->not_exists, $dbi->not_exists, 1]});
1241
$result = $dbi->select(
1242
    table => 'table1',
1243
    where => $where,
1244
);
1245
$row = $result->fetch_hash_all;
1246
is_deeply($row, [{key1 => 1, key2 => 2}], 'not_exists');
1247

            
1248
$where = $dbi->where
1249
             ->clause(['or', ('{= key1}') x 3])
1250
             ->param({key1 => [$dbi->not_exists, $dbi->not_exists, $dbi->not_exists]});
1251
$result = $dbi->select(
1252
    table => 'table1',
1253
    where => $where,
1254
);
1255
$row = $result->fetch_hash_all;
1256
is_deeply($row, [{key1 => 1, key2 => 2}, {key1 => 3, key2 => 4}], 'not_exists');
1257

            
make delete() using where ob...
Yuki Kimoto authored on 2011-01-26
1258
$where = $dbi->where
1259
             ->clause(['or', ('{= key1}') x 3])
1260
             ->param({key1 => []});
1261
$result = $dbi->select(
1262
    table => 'table1',
1263
    where => $where,
1264
);
1265
$row = $result->fetch_hash_all;
1266
is_deeply($row, [{key1 => 1, key2 => 2}, {key1 => 3, key2 => 4}], 'not_exists');
1267

            
1268
$where = $dbi->where
1269
             ->clause(['and', '{> key1}', '{< key1}' ])
1270
             ->param({key1 => [2, $dbi->not_exists]});
1271
$result = $dbi->select(
1272
    table => 'table1',
1273
    where => $where,
1274
);
1275
$row = $result->fetch_hash_all;
1276
is_deeply($row, [{key1 => 3, key2 => 4}], 'not_exists');
1277

            
1278
$where = $dbi->where
1279
             ->clause(['and', '{> key1}', '{< key1}' ])
1280
             ->param({key1 => [$dbi->not_exists, 2]});
1281
$result = $dbi->select(
1282
    table => 'table1',
1283
    where => $where,
1284
);
1285
$row = $result->fetch_hash_all;
1286
is_deeply($row, [{key1 => 1, key2 => 2}], 'not_exists');
1287

            
1288
$where = $dbi->where
1289
             ->clause(['and', '{> key1}', '{< key1}' ])
1290
             ->param({key1 => [$dbi->not_exists, $dbi->not_exists]});
1291
$result = $dbi->select(
1292
    table => 'table1',
1293
    where => $where,
1294
);
1295
$row = $result->fetch_hash_all;
1296
is_deeply($row, [{key1 => 1, key2 => 2},{key1 => 3, key2 => 4}], 'not_exists');
1297

            
1298
$where = $dbi->where
1299
             ->clause(['and', '{> key1}', '{< key1}' ])
1300
             ->param({key1 => [0, 2]});
1301
$result = $dbi->select(
1302
    table => 'table1',
1303
    where => $where,
1304
);
1305
$row = $result->fetch_hash_all;
1306
is_deeply($row, [{key1 => 1, key2 => 2}], 'not_exists');
1307

            
DBIx::Custom::Where clause a...
Yuki Kimoto authored on 2011-04-18
1308
$where = $dbi->where
1309
             ->clause(['and', 'key1 is not null', 'key2 is not null' ]);
1310
$result = $dbi->select(
1311
    table => 'table1',
1312
    where => $where,
1313
);
1314
$row = $result->fetch_hash_all;
1315
is_deeply($row, [{key1 => 1, key2 => 2}, {key1 => 3, key2 => 4}], 'not_exists');
1316

            
improved error messages
Yuki Kimoto authored on 2011-04-18
1317
eval {$dbi->where(ppp => 1) };
1318
like($@, qr/invalid/);
1319

            
renamed dbi_options to dbi_o...
Yuki Kimoto authored on 2011-01-23
1320
test 'dbi_option default';
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
1321
$dbi = DBIx::Custom->new;
renamed dbi_options to dbi_o...
Yuki Kimoto authored on 2011-01-23
1322
is_deeply($dbi->dbi_option, {});
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
1323

            
added register_tag_processor
Yuki Kimoto authored on 2011-01-20
1324
test 'register_tag_processor';
1325
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1326
$dbi->register_tag_processor(
1327
    a => sub { 1 }
1328
);
1329
is($dbi->query_builder->tag_processors->{a}->(), 1);
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
1330

            
renamed DBIx::Custom::TagPro...
Yuki Kimoto authored on 2011-01-24
1331
test 'register_tag';
1332
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1333
$dbi->register_tag(
1334
    b => sub { 2 }
1335
);
1336
is($dbi->query_builder->tags->{b}->(), 2);
1337

            
added table not specified ex...
Yuki Kimoto authored on 2011-01-21
1338
test 'table not specify exception';
1339
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1340
eval {$dbi->insert};
1341
like($@, qr/table/);
1342
eval {$dbi->update};
1343
like($@, qr/table/);
1344
eval {$dbi->delete};
1345
like($@, qr/table/);
1346
eval {$dbi->select};
1347
like($@, qr/table/);
many changed
Yuki Kimoto authored on 2011-01-23
1348

            
1349

            
1350
test 'more tests';
1351
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1352
eval{$dbi->apply_filter('table', 'column', [])};
1353
like($@, qr/apply_filter/);
1354

            
1355
eval{$dbi->apply_filter('table', 'column', {outer => 2})};
1356
like($@, qr/apply_filter/);
1357

            
1358
$dbi->apply_filter(
1359

            
1360
);
1361
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1362
$dbi->execute($CREATE_TABLE->{0});
1363
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
1364
$dbi->insert(table => 'table1', param => {key1 => 3, key2 => 4});
1365
$dbi->apply_filter('table1', 'key2', 
1366
                   {in => sub { $_[0] * 3 }, out => sub { $_[0] * 2 }});
1367
$rows = $dbi->select(table => 'table1', where => {key2 => 1})->fetch_hash_all;
1368
is_deeply($rows, [{key1 => 1, key2 => 6}]);
1369

            
1370
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1371
$dbi->execute($CREATE_TABLE->{0});
1372
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
1373
$dbi->insert(table => 'table1', param => {key1 => 3, key2 => 4});
1374
$dbi->apply_filter('table1', 'key2', {});
1375
$rows = $dbi->select(table => 'table1', where => {key2 => 2})->fetch_hash_all;
1376
is_deeply($rows, [{key1 => 1, key2 => 2}]);
1377

            
1378
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1379
eval {$dbi->apply_filter('table1', 'key2', {out => 'no'})};
1380
like($@, qr/not registered/);
1381
eval {$dbi->apply_filter('table1', 'key2', {in => 'no'})};
1382
like($@, qr/not registered/);
renamed helper to method.
Yuki Kimoto authored on 2011-01-25
1383
$dbi->method({one => sub { 1 }});
many changed
Yuki Kimoto authored on 2011-01-23
1384
is($dbi->one, 1);
1385

            
1386
eval{DBIx::Custom->connect()};
cleanup
Yuki Kimoto authored on 2011-04-25
1387
like($@, qr/_connect/);
many changed
Yuki Kimoto authored on 2011-01-23
1388

            
1389
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1390
$dbi->execute($CREATE_TABLE->{0});
1391
$dbi->register_filter(twice => sub { $_[0] * 2 });
1392
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2},
1393
             filter => {key1 => 'twice'});
added tests
Yuki Kimoto authored on 2011-06-08
1394
$row = $dbi->select(table => 'table1')->one;
many changed
Yuki Kimoto authored on 2011-01-23
1395
is_deeply($row, {key1 => 2, key2 => 2});
1396
eval {$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2},
1397
             filter => {key1 => 'no'}) };
1398
like($@, qr//);
1399

            
1400
$dbi->register_filter(one => sub { });
1401
$dbi->default_fetch_filter('one');
1402
ok($dbi->default_fetch_filter);
1403
$dbi->default_bind_filter('one');
1404
ok($dbi->default_bind_filter);
1405
eval{$dbi->default_fetch_filter('no')};
1406
like($@, qr/not registered/);
1407
eval{$dbi->default_bind_filter('no')};
1408
like($@, qr/not registered/);
1409
$dbi->default_bind_filter(undef);
1410
ok(!defined $dbi->default_bind_filter);
1411
$dbi->default_fetch_filter(undef);
1412
ok(!defined $dbi->default_fetch_filter);
- update_param_tag is DEPREC...
Yuki Kimoto authored on 2011-06-07
1413
eval {$dbi->execute('select * from table1 {} {= author') };
many changed
Yuki Kimoto authored on 2011-01-23
1414
like($@, qr/Tag not finished/);
1415

            
1416
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1417
$dbi->execute($CREATE_TABLE->{0});
1418
$dbi->register_filter(one => sub { 1 });
1419
$result = $dbi->select(table => 'table1');
1420
eval {$result->filter(key1 => 'no')};
1421
like($@, qr/not registered/);
1422
eval {$result->end_filter(key1 => 'no')};
1423
like($@, qr/not registered/);
1424
$result->default_filter(undef);
1425
ok(!defined $result->default_filter);
1426
$result->default_filter('one');
1427
is($result->default_filter->(), 1);
1428

            
renamed dbi_options to dbi_o...
Yuki Kimoto authored on 2011-01-23
1429
test 'dbi_option';
data_source is DEPRECATED! I...
Yuki Kimoto authored on 2011-06-06
1430
$dbi = DBIx::Custom->connect(dsn => 'dbi:SQLite:dbname=:memory:',
renamed dbi_options to dbi_o...
Yuki Kimoto authored on 2011-01-23
1431
                             dbi_option => {PrintError => 1});
1432
ok($dbi->dbh->{PrintError});
data_source is DEPRECATED! I...
Yuki Kimoto authored on 2011-06-06
1433
$dbi = DBIx::Custom->connect(dsn => 'dbi:SQLite:dbname=:memory:',
renamed dbi_options to dbi_o...
Yuki Kimoto authored on 2011-01-23
1434
                             dbi_options => {PrintError => 1});
1435
ok($dbi->dbh->{PrintError});
1436

            
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-25
1437
test 'DBIx::Custom::Result stash()';
1438
$result = DBIx::Custom::Result->new;
1439
is_deeply($result->stash, {}, 'default');
1440
$result->stash->{foo} = 1;
1441
is($result->stash->{foo}, 1, 'get and set');
table object call dbi object...
Yuki Kimoto authored on 2011-01-25
1442

            
fix bug : filter can't over...
Yuki Kimoto authored on 2011-02-09
1443
test 'filter __ expression';
1444
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1445
$dbi->execute('create table company (id, name, location_id)');
1446
$dbi->execute('create table location (id, name)');
1447
$dbi->apply_filter('location',
1448
  name => {in => sub { uc $_[0] } }
1449
);
1450

            
1451
$dbi->insert(table => 'company', param => {id => 1, name => 'a', location_id => 2});
1452
$dbi->insert(table => 'location', param => {id => 2, name => 'b'});
1453

            
1454
$result = $dbi->select(
1455
    table => ['company', 'location'], relation => {'company.location_id' => 'location.id'},
1456
    column => ['location.name as location__name']
1457
);
1458
is($result->fetch_first->[0], 'B');
1459

            
add experimental DBIx::Custo...
Yuki Kimoto authored on 2011-02-21
1460
$result = $dbi->select(
1461
    table => 'company', relation => {'company.location_id' => 'location.id'},
1462
    column => ['location.name as location__name']
1463
);
1464
is($result->fetch_first->[0], 'B');
1465

            
added EXPERIMENTAL col metho...
Yuki Kimoto authored on 2011-06-08
1466
$result = $dbi->select(
1467
    table => 'company', relation => {'company.location_id' => 'location.id'},
1468
    column => ['location.name as "location.name"']
1469
);
1470
is($result->fetch_first->[0], 'B');
1471

            
add feture. all model class ...
Yuki Kimoto authored on 2011-02-18
1472
test 'Model class';
removed experimental base_ta...
Yuki Kimoto authored on 2011-02-15
1473
use MyDBI1;
1474
$dbi = MyDBI1->connect($NEW_ARGS->{0});
1475
$dbi->execute("create table book (title, author)");
add feture. all model class ...
Yuki Kimoto authored on 2011-02-18
1476
$model = $dbi->model('book');
1477
$model->insert({title => 'a', author => 'b'});
1478
is_deeply($model->list->fetch_hash_all, [{title => 'a', author => 'b'}], 'basic');
removed experimental base_ta...
Yuki Kimoto authored on 2011-02-15
1479
$dbi->execute("create table company (name)");
add feture. all model class ...
Yuki Kimoto authored on 2011-02-18
1480
$model = $dbi->model('company');
1481
$model->insert({name => 'a'});
1482
is_deeply($model->list->fetch_hash_all, [{name => 'a'}], 'basic');
add models() attribute
Yuki Kimoto authored on 2011-02-21
1483
is($dbi->models->{'book'}, $dbi->model('book'));
1484
is($dbi->models->{'company'}, $dbi->model('company'));
removed experimental base_ta...
Yuki Kimoto authored on 2011-02-15
1485

            
1486
{
1487
    package MyDBI4;
1488

            
1489
    use strict;
1490
    use warnings;
1491

            
1492
    use base 'DBIx::Custom';
1493

            
1494
    sub connect {
1495
        my $self = shift->SUPER::connect(@_);
1496
        
add feture. all model class ...
Yuki Kimoto authored on 2011-02-18
1497
        $self->include_model(
1498
            MyModel2 => [
removed experimental base_ta...
Yuki Kimoto authored on 2011-02-15
1499
                'book',
add experimental DBIx::Custo...
Yuki Kimoto authored on 2011-02-24
1500
                {class => 'Company', name => 'company'}
removed experimental base_ta...
Yuki Kimoto authored on 2011-02-15
1501
            ]
1502
        );
1503
    }
1504

            
add feture. all model class ...
Yuki Kimoto authored on 2011-02-18
1505
    package MyModel2::Base1;
removed experimental base_ta...
Yuki Kimoto authored on 2011-02-15
1506

            
1507
    use strict;
1508
    use warnings;
1509

            
add feture. all model class ...
Yuki Kimoto authored on 2011-02-18
1510
    use base 'DBIx::Custom::Model';
removed experimental base_ta...
Yuki Kimoto authored on 2011-02-15
1511

            
add feture. all model class ...
Yuki Kimoto authored on 2011-02-18
1512
    package MyModel2::book;
removed experimental base_ta...
Yuki Kimoto authored on 2011-02-15
1513

            
1514
    use strict;
1515
    use warnings;
1516

            
add feture. all model class ...
Yuki Kimoto authored on 2011-02-18
1517
    use base 'MyModel2::Base1';
removed experimental base_ta...
Yuki Kimoto authored on 2011-02-15
1518

            
1519
    sub insert {
1520
        my ($self, $param) = @_;
1521
        
1522
        return $self->SUPER::insert(param => $param);
1523
    }
1524

            
1525
    sub list { shift->select; }
1526

            
add feture. all model class ...
Yuki Kimoto authored on 2011-02-18
1527
    package MyModel2::Company;
removed experimental base_ta...
Yuki Kimoto authored on 2011-02-15
1528

            
1529
    use strict;
1530
    use warnings;
1531

            
add feture. all model class ...
Yuki Kimoto authored on 2011-02-18
1532
    use base 'MyModel2::Base1';
removed experimental base_ta...
Yuki Kimoto authored on 2011-02-15
1533

            
1534
    sub insert {
1535
        my ($self, $param) = @_;
1536
        
1537
        return $self->SUPER::insert(param => $param);
1538
    }
1539

            
1540
    sub list { shift->select; }
1541
}
1542
$dbi = MyDBI4->connect($NEW_ARGS->{0});
1543
$dbi->execute("create table book (title, author)");
add feture. all model class ...
Yuki Kimoto authored on 2011-02-18
1544
$model = $dbi->model('book');
1545
$model->insert({title => 'a', author => 'b'});
1546
is_deeply($model->list->fetch_hash_all, [{title => 'a', author => 'b'}], 'basic');
removed experimental base_ta...
Yuki Kimoto authored on 2011-02-15
1547
$dbi->execute("create table company (name)");
add feture. all model class ...
Yuki Kimoto authored on 2011-02-18
1548
$model = $dbi->model('company');
1549
$model->insert({name => 'a'});
1550
is_deeply($model->list->fetch_hash_all, [{name => 'a'}], 'basic');
1551

            
1552
{
1553
     package MyDBI5;
1554

            
1555
    use strict;
1556
    use warnings;
1557

            
1558
    use base 'DBIx::Custom';
1559

            
1560
    sub connect {
1561
        my $self = shift->SUPER::connect(@_);
1562
        
1563
        $self->include_model('MyModel4');
1564
    }
1565
}
1566
$dbi = MyDBI5->connect($NEW_ARGS->{0});
1567
$dbi->execute("create table company (name)");
- added EXPERIMENTAL type() ...
Yuki Kimoto authored on 2011-03-21
1568
$dbi->execute("create table table1 (key1)");
add feture. all model class ...
Yuki Kimoto authored on 2011-02-18
1569
$model = $dbi->model('company');
1570
$model->insert({name => 'a'});
1571
is_deeply($model->list->fetch_hash_all, [{name => 'a'}], 'include all model');
- added EXPERIMENTAL type() ...
Yuki Kimoto authored on 2011-03-21
1572
$dbi->insert(table => 'table1', param => {key1 => 1});
add feture. all model class ...
Yuki Kimoto authored on 2011-02-18
1573
$model = $dbi->model('book');
- added EXPERIMENTAL type() ...
Yuki Kimoto authored on 2011-03-21
1574
is_deeply($model->list->fetch_hash_all, [{key1 => 1}], 'include all model');
add feture. all model class ...
Yuki Kimoto authored on 2011-02-18
1575

            
add DBIx::Custom::Model fore...
Yuki Kimoto authored on 2011-02-21
1576
test 'primary_key';
1577
use MyDBI1;
1578
$dbi = MyDBI1->connect($NEW_ARGS->{0});
1579
$model = $dbi->model('book');
1580
$model->primary_key(['id', 'number']);
1581
is_deeply($model->primary_key, ['id', 'number']);
1582

            
add DBIx::Custom::Model colu...
Yuki Kimoto authored on 2011-02-21
1583
test 'columns';
1584
use MyDBI1;
1585
$dbi = MyDBI1->connect($NEW_ARGS->{0});
1586
$model = $dbi->model('book');
1587
$model->columns(['id', 'number']);
1588
is_deeply($model->columns, ['id', 'number']);
add feture. all model class ...
Yuki Kimoto authored on 2011-02-18
1589

            
add experimental setup_model...
Yuki Kimoto authored on 2011-02-21
1590
test 'setup_model';
1591
use MyDBI1;
1592
$dbi = MyDBI1->connect($NEW_ARGS->{0});
1593
$dbi->execute('create table book (id)');
1594
$dbi->execute('create table company (id, name);');
1595
$dbi->execute('create table test (id, name, primary key (id, name));');
1596
$dbi->setup_model;
1597
is_deeply($dbi->model('book')->columns, ['id']);
1598
is_deeply($dbi->model('company')->columns, ['id', 'name']);
add experimental update_at()...
Yuki Kimoto authored on 2011-02-21
1599

            
1600
test 'delete_at';
1601
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1602
$dbi->execute($CREATE_TABLE->{1});
1603
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
1604
$dbi->delete_at(
1605
    table => 'table1',
1606
    primary_key => ['key1', 'key2'],
1607
    where => [1, 2],
1608
);
1609
is_deeply($dbi->select(table => 'table1')->fetch_hash_all, []);
1610

            
1611
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
1612
$dbi->delete_at(
1613
    table => 'table1',
1614
    primary_key => 'key1',
1615
    where => 1,
1616
);
1617
is_deeply($dbi->select(table => 'table1')->fetch_hash_all, []);
1618

            
- added experimental DBIx::C...
Yuki Kimoto authored on 2011-02-28
1619
test 'insert_at';
1620
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1621
$dbi->execute($CREATE_TABLE->{1});
1622
$dbi->insert_at(
1623
    primary_key => ['key1', 'key2'], 
1624
    table => 'table1',
1625
    where => [1, 2],
1626
    param => {key3 => 3}
1627
);
added tests
Yuki Kimoto authored on 2011-06-08
1628
is($dbi->select(table => 'table1')->one->{key1}, 1);
1629
is($dbi->select(table => 'table1')->one->{key2}, 2);
1630
is($dbi->select(table => 'table1')->one->{key3}, 3);
- added experimental DBIx::C...
Yuki Kimoto authored on 2011-02-28
1631

            
1632
$dbi->delete_all(table => 'table1');
add experimental update_at()...
Yuki Kimoto authored on 2011-02-21
1633
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
- added experimental DBIx::C...
Yuki Kimoto authored on 2011-02-28
1634
$dbi->insert_at(
1635
    primary_key => 'key1', 
add experimental update_at()...
Yuki Kimoto authored on 2011-02-21
1636
    table => 'table1',
- added experimental DBIx::C...
Yuki Kimoto authored on 2011-02-28
1637
    where => 1,
1638
    param => {key2 => 2, key3 => 3}
add experimental update_at()...
Yuki Kimoto authored on 2011-02-21
1639
);
1640

            
added tests
Yuki Kimoto authored on 2011-06-08
1641
is($dbi->select(table => 'table1')->one->{key1}, 1);
1642
is($dbi->select(table => 'table1')->one->{key2}, 2);
1643
is($dbi->select(table => 'table1')->one->{key3}, 3);
- added experimental DBIx::C...
Yuki Kimoto authored on 2011-02-28
1644

            
1645
eval {
1646
    $dbi->insert_at(
1647
        table => 'table1',
1648
        primary_key => ['key1', 'key2'],
1649
        where => {},
1650
        param => {key1 => 1, key2 => 2, key3 => 3},
1651
    );
1652
};
1653
like($@, qr/must be/);
add experimental update_at()...
Yuki Kimoto authored on 2011-02-21
1654

            
- insert, insert_at, update,...
Yuki Kimoto authored on 2011-06-08
1655
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1656
$dbi->execute($CREATE_TABLE->{1});
1657
$dbi->insert_at(
1658
    {key3 => 3},
1659
    primary_key => ['key1', 'key2'], 
1660
    table => 'table1',
1661
    where => [1, 2],
1662
);
added tests
Yuki Kimoto authored on 2011-06-08
1663
is($dbi->select(table => 'table1')->one->{key1}, 1);
1664
is($dbi->select(table => 'table1')->one->{key2}, 2);
1665
is($dbi->select(table => 'table1')->one->{key3}, 3);
- insert, insert_at, update,...
Yuki Kimoto authored on 2011-06-08
1666

            
add experimental update_at()...
Yuki Kimoto authored on 2011-02-21
1667
test 'update_at';
1668
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1669
$dbi->execute($CREATE_TABLE->{1});
1670
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
1671
$dbi->update_at(
1672
    table => 'table1',
1673
    primary_key => ['key1', 'key2'],
1674
    where => [1, 2],
1675
    param => {key3 => 4}
1676
);
added tests
Yuki Kimoto authored on 2011-06-08
1677
is($dbi->select(table => 'table1')->one->{key1}, 1);
1678
is($dbi->select(table => 'table1')->one->{key2}, 2);
1679
is($dbi->select(table => 'table1')->one->{key3}, 4);
add experimental update_at()...
Yuki Kimoto authored on 2011-02-21
1680

            
1681
$dbi->delete_all(table => 'table1');
1682
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
1683
$dbi->update_at(
1684
    table => 'table1',
1685
    primary_key => 'key1',
1686
    where => 1,
1687
    param => {key3 => 4}
1688
);
added tests
Yuki Kimoto authored on 2011-06-08
1689
is($dbi->select(table => 'table1')->one->{key1}, 1);
1690
is($dbi->select(table => 'table1')->one->{key2}, 2);
1691
is($dbi->select(table => 'table1')->one->{key3}, 4);
add experimental update_at()...
Yuki Kimoto authored on 2011-02-21
1692

            
- insert, insert_at, update,...
Yuki Kimoto authored on 2011-06-08
1693
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1694
$dbi->execute($CREATE_TABLE->{1});
1695
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
1696
$dbi->update_at(
1697
    {key3 => 4},
1698
    table => 'table1',
1699
    primary_key => ['key1', 'key2'],
1700
    where => [1, 2]
1701
);
added tests
Yuki Kimoto authored on 2011-06-08
1702
is($dbi->select(table => 'table1')->one->{key1}, 1);
1703
is($dbi->select(table => 'table1')->one->{key2}, 2);
1704
is($dbi->select(table => 'table1')->one->{key3}, 4);
- insert, insert_at, update,...
Yuki Kimoto authored on 2011-06-08
1705

            
add experimental update_at()...
Yuki Kimoto authored on 2011-02-21
1706
test 'select_at';
1707
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1708
$dbi->execute($CREATE_TABLE->{1});
1709
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
1710
$result = $dbi->select_at(
1711
    table => 'table1',
1712
    primary_key => ['key1', 'key2'],
1713
    where => [1, 2]
1714
);
added tests
Yuki Kimoto authored on 2011-06-08
1715
$row = $result->one;
add experimental update_at()...
Yuki Kimoto authored on 2011-02-21
1716
is($row->{key1}, 1);
1717
is($row->{key2}, 2);
1718
is($row->{key3}, 3);
1719

            
1720
$dbi->delete_all(table => 'table1');
1721
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
1722
$result = $dbi->select_at(
1723
    table => 'table1',
1724
    primary_key => 'key1',
1725
    where => 1,
1726
);
added tests
Yuki Kimoto authored on 2011-06-08
1727
$row = $result->one;
add experimental update_at()...
Yuki Kimoto authored on 2011-02-21
1728
is($row->{key1}, 1);
1729
is($row->{key2}, 2);
1730
is($row->{key3}, 3);
1731

            
1732
$dbi->delete_all(table => 'table1');
1733
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
1734
$result = $dbi->select_at(
1735
    table => 'table1',
1736
    primary_key => ['key1', 'key2'],
cleanup
Yuki Kimoto authored on 2011-03-21
1737
    where => [1, 2]
add experimental update_at()...
Yuki Kimoto authored on 2011-02-21
1738
);
added tests
Yuki Kimoto authored on 2011-06-08
1739
$row = $result->one;
add experimental update_at()...
Yuki Kimoto authored on 2011-02-21
1740
is($row->{key1}, 1);
1741
is($row->{key2}, 2);
1742
is($row->{key3}, 3);
1743

            
- added experimental DBIx::C...
Yuki Kimoto authored on 2011-02-28
1744
eval {
1745
    $result = $dbi->select_at(
1746
        table => 'table1',
1747
        primary_key => ['key1', 'key2'],
1748
        where => {},
1749
    );
1750
};
1751
like($@, qr/must be/);
1752

            
improved error messages
Yuki Kimoto authored on 2011-04-18
1753
eval {
1754
    $result = $dbi->select_at(
1755
        table => 'table1',
1756
        primary_key => ['key1', 'key2'],
1757
        where => [1],
1758
    );
1759
};
1760
like($@, qr/same/);
1761

            
- added experimental DBIx::C...
Yuki Kimoto authored on 2011-02-28
1762
eval {
1763
    $result = $dbi->update_at(
1764
        table => 'table1',
1765
        primary_key => ['key1', 'key2'],
1766
        where => {},
1767
        param => {key1 => 1, key2 => 2},
1768
    );
1769
};
1770
like($@, qr/must be/);
1771

            
1772
eval {
1773
    $result = $dbi->delete_at(
1774
        table => 'table1',
1775
        primary_key => ['key1', 'key2'],
1776
        where => {},
1777
    );
1778
};
1779
like($@, qr/must be/);
add experimental update_at()...
Yuki Kimoto authored on 2011-02-21
1780

            
add experimental DBIx::Custo...
Yuki Kimoto authored on 2011-02-21
1781
test 'columns';
1782
use MyDBI1;
1783
$dbi = MyDBI1->connect($NEW_ARGS->{0});
1784
$model = $dbi->model('book');
add experimental DBIx::Custo...
Yuki Kimoto authored on 2011-02-21
1785

            
1786

            
1787
test 'model delete_at';
1788
{
1789
    package MyDBI6;
1790
    
1791
    use base 'DBIx::Custom';
1792
    
1793
    sub connect {
1794
        my $self = shift->SUPER::connect(@_);
1795
        
1796
        $self->include_model('MyModel5');
1797
        
1798
        return $self;
1799
    }
1800
}
1801
$dbi = MyDBI6->connect($NEW_ARGS->{0});
1802
$dbi->execute($CREATE_TABLE->{1});
- added EXPERIMENTAL type() ...
Yuki Kimoto authored on 2011-03-21
1803
$dbi->execute("create table table2 (key1, key2, key3)");
1804
$dbi->execute("create table table3 (key1, key2, key3)");
add experimental DBIx::Custo...
Yuki Kimoto authored on 2011-02-21
1805
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
1806
$dbi->model('table1')->delete_at(where => [1, 2]);
1807
is_deeply($dbi->select(table => 'table1')->fetch_hash_all, []);
- added EXPERIMENTAL type() ...
Yuki Kimoto authored on 2011-03-21
1808
$dbi->insert(table => 'table2', param => {key1 => 1, key2 => 2, key3 => 3});
add experimental DBIx::Custo...
Yuki Kimoto authored on 2011-02-24
1809
$dbi->model('table1_1')->delete_at(where => [1, 2]);
1810
is_deeply($dbi->select(table => 'table1')->fetch_hash_all, []);
- added EXPERIMENTAL type() ...
Yuki Kimoto authored on 2011-03-21
1811
$dbi->insert(table => 'table3', param => {key1 => 1, key2 => 2, key3 => 3});
add experimental DBIx::Custo...
Yuki Kimoto authored on 2011-02-24
1812
$dbi->model('table1_3')->delete_at(where => [1, 2]);
1813
is_deeply($dbi->select(table => 'table1')->fetch_hash_all, []);
add experimental DBIx::Custo...
Yuki Kimoto authored on 2011-02-21
1814

            
- added experimental DBIx::C...
Yuki Kimoto authored on 2011-02-28
1815
test 'model insert_at';
1816
$dbi = MyDBI6->connect($NEW_ARGS->{0});
1817
$dbi->execute($CREATE_TABLE->{1});
1818
$dbi->model('table1')->insert_at(
1819
    where => [1, 2],
1820
    param => {key3 => 3}
1821
);
1822
$result = $dbi->model('table1')->select;
added tests
Yuki Kimoto authored on 2011-06-08
1823
$row = $result->one;
- added experimental DBIx::C...
Yuki Kimoto authored on 2011-02-28
1824
is($row->{key1}, 1);
1825
is($row->{key2}, 2);
1826
is($row->{key3}, 3);
add experimental DBIx::Custo...
Yuki Kimoto authored on 2011-02-21
1827

            
- added experimental DBIx::C...
Yuki Kimoto authored on 2011-02-28
1828
test 'model update_at';
add experimental DBIx::Custo...
Yuki Kimoto authored on 2011-02-21
1829
$dbi = MyDBI6->connect($NEW_ARGS->{0});
1830
$dbi->execute($CREATE_TABLE->{1});
1831
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
1832
$dbi->model('table1')->update_at(
1833
    where => [1, 2],
1834
    param => {key3 => 4}
1835
);
1836
$result = $dbi->model('table1')->select;
added tests
Yuki Kimoto authored on 2011-06-08
1837
$row = $result->one;
add experimental DBIx::Custo...
Yuki Kimoto authored on 2011-02-21
1838
is($row->{key1}, 1);
1839
is($row->{key2}, 2);
1840
is($row->{key3}, 4);
1841

            
- added experimental DBIx::C...
Yuki Kimoto authored on 2011-02-28
1842
test 'model select_at';
add experimental DBIx::Custo...
Yuki Kimoto authored on 2011-02-21
1843
$dbi = MyDBI6->connect($NEW_ARGS->{0});
1844
$dbi->execute($CREATE_TABLE->{1});
1845
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
1846
$result = $dbi->model('table1')->select_at(where => [1, 2]);
added tests
Yuki Kimoto authored on 2011-06-08
1847
$row = $result->one;
add experimental DBIx::Custo...
Yuki Kimoto authored on 2011-02-21
1848
is($row->{key1}, 1);
1849
is($row->{key2}, 2);
1850
is($row->{key3}, 3);
DBIx::Custom::Model select()...
Yuki Kimoto authored on 2011-02-22
1851

            
1852

            
cleanup
Yuki Kimoto authored on 2011-03-21
1853
test 'mycolumn and column';
DBIx::Custom::Model select()...
Yuki Kimoto authored on 2011-02-22
1854
{
1855
    package MyDBI7;
1856
    
1857
    use base 'DBIx::Custom';
1858
    
1859
    sub connect {
1860
        my $self = shift->SUPER::connect(@_);
1861
        
1862
        $self->include_model('MyModel6');
1863
        
add experimental DBIx::Custo...
Yuki Kimoto authored on 2011-02-22
1864
        
DBIx::Custom::Model select()...
Yuki Kimoto authored on 2011-02-22
1865
        return $self;
1866
    }
1867
}
1868
$dbi = MyDBI7->connect($NEW_ARGS->{0});
1869
$dbi->execute($CREATE_TABLE->{0});
1870
$dbi->execute($CREATE_TABLE->{2});
add experimental DBIx::Custo...
Yuki Kimoto authored on 2011-02-22
1871
$dbi->setup_model;
1872
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
1873
$dbi->insert(table => 'table2', param => {key1 => 1, key3 => 3});
1874
$model = $dbi->model('table1');
cleanup
Yuki Kimoto authored on 2011-03-21
1875
$result = $model->select(
1876
    column => [$model->mycolumn, $model->column('table2')],
1877
    where => {'table1.key1' => 1}
1878
);
added tests
Yuki Kimoto authored on 2011-06-08
1879
is_deeply($result->one,
cleanup
Yuki Kimoto authored on 2011-03-21
1880
          {key1 => 1, key2 => 2, 'table2__key1' => 1, 'table2__key3' => 3});
add experimental DBIx::Custo...
Yuki Kimoto authored on 2011-02-22
1881

            
- update_param_tag is DEPREC...
Yuki Kimoto authored on 2011-06-07
1882
test 'update_param';
added experimental update_pa...
Yuki Kimoto authored on 2011-03-08
1883
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1884
$dbi->execute($CREATE_TABLE->{1});
1885
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5});
1886
$dbi->insert(table => 'table1', param => {key1 => 6, key2 => 7, key3 => 8, key4 => 9, key5 => 10});
1887

            
1888
$param = {key2 => 11};
- update_param_tag is DEPREC...
Yuki Kimoto authored on 2011-06-07
1889
$update_param = $dbi->update_param($param);
added experimental update_pa...
Yuki Kimoto authored on 2011-03-08
1890
$sql = <<"EOS";
- update_param_tag is DEPREC...
Yuki Kimoto authored on 2011-06-07
1891
update table1 $update_param
added experimental update_pa...
Yuki Kimoto authored on 2011-03-08
1892
where key1 = 1
1893
EOS
1894
$dbi->execute($sql, param => $param);
- update_param_tag is DEPREC...
Yuki Kimoto authored on 2011-06-07
1895
$result = $dbi->execute($SELECT_SOURCES->{0}, table => 'table1');
added experimental update_pa...
Yuki Kimoto authored on 2011-03-08
1896
$rows   = $result->fetch_hash_all;
1897
is_deeply($rows, [{key1 => 1, key2 => 11, key3 => 3, key4 => 4, key5 => 5},
1898
                  {key1 => 6, key2 => 7,  key3 => 8, key4 => 9, key5 => 10}],
1899
                  "basic");
1900

            
1901

            
added EXPERIMENTAL updat_par...
Yuki Kimoto authored on 2011-03-30
1902
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1903
$dbi->execute($CREATE_TABLE->{1});
1904
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5});
1905
$dbi->insert(table => 'table1', param => {key1 => 6, key2 => 7, key3 => 8, key4 => 9, key5 => 10});
1906

            
1907
$param = {key2 => 11, key3 => 33};
- update_param_tag is DEPREC...
Yuki Kimoto authored on 2011-06-07
1908
$update_param = $dbi->update_param($param);
added EXPERIMENTAL updat_par...
Yuki Kimoto authored on 2011-03-30
1909
$sql = <<"EOS";
- update_param_tag is DEPREC...
Yuki Kimoto authored on 2011-06-07
1910
update table1 $update_param
added EXPERIMENTAL updat_par...
Yuki Kimoto authored on 2011-03-30
1911
where key1 = 1
1912
EOS
1913
$dbi->execute($sql, param => $param);
- update_param_tag is DEPREC...
Yuki Kimoto authored on 2011-06-07
1914
$result = $dbi->execute($SELECT_SOURCES->{0}, table => 'table1');
added EXPERIMENTAL updat_par...
Yuki Kimoto authored on 2011-03-30
1915
$rows   = $result->fetch_hash_all;
1916
is_deeply($rows, [{key1 => 1, key2 => 11, key3 => 33, key4 => 4, key5 => 5},
1917
                  {key1 => 6, key2 => 7,  key3 => 8, key4 => 9, key5 => 10}],
1918
                  "basic");
1919

            
1920
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1921
$dbi->execute($CREATE_TABLE->{1});
1922
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5});
1923
$dbi->insert(table => 'table1', param => {key1 => 6, key2 => 7, key3 => 8, key4 => 9, key5 => 10});
1924

            
1925
$param = {key2 => 11, key3 => 33};
- update_param_tag is DEPREC...
Yuki Kimoto authored on 2011-06-07
1926
$update_param = $dbi->update_param($param, {no_set => 1});
added EXPERIMENTAL updat_par...
Yuki Kimoto authored on 2011-03-30
1927
$sql = <<"EOS";
- update_param_tag is DEPREC...
Yuki Kimoto authored on 2011-06-07
1928
update table1 set $update_param
added EXPERIMENTAL updat_par...
Yuki Kimoto authored on 2011-03-30
1929
where key1 = 1
1930
EOS
1931
$dbi->execute($sql, param => $param);
- update_param_tag is DEPREC...
Yuki Kimoto authored on 2011-06-07
1932
$result = $dbi->execute($SELECT_SOURCES->{0}, table => 'table1');
added EXPERIMENTAL updat_par...
Yuki Kimoto authored on 2011-03-30
1933
$rows   = $result->fetch_hash_all;
1934
is_deeply($rows, [{key1 => 1, key2 => 11, key3 => 33, key4 => 4, key5 => 5},
1935
                  {key1 => 6, key2 => 7,  key3 => 8, key4 => 9, key5 => 10}],
1936
                  "update param no_set");
1937

            
1938
            
- update_param_tag is DEPREC...
Yuki Kimoto authored on 2011-06-07
1939
eval { $dbi->update_param({";" => 1}) };
added experimental update_pa...
Yuki Kimoto authored on 2011-03-08
1940
like($@, qr/not safety/);
1941

            
1942

            
- update_param_tag is DEPREC...
Yuki Kimoto authored on 2011-06-07
1943
test 'update_param';
added EXPERIMENTAL assign_ta...
Yuki Kimoto authored on 2011-04-26
1944
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1945
$dbi->execute($CREATE_TABLE->{1});
1946
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5});
1947
$dbi->insert(table => 'table1', param => {key1 => 6, key2 => 7, key3 => 8, key4 => 9, key5 => 10});
1948

            
1949
$param = {key2 => 11};
- update_param_tag is DEPREC...
Yuki Kimoto authored on 2011-06-07
1950
$update_param = $dbi->assign_param($param);
added EXPERIMENTAL assign_ta...
Yuki Kimoto authored on 2011-04-26
1951
$sql = <<"EOS";
- update_param_tag is DEPREC...
Yuki Kimoto authored on 2011-06-07
1952
update table1 set $update_param
added EXPERIMENTAL assign_ta...
Yuki Kimoto authored on 2011-04-26
1953
where key1 = 1
1954
EOS
- update_param_tag is DEPREC...
Yuki Kimoto authored on 2011-06-07
1955
$dbi->execute($sql, param => $param, table => 'table1');
added EXPERIMENTAL assign_ta...
Yuki Kimoto authored on 2011-04-26
1956
$result = $dbi->execute($SELECT_SOURCES->{0});
1957
$rows   = $result->fetch_hash_all;
1958
is_deeply($rows, [{key1 => 1, key2 => 11, key3 => 3, key4 => 4, key5 => 5},
1959
                  {key1 => 6, key2 => 7,  key3 => 8, key4 => 9, key5 => 10}],
1960
                  "basic");
1961

            
1962

            
added experimental update_pa...
Yuki Kimoto authored on 2011-03-08
1963
test 'insert_param';
1964
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1965
$dbi->execute($CREATE_TABLE->{1});
added EXPERIMENTAL updat_par...
Yuki Kimoto authored on 2011-03-30
1966
$param = {key1 => 1, key2 => 2};
- update_param_tag is DEPREC...
Yuki Kimoto authored on 2011-06-07
1967
$insert_param = $dbi->insert_param($param);
added experimental update_pa...
Yuki Kimoto authored on 2011-03-08
1968
$sql = <<"EOS";
- update_param_tag is DEPREC...
Yuki Kimoto authored on 2011-06-07
1969
insert into table1 $insert_param
added experimental update_pa...
Yuki Kimoto authored on 2011-03-08
1970
EOS
- update_param_tag is DEPREC...
Yuki Kimoto authored on 2011-06-07
1971
$dbi->execute($sql, param => $param, table => 'table1');
added tests
Yuki Kimoto authored on 2011-06-08
1972
is($dbi->select(table => 'table1')->one->{key1}, 1);
1973
is($dbi->select(table => 'table1')->one->{key2}, 2);
added experimental update_pa...
Yuki Kimoto authored on 2011-03-08
1974

            
added EXPERIMENTAL updat_par...
Yuki Kimoto authored on 2011-03-30
1975
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1976
$dbi->reserved_word_quote('"');
1977
$dbi->execute($CREATE_TABLE->{1});
1978
$param = {key1 => 1, key2 => 2};
- update_param_tag is DEPREC...
Yuki Kimoto authored on 2011-06-07
1979
$insert_param = $dbi->insert_param($param);
added EXPERIMENTAL updat_par...
Yuki Kimoto authored on 2011-03-30
1980
$sql = <<"EOS";
- update_param_tag is DEPREC...
Yuki Kimoto authored on 2011-06-07
1981
insert into table1 $insert_param
added EXPERIMENTAL updat_par...
Yuki Kimoto authored on 2011-03-30
1982
EOS
- update_param_tag is DEPREC...
Yuki Kimoto authored on 2011-06-07
1983
$dbi->execute($sql, param => $param, table => 'table1');
added tests
Yuki Kimoto authored on 2011-06-08
1984
is($dbi->select(table => 'table1')->one->{key1}, 1);
1985
is($dbi->select(table => 'table1')->one->{key2}, 2);
add experimental DBIx::Custo...
Yuki Kimoto authored on 2011-02-22
1986

            
- update_param_tag is DEPREC...
Yuki Kimoto authored on 2011-06-07
1987
eval { $dbi->insert_param({";" => 1}) };
added experimental update_pa...
Yuki Kimoto authored on 2011-03-08
1988
like($@, qr/not safety/);
cleanup
Yuki Kimoto authored on 2011-03-08
1989

            
1990

            
- added experimental DBIx::C...
Yuki Kimoto authored on 2011-03-08
1991
test 'join';
cleanup
Yuki Kimoto authored on 2011-03-08
1992
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1993
$dbi->execute($CREATE_TABLE->{0});
1994
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
1995
$dbi->insert(table => 'table1', param => {key1 => 3, key2 => 4});
1996
$dbi->execute($CREATE_TABLE->{2});
1997
$dbi->insert(table => 'table2', param => {key1 => 1, key3 => 5});
- added experimental DBIx::C...
Yuki Kimoto authored on 2011-03-08
1998
$dbi->execute($CREATE_TABLE->{4});
1999
$dbi->insert(table => 'table3', param => {key3 => 5, key4 => 4});
cleanup
Yuki Kimoto authored on 2011-03-08
2000
$rows = $dbi->select(
2001
    table => 'table1',
2002
    column => 'table1.key1 as table1_key1, table2.key1 as table2_key1, key2, key3',
2003
    where   => {'table1.key2' => 2},
- added experimental DBIx::C...
Yuki Kimoto authored on 2011-03-08
2004
    join  => ['left outer join table2 on table1.key1 = table2.key1']
cleanup
Yuki Kimoto authored on 2011-03-08
2005
)->fetch_hash_all;
2006
is_deeply($rows, [{table1_key1 => 1, table2_key1 => 1, key2 => 2, key3 => 5}]);
2007

            
- added experimental DBIx::C...
Yuki Kimoto authored on 2011-03-08
2008
$rows = $dbi->select(
2009
    table => 'table1',
2010
    where   => {'key1' => 1},
2011
    join  => ['left outer join table2 on table1.key1 = table2.key1']
2012
)->fetch_hash_all;
2013
is_deeply($rows, [{key1 => 1, key2 => 2}]);
2014

            
cleanup
Yuki Kimoto authored on 2011-03-08
2015
eval {
2016
    $rows = $dbi->select(
2017
        table => 'table1',
2018
        column => 'table1.key1 as table1_key1, table2.key1 as table2_key1, key2, key3',
2019
        where   => {'table1.key2' => 2},
- added experimental DBIx::C...
Yuki Kimoto authored on 2011-03-08
2020
        join  => {'table1.key1' => 'table2.key1'}
cleanup
Yuki Kimoto authored on 2011-03-08
2021
    );
2022
};
2023
like ($@, qr/array/);
- added experimental DBIx::C...
Yuki Kimoto authored on 2011-03-08
2024

            
2025
$rows = $dbi->select(
2026
    table => 'table1',
2027
    where   => {'key1' => 1},
2028
    join  => ['left outer join table2 on table1.key1 = table2.key1',
2029
              'left outer join table3 on table2.key3 = table3.key3']
2030
)->fetch_hash_all;
2031
is_deeply($rows, [{key1 => 1, key2 => 2}]);
2032

            
2033
$rows = $dbi->select(
2034
    column => 'table3.key4 as table3__key4',
2035
    table => 'table1',
2036
    where   => {'table1.key1' => 1},
2037
    join  => ['left outer join table2 on table1.key1 = table2.key1',
2038
              'left outer join table3 on table2.key3 = table3.key3']
2039
)->fetch_hash_all;
2040
is_deeply($rows, [{table3__key4 => 4}]);
2041

            
2042
$rows = $dbi->select(
2043
    column => 'table1.key1 as table1__key1',
2044
    table => 'table1',
2045
    where   => {'table3.key4' => 4},
2046
    join  => ['left outer join table2 on table1.key1 = table2.key1',
2047
              'left outer join table3 on table2.key3 = table3.key3']
2048
)->fetch_hash_all;
2049
is_deeply($rows, [{table1__key1 => 1}]);
- added experimental DBIx::C...
Yuki Kimoto authored on 2011-03-11
2050

            
added EXPERIMENTAL reserved_...
Yuki Kimoto authored on 2011-03-30
2051
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
2052
$dbi->reserved_word_quote('"');
2053
$dbi->execute($CREATE_TABLE->{0});
2054
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
2055
$dbi->execute($CREATE_TABLE->{2});
2056
$dbi->insert(table => 'table2', param => {key1 => 1, key3 => 5});
2057
$rows = $dbi->select(
2058
    table => 'table1',
2059
    column => '"table1"."key1" as "table1_key1", "table2"."key1" as "table2_key1", "key2", "key3"',
2060
    where   => {'table1.key2' => 2},
2061
    join  => ['left outer join "table2" on "table1"."key1" = "table2"."key1"'],
2062
)->fetch_hash_all;
2063
is_deeply($rows, [{table1_key1 => 1, table2_key1 => 1, key2 => 2, key3 => 5}],
2064
          'reserved_word_quote');
- added experimental DBIx::C...
Yuki Kimoto authored on 2011-03-11
2065

            
2066
{
2067
    package MyDBI8;
2068
    
2069
    use base 'DBIx::Custom';
2070
    
2071
    sub connect {
2072
        my $self = shift->SUPER::connect(@_);
2073
        
2074
        $self->include_model('MyModel7');
2075
        
2076
        return $self;
2077
    }
2078
}
added select() all_column op...
Yuki Kimoto authored on 2011-03-12
2079

            
data_source is DEPRECATED! I...
Yuki Kimoto authored on 2011-06-06
2080
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
2081
$dbi->execute($CREATE_TABLE->{0});
2082
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
2083
$sql = <<"EOS";
2084
left outer join (
2085
  select * from table1 as t1
2086
  where t1.key2 = (
2087
    select max(t2.key2) from table1 as t2
2088
    where t1.key1 = t2.key1
2089
  )
2090
) as latest_table1 on table1.key1 = latest_table1.key1
2091
EOS
2092
$join = [$sql];
2093
$rows = $dbi->select(
2094
    table => 'table1',
2095
    column => 'latest_table1.key1 as latest_table1__key1',
2096
    join  => $join
2097
)->fetch_hash_all;
2098
is_deeply($rows, [{latest_table1__key1 => 1}]);
2099

            
- added EXPERIMENTAL DBIx::C...
Yuki Kimoto authored on 2011-03-15
2100
test 'mycolumn';
2101
$dbi = MyDBI8->connect($NEW_ARGS->{0});
- added EXPERIMENTAL DBIx::C...
Yuki Kimoto authored on 2011-03-14
2102
$dbi->execute($CREATE_TABLE->{0});
- added EXPERIMENTAL DBIx::C...
Yuki Kimoto authored on 2011-03-15
2103
$dbi->execute($CREATE_TABLE->{2});
2104
$dbi->setup_model;
2105
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
2106
$dbi->insert(table => 'table2', param => {key1 => 1, key3 => 3});
2107
$model = $dbi->model('table1');
2108
$result = $model->select_at(
2109
    column => [
2110
        $model->mycolumn,
2111
        $model->column('table2')
2112
    ]
- added EXPERIMENTAL DBIx::C...
Yuki Kimoto authored on 2011-03-14
2113
);
added tests
Yuki Kimoto authored on 2011-06-08
2114
is_deeply($result->one,
- added EXPERIMENTAL DBIx::C...
Yuki Kimoto authored on 2011-03-15
2115
          {key1 => 1, key2 => 2, table2__key1 => 1, table2__key3 => 3});
- select() column option can...
Yuki Kimoto authored on 2011-06-07
2116

            
- added EXPERIMENTAL DBIx::C...
Yuki Kimoto authored on 2011-03-15
2117
$result = $model->select_at(
2118
    column => [
2119
        $model->mycolumn(['key1']),
2120
        $model->column(table2 => ['key1'])
2121
    ]
2122
);
added tests
Yuki Kimoto authored on 2011-06-08
2123
is_deeply($result->one,
- added EXPERIMENTAL DBIx::C...
Yuki Kimoto authored on 2011-03-15
2124
          {key1 => 1, table2__key1 => 1});
- select() column option can...
Yuki Kimoto authored on 2011-06-07
2125
$result = $model->select_at(
2126
    column => [
2127
        $model->mycolumn(['key1']),
2128
        {table2 => ['key1']}
2129
    ]
2130
);
added tests
Yuki Kimoto authored on 2011-06-08
2131
is_deeply($result->one,
- select() EXPERIMETNAL colu...
Yuki Kimoto authored on 2011-06-08
2132
          {key1 => 1, 'table2.key1' => 1});
- select() column option can...
Yuki Kimoto authored on 2011-06-07
2133

            
- select() column option can...
Yuki Kimoto authored on 2011-06-08
2134
$result = $model->select_at(
2135
    column => [
2136
        $model->mycolumn(['key1']),
2137
        ['table2.key1', as => 'table2.key1']
2138
    ]
2139
);
2140
is_deeply($result->one,
2141
          {key1 => 1, 'table2.key1' => 1});
2142

            
2143
eval{
2144
    $result = $model->select_at(
2145
        column => [
2146
            ['table2.key1', asaaaa => 'table2.key1']
2147
        ]
2148
    );
2149
};
2150
like($@, qr/COLUMN/);
2151

            
- added EXPERIMENTAL DBIx::C...
Yuki Kimoto authored on 2011-03-15
2152
test 'dbi method from model';
- added EXPERIMENTAL DBIx::C...
Yuki Kimoto authored on 2011-03-14
2153
{
2154
    package MyDBI9;
2155
    
2156
    use base 'DBIx::Custom';
2157
    
2158
    sub connect {
2159
        my $self = shift->SUPER::connect(@_);
2160
        
2161
        $self->include_model('MyModel8')->setup_model;
2162
        
2163
        return $self;
2164
    }
2165
}
2166
$dbi = MyDBI9->connect($NEW_ARGS->{0});
2167
$dbi->execute($CREATE_TABLE->{0});
- added EXPERIMENTAL DBIx::C...
Yuki Kimoto authored on 2011-03-15
2168
$model = $dbi->model('table1');
2169
eval{$model->execute('select * from table1')};
2170
ok(!$@);
2171

            
2172
test 'table_alias';
2173
$dbi = MyDBI9->connect($NEW_ARGS->{0});
2174
$dbi->execute($CREATE_TABLE->{0});
2175
$dbi->execute($CREATE_TABLE->{2});
2176
$dbi->setup_model;
2177
$dbi->execute('insert into table1 (key1, key2) values (1, 2);');
2178
$dbi->execute('insert into table2 (key1, key3) values (1, 4);');
2179
$model = $dbi->model('table1');
2180
$result = $model->select(
2181
    column => [
2182
        $model->column('table2_alias')
2183
    ],
2184
    where => {'table2_alias.key3' => 2}
2185
);
added tests
Yuki Kimoto authored on 2011-06-08
2186
is_deeply($result->one, 
- added EXPERIMENTAL DBIx::C...
Yuki Kimoto authored on 2011-03-15
2187
          {table2_alias__key1 => 1, table2_alias__key3 => 48});
2188

            
- added EXPERIMENTAL type() ...
Yuki Kimoto authored on 2011-03-21
2189
test 'type() option';
2190
$dbi = DBIx::Custom->connect(
2191
    data_source => 'dbi:SQLite:dbname=:memory:',
2192
    dbi_option => {
2193
        $DBD::SQLite::VERSION > 1.26 ? (sqlite_unicode => 1) : (unicode => 1)
2194
    }
2195
);
2196
my $binary = pack("I3", 1, 2, 3);
2197
$dbi->execute('create table table1(key1, key2)');
2198
$dbi->insert(table => 'table1', param => {key1 => $binary, key2 => 'あ'}, type => [key1 => DBI::SQL_BLOB]);
2199
$result = $dbi->select(table => 'table1');
added tests
Yuki Kimoto authored on 2011-06-08
2200
$row   = $result->one;
- added EXPERIMENTAL type() ...
Yuki Kimoto authored on 2011-03-21
2201
is_deeply($row, {key1 => $binary, key2 => 'あ'}, "basic");
2202
$result = $dbi->execute('select length(key1) as key1_length from table1');
added tests
Yuki Kimoto authored on 2011-06-08
2203
$row = $result->one;
- added EXPERIMENTAL type() ...
Yuki Kimoto authored on 2011-03-21
2204
is($row->{key1_length}, length $binary);
2205

            
2206
$dbi->insert(table => 'table1', param => {key1 => $binary, key2 => 'あ'}, type => [['key1'] => DBI::SQL_BLOB]);
2207
$result = $dbi->select(table => 'table1');
added tests
Yuki Kimoto authored on 2011-06-08
2208
$row   = $result->one;
- added EXPERIMENTAL type() ...
Yuki Kimoto authored on 2011-03-21
2209
is_deeply($row, {key1 => $binary, key2 => 'あ'}, "basic");
2210
$result = $dbi->execute('select length(key1) as key1_length from table1');
added tests
Yuki Kimoto authored on 2011-06-08
2211
$row = $result->one;
- added EXPERIMENTAL type() ...
Yuki Kimoto authored on 2011-03-21
2212
is($row->{key1_length}, length $binary);
2213

            
removed EXPERIMETNAL flag fr...
Yuki Kimoto authored on 2011-03-25
2214
test 'create_model';
2215
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
2216
$dbi->execute($CREATE_TABLE->{0});
2217
$dbi->execute($CREATE_TABLE->{2});
2218

            
2219
$dbi->create_model(
2220
    table => 'table1',
2221
    join => [
2222
       'left outer join table2 on table1.key1 = table2.key1'
2223
    ],
2224
    primary_key => ['key1']
2225
);
create_model() return model
Yuki Kimoto authored on 2011-03-29
2226
$model2 = $dbi->create_model(
removed EXPERIMETNAL flag fr...
Yuki Kimoto authored on 2011-03-25
2227
    table => 'table2'
2228
);
2229
$dbi->create_model(
2230
    table => 'table3',
2231
    filter => [
2232
        key1 => {in => sub { uc $_[0] }}
2233
    ]
2234
);
2235
$dbi->setup_model;
2236
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
2237
$dbi->insert(table => 'table2', param => {key1 => 1, key3 => 3});
2238
$model = $dbi->model('table1');
2239
$result = $model->select(
2240
    column => [$model->mycolumn, $model->column('table2')],
2241
    where => {'table1.key1' => 1}
2242
);
added tests
Yuki Kimoto authored on 2011-06-08
2243
is_deeply($result->one,
removed EXPERIMETNAL flag fr...
Yuki Kimoto authored on 2011-03-25
2244
          {key1 => 1, key2 => 2, 'table2__key1' => 1, 'table2__key3' => 3});
added tests
Yuki Kimoto authored on 2011-06-08
2245
is_deeply($model2->select->one, {key1 => 1, key3 => 3});
removed EXPERIMETNAL flag fr...
Yuki Kimoto authored on 2011-03-25
2246

            
adeed EXPERIMENTAL DBIx::Cus...
Yuki Kimoto authored on 2011-03-29
2247
test 'model method';
2248
test 'create_model';
2249
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
2250
$dbi->execute($CREATE_TABLE->{2});
2251
$dbi->insert(table => 'table2', param => {key1 => 1, key3 => 3});
2252
$model = $dbi->create_model(
2253
    table => 'table2'
2254
);
2255
$model->method(foo => sub { shift->select(@_) });
added tests
Yuki Kimoto authored on 2011-06-08
2256
is_deeply($model->foo->one, {key1 => 1, key3 => 3});
added EXPERIMENTAL updat_par...
Yuki Kimoto authored on 2011-03-30
2257

            
2258
test 'merge_param';
2259
{
2260
    my $dbi = DBIx::Custom->new;
2261
    my $param1 = {key1 => 1, key2 => 2, key3 => 3};
2262
    my $param2 = {key1 => 1, key2 => 2};
2263
    my $param3 = {key1 => 1};
2264
    my $param = $dbi->merge_param($param1, $param2, $param3);
2265
    is_deeply($param, {key1 => [1, 1, 1], key2 => [2, 2], key3 => 3});
cleanup
Yuki Kimoto authored on 2011-04-01
2266
}
2267

            
fixed merge_param bug
Yuki Kimoto authored on 2011-05-23
2268
{
2269
    my $dbi = DBIx::Custom->new;
2270
    my $param1 = {key1 => [1, 2], key2 => 1, key3 => [1, 2]};
2271
    my $param2 = {key1 => [3, 4], key2 => [2, 3], key3 => 3};
2272
    my $param = $dbi->merge_param($param1, $param2);
2273
    is_deeply($param, {key1 => [1, 2, 3, 4], key2 => [1, 2, 3], key3 => [1, 2, 3]});
2274
}
2275

            
cleanup
Yuki Kimoto authored on 2011-04-01
2276
test 'select() param option';
2277
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
2278
$dbi->execute($CREATE_TABLE->{0});
2279
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
2280
$dbi->insert(table => 'table1', param => {key1 => 2, key2 => 3});
2281
$dbi->execute($CREATE_TABLE->{2});
2282
$dbi->insert(table => 'table2', param => {key1 => 1, key3 => 4});
2283
$dbi->insert(table => 'table2', param => {key1 => 2, key3 => 5});
2284
$rows = $dbi->select(
2285
    table => 'table1',
2286
    column => 'table1.key1 as table1_key1, key2, key3',
2287
    where   => {'table1.key2' => 3},
2288
    join  => ['inner join (select * from table2 where {= table2.key3})' . 
2289
              ' as table2 on table1.key1 = table2.key1'],
2290
    param => {'table2.key3' => 5}
2291
)->fetch_hash_all;
2292
is_deeply($rows, [{table1_key1 => 2, key2 => 3, key3 => 5}]);
2293

            
added EXPERIMENTAL select() ...
Yuki Kimoto authored on 2011-04-19
2294

            
2295
test 'select() wrap option';
2296
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
2297
$dbi->execute($CREATE_TABLE->{0});
2298
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
2299
$dbi->insert(table => 'table1', param => {key1 => 2, key2 => 3});
2300
$rows = $dbi->select(
2301
    table => 'table1',
2302
    column => 'key1',
2303
    wrap => ['select * from (', ') as t where key1 = 1']
2304
)->fetch_hash_all;
2305
is_deeply($rows, [{key1 => 1}]);
2306

            
2307
eval {
2308
$dbi->select(
2309
    table => 'table1',
2310
    column => 'key1',
2311
    wrap => 'select * from ('
2312
)
2313
};
cleanup
Yuki Kimoto authored on 2011-04-25
2314
like($@, qr/array/);
2315

            
2316
test 'select() string where';
2317
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
2318
$dbi->execute($CREATE_TABLE->{0});
2319
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
2320
$dbi->insert(table => 'table1', param => {key1 => 2, key2 => 3});
2321
$rows = $dbi->select(
2322
    table => 'table1',
select, update, and delete w...
Yuki Kimoto authored on 2011-04-25
2323
    where => '{= key1} and {= key2}',
DEPRECATED select() param op...
Yuki Kimoto authored on 2011-04-25
2324
    where_param => {key1 => 1, key2 => 2}
cleanup
Yuki Kimoto authored on 2011-04-25
2325
)->fetch_hash_all;
2326
is_deeply($rows, [{key1 => 1, key2 => 2}]);
select, update, and delete w...
Yuki Kimoto authored on 2011-04-25
2327

            
2328
test 'delete() string where';
2329
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
2330
$dbi->execute($CREATE_TABLE->{0});
2331
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
2332
$dbi->insert(table => 'table1', param => {key1 => 2, key2 => 3});
2333
$dbi->delete(
2334
    table => 'table1',
2335
    where => '{= key1} and {= key2}',
DEPRECATED select() param op...
Yuki Kimoto authored on 2011-04-25
2336
    where_param => {key1 => 1, key2 => 2}
select, update, and delete w...
Yuki Kimoto authored on 2011-04-25
2337
);
2338
$rows = $dbi->select(table => 'table1')->fetch_hash_all;
2339
is_deeply($rows, [{key1 => 2, key2 => 3}]);
2340

            
2341

            
2342
test 'update() string where';
2343
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
2344
$dbi->execute($CREATE_TABLE->{0});
2345
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
2346
$dbi->update(
2347
    table => 'table1',
DEPRECATED select() param op...
Yuki Kimoto authored on 2011-04-25
2348
    param => {key1 => 5},
2349
    where => '{= key1} and {= key2}',
2350
    where_param => {key1 => 1, key2 => 2}
select, update, and delete w...
Yuki Kimoto authored on 2011-04-25
2351
);
2352
$rows = $dbi->select(table => 'table1')->fetch_hash_all;
2353
is_deeply($rows, [{key1 => 5, key2 => 2}]);
- update_param_tag is DEPREC...
Yuki Kimoto authored on 2011-06-07
2354

            
cleanup
Yuki Kimoto authored on 2011-06-08
2355

            
insert_at is DEPRECATED! add...
Yuki Kimoto authored on 2011-06-08
2356
test 'insert id and primary_key option';
2357
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
2358
$dbi->execute($CREATE_TABLE->{1});
2359
$dbi->insert(
2360
    primary_key => ['key1', 'key2'], 
2361
    table => 'table1',
2362
    id => [1, 2],
2363
    param => {key3 => 3}
2364
);
2365
is($dbi->select(table => 'table1')->one->{key1}, 1);
2366
is($dbi->select(table => 'table1')->one->{key2}, 2);
2367
is($dbi->select(table => 'table1')->one->{key3}, 3);
2368

            
2369
$dbi->delete_all(table => 'table1');
2370
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
2371
$dbi->insert(
2372
    primary_key => 'key1', 
2373
    table => 'table1',
2374
    id => 1,
2375
    param => {key2 => 2, key3 => 3}
2376
);
2377

            
2378
is($dbi->select(table => 'table1')->one->{key1}, 1);
2379
is($dbi->select(table => 'table1')->one->{key2}, 2);
2380
is($dbi->select(table => 'table1')->one->{key3}, 3);
2381

            
2382
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
2383
$dbi->execute($CREATE_TABLE->{1});
2384
$dbi->insert(
2385
    {key3 => 3},
2386
    primary_key => ['key1', 'key2'], 
2387
    table => 'table1',
2388
    id => [1, 2],
2389
);
2390
is($dbi->select(table => 'table1')->one->{key1}, 1);
2391
is($dbi->select(table => 'table1')->one->{key2}, 2);
2392
is($dbi->select(table => 'table1')->one->{key3}, 3);
2393

            
cleanup
Yuki Kimoto authored on 2011-06-08
2394

            
added tests
Yuki Kimoto authored on 2011-06-08
2395
test 'model insert id and primary_key option';
2396
$dbi = MyDBI6->connect($NEW_ARGS->{0});
2397
$dbi->execute($CREATE_TABLE->{1});
2398
$dbi->model('table1')->insert(
2399
    id => [1, 2],
2400
    param => {key3 => 3}
2401
);
2402
$result = $dbi->model('table1')->select;
2403
$row = $result->one;
2404
is($row->{key1}, 1);
2405
is($row->{key2}, 2);
2406
is($row->{key3}, 3);
2407

            
- fixed bug that model inser...
Yuki Kimoto authored on 2011-06-10
2408
$dbi = MyDBI6->connect($NEW_ARGS->{0});
2409
$dbi->execute($CREATE_TABLE->{1});
2410
$dbi->model('table1')->insert(
2411
    {key3 => 3},
2412
    id => [1, 2]
2413
);
2414
$result = $dbi->model('table1')->select;
2415
$row = $result->one;
2416
is($row->{key1}, 1);
2417
is($row->{key2}, 2);
2418
is($row->{key3}, 3);
2419

            
update_at is DEPRECATED! use...
Yuki Kimoto authored on 2011-06-08
2420
test 'update and id option';
2421
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
2422
$dbi->execute($CREATE_TABLE->{1});
2423
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
2424
$dbi->update(
2425
    table => 'table1',
2426
    primary_key => ['key1', 'key2'],
2427
    id => [1, 2],
2428
    param => {key3 => 4}
2429
);
2430
is($dbi->select(table => 'table1')->one->{key1}, 1);
2431
is($dbi->select(table => 'table1')->one->{key2}, 2);
2432
is($dbi->select(table => 'table1')->one->{key3}, 4);
2433

            
2434
$dbi->delete_all(table => 'table1');
2435
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
2436
$dbi->update(
2437
    table => 'table1',
2438
    primary_key => 'key1',
2439
    id => 1,
2440
    param => {key3 => 4}
2441
);
2442
is($dbi->select(table => 'table1')->one->{key1}, 1);
2443
is($dbi->select(table => 'table1')->one->{key2}, 2);
2444
is($dbi->select(table => 'table1')->one->{key3}, 4);
2445

            
2446
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
2447
$dbi->execute($CREATE_TABLE->{1});
2448
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
2449
$dbi->update(
2450
    {key3 => 4},
2451
    table => 'table1',
2452
    primary_key => ['key1', 'key2'],
2453
    id => [1, 2]
2454
);
2455
is($dbi->select(table => 'table1')->one->{key1}, 1);
2456
is($dbi->select(table => 'table1')->one->{key2}, 2);
2457
is($dbi->select(table => 'table1')->one->{key3}, 4);
2458

            
2459

            
delete_at is DEPRECATED! use...
Yuki Kimoto authored on 2011-06-08
2460
test 'model update and id option';
update_at is DEPRECATED! use...
Yuki Kimoto authored on 2011-06-08
2461
$dbi = MyDBI6->connect($NEW_ARGS->{0});
2462
$dbi->execute($CREATE_TABLE->{1});
2463
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
2464
$dbi->model('table1')->update(
2465
    id => [1, 2],
2466
    param => {key3 => 4}
2467
);
2468
$result = $dbi->model('table1')->select;
2469
$row = $result->one;
2470
is($row->{key1}, 1);
2471
is($row->{key2}, 2);
2472
is($row->{key3}, 4);
added tests
Yuki Kimoto authored on 2011-06-08
2473

            
delete_at is DEPRECATED! use...
Yuki Kimoto authored on 2011-06-08
2474

            
2475
test 'delete and id option';
2476
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
2477
$dbi->execute($CREATE_TABLE->{1});
2478
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
2479
$dbi->delete(
2480
    table => 'table1',
2481
    primary_key => ['key1', 'key2'],
2482
    id => [1, 2],
2483
);
2484
is_deeply($dbi->select(table => 'table1')->fetch_hash_all, []);
2485

            
2486
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
2487
$dbi->delete(
2488
    table => 'table1',
2489
    primary_key => 'key1',
2490
    id => 1,
2491
);
2492
is_deeply($dbi->select(table => 'table1')->fetch_hash_all, []);
2493

            
2494

            
2495
test 'model delete and id option';
2496
$dbi = MyDBI6->connect($NEW_ARGS->{0});
2497
$dbi->execute($CREATE_TABLE->{1});
2498
$dbi->execute("create table table2 (key1, key2, key3)");
2499
$dbi->execute("create table table3 (key1, key2, key3)");
2500
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
2501
$dbi->model('table1')->delete(id => [1, 2]);
2502
is_deeply($dbi->select(table => 'table1')->fetch_hash_all, []);
2503
$dbi->insert(table => 'table2', param => {key1 => 1, key2 => 2, key3 => 3});
2504
$dbi->model('table1_1')->delete(id => [1, 2]);
2505
is_deeply($dbi->select(table => 'table1')->fetch_hash_all, []);
2506
$dbi->insert(table => 'table3', param => {key1 => 1, key2 => 2, key3 => 3});
2507
$dbi->model('table1_3')->delete(id => [1, 2]);
2508
is_deeply($dbi->select(table => 'table1')->fetch_hash_all, []);
2509

            
select_at is DEPRECATED! use...
Yuki Kimoto authored on 2011-06-08
2510

            
2511
test 'select and id option';
2512
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
2513
$dbi->execute($CREATE_TABLE->{1});
2514
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
2515
$result = $dbi->select(
2516
    table => 'table1',
2517
    primary_key => ['key1', 'key2'],
2518
    id => [1, 2]
2519
);
2520
$row = $result->one;
2521
is($row->{key1}, 1);
2522
is($row->{key2}, 2);
2523
is($row->{key3}, 3);
2524

            
2525
$dbi->delete_all(table => 'table1');
2526
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
2527
$result = $dbi->select(
2528
    table => 'table1',
2529
    primary_key => 'key1',
2530
    id => 1,
2531
);
2532
$row = $result->one;
2533
is($row->{key1}, 1);
2534
is($row->{key2}, 2);
2535
is($row->{key3}, 3);
2536

            
2537
$dbi->delete_all(table => 'table1');
2538
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
2539
$result = $dbi->select(
2540
    table => 'table1',
2541
    primary_key => ['key1', 'key2'],
2542
    id => [1, 2]
2543
);
2544
$row = $result->one;
2545
is($row->{key1}, 1);
2546
is($row->{key2}, 2);
2547
is($row->{key3}, 3);
2548

            
2549

            
2550
test 'model select_at';
2551
$dbi = MyDBI6->connect($NEW_ARGS->{0});
2552
$dbi->execute($CREATE_TABLE->{1});
2553
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
2554
$result = $dbi->model('table1')->select(id => [1, 2]);
2555
$row = $result->one;
2556
is($row->{key1}, 1);
2557
is($row->{key2}, 2);
2558
is($row->{key3}, 3);
2559

            
added EXPERIMENTAL col metho...
Yuki Kimoto authored on 2011-06-08
2560
test 'col';
2561
$dbi = MyDBI7->connect($NEW_ARGS->{0});
2562
$dbi->execute($CREATE_TABLE->{0});
2563
$dbi->execute($CREATE_TABLE->{2});
2564
$dbi->setup_model;
2565
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
2566
$dbi->insert(table => 'table2', param => {key1 => 1, key3 => 3});
2567
$model = $dbi->model('table1');
2568
$result = $model->select(
2569
    column => [$model->col('table2')],
2570
    where => {'table1.key1' => 1}
2571
);
2572
is_deeply($result->one,
2573
          {'table2.key1' => 1, 'table2.key3' => 3});
2574

            
2575
$result = $model->select(
2576
    column => [$model->col('table2' => [qw/key1 key3/])],
2577
    where => {'table1.key1' => 1}
2578
);
2579
is_deeply($result->one,
2580
          {'table2.key1' => 1, 'table2.key3' => 3});
2581

            
added type_rule method and f...
Yuki Kimoto authored on 2011-06-09
2582

            
2583
test 'type_rule from';
2584
$dbi = DBIx::Custom->connect(dsn => 'dbi:SQLite:dbname=:memory:');
2585
$dbi->type_rule(
changed type_rule arguments ...
Yuki Kimoto authored on 2011-06-12
2586
    from => {
2587
        Date => sub { uc $_[0] }
added type_rule method and f...
Yuki Kimoto authored on 2011-06-09
2588
    }
2589
);
2590
$dbi->execute("create table table1 (key1 Date, key2 datetime)");
2591
$dbi->insert({key1 => 'a'}, table => 'table1');
2592
$result = $dbi->select(table => 'table1');
2593
is($result->fetch_first->[0], 'A');
2594

            
2595
$result = $dbi->select(table => 'table1');
2596
is($result->one->{key1}, 'A');
2597

            
added type_rule into logic
Yuki Kimoto authored on 2011-06-09
2598

            
2599
test 'type_rule into';
2600
$dbi = DBIx::Custom->connect(dsn => 'dbi:SQLite:dbname=:memory:');
2601
$dbi->execute("create table table1 (key1 Date, key2 datetime)");
2602
$dbi->type_rule(
changed type_rule arguments ...
Yuki Kimoto authored on 2011-06-12
2603
    into => {
2604
        Date => sub { uc $_[0] }
added type_rule into logic
Yuki Kimoto authored on 2011-06-09
2605
    }
2606
);
2607
$dbi->insert({key1 => 'a'}, table => 'table1');
2608
$result = $dbi->select(table => 'table1');
2609
is($result->one->{key1}, 'A');
2610

            
2611
$dbi = DBIx::Custom->connect(dsn => 'dbi:SQLite:dbname=:memory:');
2612
$dbi->execute("create table table1 (key1 Date, key2 datetime)");
2613
$dbi->type_rule(
changed type_rule arguments ...
Yuki Kimoto authored on 2011-06-12
2614
    into => [
2615
         [qw/Date datetime/] => sub { uc $_[0] }
2616
    ]
added type_rule into logic
Yuki Kimoto authored on 2011-06-09
2617
);
2618
$dbi->insert({key1 => 'a', key2 => 'b'}, table => 'table1');
2619
$result = $dbi->select(table => 'table1');
2620
$row = $result->one;
2621
is($row->{key1}, 'A');
2622
is($row->{key2}, 'B');
2623

            
2624
$dbi = DBIx::Custom->connect(dsn => 'dbi:SQLite:dbname=:memory:');
2625
$dbi->execute("create table table1 (key1 Date, key2 datetime)");
2626
$dbi->insert({key1 => 'a', key2 => 'B'}, table => 'table1');
2627
$dbi->type_rule(
changed type_rule arguments ...
Yuki Kimoto authored on 2011-06-12
2628
    into => [
2629
        [qw/Date datetime/] => sub { uc $_[0] }
2630
    ]
added type_rule into logic
Yuki Kimoto authored on 2011-06-09
2631
);
2632
$result = $dbi->execute(
2633
    "select * from table1 where key1 = :key1 and key2 = :table1.key2;",
2634
    param => {key1 => 'a', 'table1.key2' => 'b'}
2635
);
2636
$row = $result->one;
2637
is($row->{key1}, 'a');
2638
is($row->{key2}, 'B');
2639

            
2640
$dbi = DBIx::Custom->connect(dsn => 'dbi:SQLite:dbname=:memory:');
2641
$dbi->execute("create table table1 (key1 Date, key2 datetime)");
2642
$dbi->insert({key1 => 'A', key2 => 'B'}, table => 'table1');
2643
$dbi->type_rule(
changed type_rule arguments ...
Yuki Kimoto authored on 2011-06-12
2644
    into => [
2645
        [qw/Date datetime/] => sub { uc $_[0] }
2646
    ]
added type_rule into logic
Yuki Kimoto authored on 2011-06-09
2647
);
2648
$result = $dbi->execute(
2649
    "select * from table1 where key1 = :key1 and key2 = :table1.key2;",
2650
    param => {key1 => 'a', 'table1.key2' => 'b'},
2651
    table => 'table1'
2652
);
2653
$row = $result->one;
2654
is($row->{key1}, 'A');
2655
is($row->{key2}, 'B');
2656

            
fixed bug that type_rule fro...
Yuki Kimoto authored on 2011-06-13
2657
$dbi = DBIx::Custom->connect(dsn => 'dbi:SQLite:dbname=:memory:');
2658
$dbi->execute("create table table1 (key1 Date, key2 datetime)");
2659
$dbi->register_filter(twice => sub { $_[0] * 2 });
2660
$dbi->type_rule(
2661
    from => {
2662
        Date => 'twice',
2663
    },
2664
    into => {
2665
        Date => 'twice',
2666
    }
2667
);
2668
$dbi->insert({key1 => 2}, table => 'table1');
2669
$result = $dbi->select(table => 'table1');
2670
is($result->fetch->[0], 8);
2671

            
added EXPERIMENTAL execute()...
Yuki Kimoto authored on 2011-06-09
2672

            
2673
test 'type_rule_off';
2674
$dbi = DBIx::Custom->connect(dsn => 'dbi:SQLite:dbname=:memory:');
2675
$dbi->execute("create table table1 (key1 Date, key2 datetime)");
2676
$dbi->type_rule(
changed type_rule arguments ...
Yuki Kimoto authored on 2011-06-12
2677
    from => {
2678
        Date => sub { $_[0] * 2 },
2679
    },
2680
    into => {
2681
        Date => sub { $_[0] * 2 },
added EXPERIMENTAL execute()...
Yuki Kimoto authored on 2011-06-09
2682
    }
2683
);
2684
$dbi->insert({key1 => 2}, table => 'table1', type_rule_off => 1);
2685
$result = $dbi->select(table => 'table1', type_rule_off => 1);
2686
is($result->fetch->[0], 2);
2687

            
2688
$dbi = DBIx::Custom->connect(dsn => 'dbi:SQLite:dbname=:memory:');
2689
$dbi->execute("create table table1 (key1 Date, key2 datetime)");
2690
$dbi->type_rule(
changed type_rule arguments ...
Yuki Kimoto authored on 2011-06-12
2691
    from => {
2692
        DATE => sub { $_[0] * 2 },
2693
    },
2694
    into => {
2695
        DATE => sub { $_[0] * 3 },
added EXPERIMENTAL execute()...
Yuki Kimoto authored on 2011-06-09
2696
    }
2697
);
2698
$dbi->insert({key1 => 2}, table => 'table1', type_rule_off => 1);
2699
$result = $dbi->select(table => 'table1', type_rule_off => 1);
2700
is($result->one->{key1}, 2);
2701

            
type_rule can receive filter...
Yuki Kimoto authored on 2011-06-12
2702
$dbi = DBIx::Custom->connect(dsn => 'dbi:SQLite:dbname=:memory:');
2703
$dbi->execute("create table table1 (key1 Date, key2 datetime)");
2704
$dbi->register_filter(ppp => sub { uc $_[0] });
2705
$dbi->type_rule(
2706
    into => {
2707
        Date => 'ppp'
2708
    }
2709
);
2710
$dbi->insert({key1 => 'a'}, table => 'table1');
2711
$result = $dbi->select(table => 'table1');
2712
is($result->one->{key1}, 'A');
2713

            
2714
eval{$dbi->type_rule(
2715
    into => {
2716
        Date => 'pp'
2717
    }
2718
)};
2719
like($@, qr/not registered/);
added DBIx::Custom result_fi...
Yuki Kimoto authored on 2011-06-12
2720

            
2721
test 'result_filter';
2722
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
2723
$dbi->execute($CREATE_TABLE->{0});
2724
$dbi->execute($CREATE_TABLE->{2});
2725

            
2726
$dbi->create_model(
2727
    table => 'table1',
2728
    join => [
2729
       'left outer join table2 on table1.key1 = table2.key1'
2730
    ],
2731
    primary_key => ['key1'],
2732
    result_filter => {
2733
        key1 => sub { $_[0] * 2 }
2734
    }
2735
);
2736
$model2 = $dbi->create_model(
2737
    table => 'table2',
2738
    result_filter => [
2739
        [qw/key1 key3/] => sub { $_[0] * 3 }
2740
    ]
2741
);
2742
$dbi->setup_model;
2743
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
2744
$dbi->insert(table => 'table2', param => {key1 => 1, key3 => 3});
2745
$model = $dbi->model('table1');
2746
$result = $model->select(
2747
    column => [
2748
        $model->mycolumn,
2749
        {table2 => [qw/key1 key3/]}
2750
    ],
2751
    where => {'table1.key1' => 1}
2752
);
2753
is_deeply($result->one,
2754
          {key1 => 2, key2 => 2, 'table2.key1' => 3, 'table2.key3' => 9});
2755
is_deeply($model2->select->one, {key1 => 3, key3 => 9});
2756

            
type_rule can receive filter...
Yuki Kimoto authored on 2011-06-12
2757
test 'filter_off';
2758
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
2759
$dbi->execute($CREATE_TABLE->{0});
2760
$dbi->execute($CREATE_TABLE->{2});
2761

            
2762
$dbi->create_model(
2763
    table => 'table1',
2764
    join => [
2765
       'left outer join table2 on table1.key1 = table2.key1'
2766
    ],
2767
    primary_key => ['key1'],
2768
    result_filter => {
2769
        key1 => sub { $_[0] * 2 }
2770
    },
2771
);
2772
$model2 = $dbi->create_model(
2773
    table => 'table2',
2774
    result_filter => [
2775
        [qw/key1 key3/] => sub { $_[0] * 3 }
2776
    ]
2777
);
2778
$dbi->setup_model;
2779
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
2780
$dbi->insert(table => 'table2', param => {key1 => 1, key3 => 3});
2781
$model = $dbi->model('table1');
2782
$result = $model->select(
2783
    column => [
2784
        $model->mycolumn,
2785
        {table2 => [qw/key1 key3/]}
2786
    ],
2787
    where => {'table1.key1' => 1}
2788
);
2789
$result->filter_off(1);
2790
$result->end_filter(key1 => sub { $_[0] * 5});
2791
is_deeply($result->one,
2792
          {key1 => 1, key2 => 2, 'table2.key1' => 1, 'table2.key3' => 3});
2793

            
2794
$result = $model->select(
2795
    column => [
2796
        $model->mycolumn,
2797
        {table2 => [qw/key1 key3/]}
2798
    ],
2799
    where => {'table1.key1' => 1}
2800
);
2801
$result->filter_off(1);
2802
$result->end_filter(key1 => sub { $_[0] * 5});
2803

            
2804
is_deeply($result->fetch_first,
2805
          [1, 2, 1, 3]);
2806

            
fixed bug that type_rule fro...
Yuki Kimoto authored on 2011-06-13
2807

            
2808
test 'available_date_type';
2809
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
2810
ok($dbi->can('available_data_type'));
2811

            
- update_param_tag is DEPREC...
Yuki Kimoto authored on 2011-06-07
2812
=cut