Showing 2 changed files with 164 additions and 132 deletions
+2
Changes
... ...
@@ -1,3 +1,5 @@
1
+0.1732
2
+    - removed EXPERIMETNAL flag from like_value
1 3
 0.1731
2 4
     - removed DEPRECATED status from insert method's id option
3 5
     - renamed EXPERIMENTAL insert_or_update to update_or_insert
+162 -132
lib/DBIx/Custom.pm
... ...
@@ -1,7 +1,7 @@
1 1
 package DBIx::Custom;
2 2
 use Object::Simple -base;
3 3
 
4
-our $VERSION = '0.1731';
4
+our $VERSION = '0.1732';
5 5
 use 5.008001;
6 6
 
7 7
 use Carp 'croak';
... ...
@@ -2151,14 +2151,6 @@ Note that L<DBIx::Connector> must be installed.
2151 2151
 
2152 2152
 Data source name, used when C<connect> method is executed.
2153 2153
 
2154
-=head2 C<option>
2155
-
2156
-    my $option = $dbi->option;
2157
-    $dbi = $dbi->option($option);
2158
-
2159
-L<DBI> option, used when C<connect> method is executed.
2160
-Each value in option override the value of C<default_option>.
2161
-
2162 2154
 =head2 C<default_option>
2163 2155
 
2164 2156
     my $default_option = $dbi->default_option;
... ...
@@ -2173,6 +2165,15 @@ default to the following values.
2173 2165
         AutoCommit => 1,
2174 2166
     }
2175 2167
 
2168
+=head2 C<exclude_table>
2169
+
2170
+    my $exclude_table = $dbi->exclude_table;
2171
+    $dbi = $dbi->exclude_table(qr/pg_/);
2172
+
2173
+Excluded table regex.
2174
+C<each_column>, C<each_table>, C<type_rule>,
2175
+and C<setup_model> methods ignore matching tables.
2176
+
2176 2177
 =head2 C<filters>
2177 2178
 
2178 2179
     my $filters = $dbi->filters;
... ...
@@ -2194,6 +2195,14 @@ Get last successed SQL executed by C<execute> method.
2194 2195
 
2195 2196
 Models, included by C<include_model> method.
2196 2197
 
2198
+=head2 C<option>
2199
+
2200
+    my $option = $dbi->option;
2201
+    $dbi = $dbi->option($option);
2202
+
2203
+L<DBI> option, used when C<connect> method is executed.
2204
+Each value in option override the value of C<default_option>.
2205
+
2197 2206
 =head2 C<password>
2198 2207
 
2199 2208
     my $password = $dbi->password;
... ...
@@ -2246,15 +2255,6 @@ and C<select> method's column option.
2246 2255
 
2247 2256
 Default to C<.>.
2248 2257
 
2249
-=head2 C<exclude_table>
2250
-
2251
-    my $exclude_table = $dbi->exclude_table;
2252
-    $dbi = $dbi->exclude_table(qr/pg_/);
2253
-
2254
-Excluded table regex.
2255
-C<each_column>, C<each_table>, C<type_rule>,
2256
-and C<setup_model> methods ignore matching tables.
2257
-
2258 2258
 =head2 C<tag_parse>
2259 2259
 
2260 2260
     my $tag_parse = $dbi->tag_parse(0);
... ...
@@ -2780,6 +2780,26 @@ get table infomation except for one which match C<exclude> pattern.
2780 2780
 
2781 2781
 You can set this value to C<user_table_info>.
2782 2782
 
2783
+=head2 C<helper>
2784
+
2785
+    $dbi->helper(
2786
+        update_or_insert => sub {
2787
+            my $self = shift;
2788
+            
2789
+            # Process
2790
+        },
2791
+        find_or_create   => sub {
2792
+            my $self = shift;
2793
+            
2794
+            # Process
2795
+        }
2796
+    );
2797
+
2798
+Register helper. These helper is called directly from L<DBIx::Custom> object.
2799
+
2800
+    $dbi->update_or_insert;
2801
+    $dbi->find_or_create;
2802
+
2783 2803
 =head2 C<insert>
2784 2804
 
2785 2805
     $dbi->insert({title => 'Perl', author => 'Ken'}, table  => 'book');
... ...
@@ -2949,13 +2969,19 @@ See L<DBIx::Custom::Model> to know model features.
2949 2969
 
2950 2970
 =head2 C<insert_timestamp>
2951 2971
 
2952
-    $dbi->insert_timestamp(
2953
-      [qw/created_at updated_at/] => sub { localtime });
2972
+$dbi->insert_timestamp(
2973
+  [qw/created_at updated_at/]
2974
+    => sub { Time::Piece->localtime->strftime("%Y-%m-%d %H:%M:%S") }
2975
+);
2954 2976
 
2955
-Parameter for timestamp columns when C<insert> method is executed
2977
+Timestamp value when C<insert> method is executed
2956 2978
 with C<timestamp> option.
2957 2979
 
2958
-If multiple column are specified, same value is used.
2980
+If C<insert_timestamp> is set and C<insert> method is executed
2981
+with C<timestamp> option, column C<created_at> and C<update_at>
2982
+is automatically set to the value like "2010-10-11 10:12:54".
2983
+
2984
+$dbi->insert($param, table => 'book', timestamp => 1);
2959 2985
 
2960 2986
 =head2 C<like_value EXPERIMENTAL>
2961 2987
 
... ...
@@ -2979,26 +3005,6 @@ Merge parameters.
2979 3005
 
2980 3006
     {key1 => [1, 1], key2 => 2}
2981 3007
 
2982
-=head2 C<helper>
2983
-
2984
-    $dbi->helper(
2985
-        update_or_insert => sub {
2986
-            my $self = shift;
2987
-            
2988
-            # Process
2989
-        },
2990
-        find_or_create   => sub {
2991
-            my $self = shift;
2992
-            
2993
-            # Process
2994
-        }
2995
-    );
2996
-
2997
-Register helper. These helper is called directly from L<DBIx::Custom> object.
2998
-
2999
-    $dbi->update_or_insert;
3000
-    $dbi->find_or_create;
3001
-
3002 3008
 =head2 C<model>
3003 3009
 
3004 3010
     my $model = $dbi->model('book');
... ...
@@ -3055,80 +3061,6 @@ Create a new L<DBIx::Custom::Order> object.
3055 3061
     
3056 3062
 Register filters, used by C<filter> option of many methods.
3057 3063
 
3058
-=head2 C<type_rule>
3059
-
3060
-    $dbi->type_rule(
3061
-        into1 => {
3062
-            date => sub { ... },
3063
-            datetime => sub { ... }
3064
-        },
3065
-        into2 => {
3066
-            date => sub { ... },
3067
-            datetime => sub { ... }
3068
-        },
3069
-        from1 => {
3070
-            # DATE
3071
-            9 => sub { ... },
3072
-            # DATETIME or TIMESTAMP
3073
-            11 => sub { ... },
3074
-        }
3075
-        from2 => {
3076
-            # DATE
3077
-            9 => sub { ... },
3078
-            # DATETIME or TIMESTAMP
3079
-            11 => sub { ... },
3080
-        }
3081
-    );
3082
-
3083
-Filtering rule when data is send into and get from database.
3084
-This has a little complex problem.
3085
-
3086
-In C<into1> and C<into2> you can specify
3087
-type name as same as type name defined
3088
-by create table, such as C<DATETIME> or C<DATE>.
3089
-
3090
-Note that type name and data type don't contain upper case.
3091
-If these contain upper case charactor, you convert it to lower case.
3092
-
3093
-C<into2> is executed after C<into1>.
3094
-
3095
-Type rule of C<into1> and C<into2> is enabled on the following
3096
-column name.
3097
-
3098
-=over 4
3099
-
3100
-=item 1. column name
3101
-
3102
-    issue_date
3103
-    issue_datetime
3104
-
3105
-This need C<table> option in each method.
3106
-
3107
-=item 2. table name and column name, separator is dot
3108
-
3109
-    book.issue_date
3110
-    book.issue_datetime
3111
-
3112
-=back
3113
-
3114
-You get all type name used in database by C<available_typename>.
3115
-
3116
-    print $dbi->available_typename;
3117
-
3118
-In C<from1> and C<from2> you specify data type, not type name.
3119
-C<from2> is executed after C<from1>.
3120
-You get all data type by C<available_datatype>.
3121
-
3122
-    print $dbi->available_datatype;
3123
-
3124
-You can also specify multiple types at once.
3125
-
3126
-    $dbi->type_rule(
3127
-        into1 => [
3128
-            [qw/DATE DATETIME/] => sub { ... },
3129
-        ],
3130
-    );
3131
-
3132 3064
 =head2 C<select>
3133 3065
 
3134 3066
     my $result = $dbi->select(
... ...
@@ -3344,6 +3276,87 @@ Where clause.
3344 3276
     
3345 3277
 =back
3346 3278
 
3279
+=head2 C<setup_model>
3280
+
3281
+    $dbi->setup_model;
3282
+
3283
+Setup all model objects.
3284
+C<columns> of model object is automatically set, parsing database information.
3285
+
3286
+=head2 C<type_rule>
3287
+
3288
+    $dbi->type_rule(
3289
+        into1 => {
3290
+            date => sub { ... },
3291
+            datetime => sub { ... }
3292
+        },
3293
+        into2 => {
3294
+            date => sub { ... },
3295
+            datetime => sub { ... }
3296
+        },
3297
+        from1 => {
3298
+            # DATE
3299
+            9 => sub { ... },
3300
+            # DATETIME or TIMESTAMP
3301
+            11 => sub { ... },
3302
+        }
3303
+        from2 => {
3304
+            # DATE
3305
+            9 => sub { ... },
3306
+            # DATETIME or TIMESTAMP
3307
+            11 => sub { ... },
3308
+        }
3309
+    );
3310
+
3311
+Filtering rule when data is send into and get from database.
3312
+This has a little complex problem.
3313
+
3314
+In C<into1> and C<into2> you can specify
3315
+type name as same as type name defined
3316
+by create table, such as C<DATETIME> or C<DATE>.
3317
+
3318
+Note that type name and data type don't contain upper case.
3319
+If these contain upper case charactor, you convert it to lower case.
3320
+
3321
+C<into2> is executed after C<into1>.
3322
+
3323
+Type rule of C<into1> and C<into2> is enabled on the following
3324
+column name.
3325
+
3326
+=over 4
3327
+
3328
+=item 1. column name
3329
+
3330
+    issue_date
3331
+    issue_datetime
3332
+
3333
+This need C<table> option in each method.
3334
+
3335
+=item 2. table name and column name, separator is dot
3336
+
3337
+    book.issue_date
3338
+    book.issue_datetime
3339
+
3340
+=back
3341
+
3342
+You get all type name used in database by C<available_typename>.
3343
+
3344
+    print $dbi->available_typename;
3345
+
3346
+In C<from1> and C<from2> you specify data type, not type name.
3347
+C<from2> is executed after C<from1>.
3348
+You get all data type by C<available_datatype>.
3349
+
3350
+    print $dbi->available_datatype;
3351
+
3352
+You can also specify multiple types at once.
3353
+
3354
+    $dbi->type_rule(
3355
+        into1 => [
3356
+            [qw/DATE DATETIME/] => sub { ... },
3357
+        ],
3358
+    );
3359
+
3347 3360
 =head2 C<update>
3348 3361
 
3349 3362
     $dbi->update({title => 'Perl'}, table  => 'book', where  => {id => 4});
... ...
@@ -3468,6 +3481,7 @@ is executed, the following SQL is executed.
3468 3481
 
3469 3482
 =back
3470 3483
 
3484
+
3471 3485
 =head2 C<update_all>
3472 3486
 
3473 3487
     $dbi->update_all({title => 'Perl'}, table => 'book', );
... ...
@@ -3517,26 +3531,21 @@ select method is used to check the row is already exists.
3517 3531
 
3518 3532
 =head2 C<update_timestamp>
3519 3533
 
3520
-    $dbi->update_timestamp(updated_at => sub { localtime });
3521
-
3522
-Parameter for timestamp columns when C<update> method is executed
3523
-with C<timestamp> option.
3524
-
3525
-=head2 C<where>
3526
-
3527
-    my $where = $dbi->where(
3528
-        clause => ['and', 'title = :title', 'author = :author'],
3529
-        param => {title => 'Perl', author => 'Ken'}
3534
+    $dbi->update_timestamp(
3535
+      updated_at
3536
+        => sub { Time::Piece->localtime->strftime("%Y-%m-%d %H:%M:%S") }
3530 3537
     );
3531 3538
 
3532
-Create a new L<DBIx::Custom::Where> object.
3533
-
3534
-=head2 C<setup_model>
3539
+Timestamp value when C<update> method is executed
3540
+with C<timestamp> option.
3535 3541
 
3536
-    $dbi->setup_model;
3542
+If C<insert_timestamp> is set and C<insert> method is executed
3543
+with C<timestamp> option, column C<update_at>
3544
+is automatically set to the value like "2010-10-11 10:12:54".
3537 3545
 
3538
-Setup all model objects.
3539
-C<columns> of model object is automatically set, parsing database information.
3546
+>|perl|
3547
+$dbi->update($param, table => 'book', timestamp => 1);
3548
+||<
3540 3549
 
3541 3550
 =head2 C<show_datatype>
3542 3551
 
... ...
@@ -3568,6 +3577,27 @@ Show type name of the columns of specified table.
3568 3577
 
3569 3578
 This type name is used in C<type_rule>'s C<into1> and C<into2>.
3570 3579
 
3580
+=head2 C<values_clause>
3581
+
3582
+    my $values_clause = $dbi->values_clause({title => 'a', age => 2});
3583
+
3584
+Create values clause.
3585
+
3586
+    (title, author) values (title = :title, age = :age);
3587
+
3588
+You can use this in insert statement.
3589
+
3590
+    my $insert_sql = "insert into book $values_clause";
3591
+
3592
+=head2 C<where>
3593
+
3594
+    my $where = $dbi->where(
3595
+        clause => ['and', 'title = :title', 'author = :author'],
3596
+        param => {title => 'Perl', author => 'Ken'}
3597
+    );
3598
+
3599
+Create a new L<DBIx::Custom::Where> object.
3600
+
3571 3601
 =head1 ENVIRONMENTAL VARIABLES
3572 3602
 
3573 3603
 =head2 C<DBIX_CUSTOM_DEBUG>