Showing 1 changed files with 364 additions and 116 deletions
+364 -116
lib/DBIx/Custom.pm
... ...
@@ -1458,7 +1458,7 @@ L<DBIx::Custom Wiki|https://github.com/yuki-kimoto/DBIx-Custom/wiki>
1458 1458
     my $cache = $dbi->cache;
1459 1459
     $dbi      = $dbi->cache(1);
1460 1460
 
1461
-Enable caching of L<DBIx::Custom::Query>,
1461
+Enable caching L<DBIx::Custom::Query>,
1462 1462
 default to 1.
1463 1463
 
1464 1464
 =head2 C<data_source>
... ...
@@ -1491,7 +1491,7 @@ default to the following values.
1491 1491
     }
1492 1492
 
1493 1493
 You should not change C<AutoCommit> value directly
1494
-to check if the process is in transaction correctly.
1494
+to check if the process is in transaction.
1495 1495
 L<DBIx::Custom> determin the process is in transaction
1496 1496
 if AutoCommit is 0. 
1497 1497
 
... ...
@@ -1571,6 +1571,13 @@ You can use three column name to apply filter to column data.
1571 1571
     2. table.column  : book.author
1572 1572
     3. table__column : book__author
1573 1573
 
1574
+=head2 C<cache_method>
1575
+
1576
+    $dbi          = $dbi->cache_method(\&cache_method);
1577
+    $cache_method = $dbi->cache_method
1578
+
1579
+Method to set and get caches.
1580
+
1574 1581
 =head2 C<connect>
1575 1582
 
1576 1583
     my $dbi = DBIx::Custom->connect(data_source => "dbi:mysql:database=dbname",
... ...
@@ -1616,87 +1623,246 @@ or the count of affected rows if insert, update, delete statement is executed.
1616 1623
 
1617 1624
 =head2 C<delete>
1618 1625
 
1619
-    $dbi->delete(table  => $table,
1620
-                 where  => \%where,
1621
-                 append => $append,
1622
-                 filter => \@filter,
1623
-                 query  => 1);
1624
-
1625
-Execute delete statement.
1626
-C<delete> method have C<table>, C<where>, C<append>, and C<filter> arguments.
1627
-C<table> is a table name.
1628
-C<where> is where clause. this must be hash reference.
1629
-C<append> is a string added at the end of the SQL statement.
1630
-C<filter> is filters when parameter binding is executed.
1631
-C<query> is if you don't execute sql and get L<DBIx::Custom::Query> object as return value.
1632
-default to 0. This is EXPERIMENTAL.
1633
-Return value of C<delete()> is the count of affected rows.
1626
+    $dbi->delete(table => 'book', where => {title => 'Perl'});
1627
+
1628
+Delete statement.
1629
+
1630
+The following opitons are currently available.
1631
+
1632
+=item C<table>
1633
+
1634
+Table name.
1635
+
1636
+    $dbi->delete(table => 'book');
1637
+
1638
+=item C<where>
1639
+
1640
+Where clause. This is hash reference or L<DBIx::Custom::Where> object.
1641
+    
1642
+    # Hash reference
1643
+    $dbi->delete(where => {title => 'Perl'});
1644
+    
1645
+    # DBIx::Custom::Where object
1646
+    my $where = $dbi->where(
1647
+        clause => ['and', '{= author}', '{like title}'],
1648
+        param  => {author => 'Ken', title => '%Perl%'}
1649
+    );
1650
+    $dbi->delete(where => $where);
1651
+
1652
+=item C<append>
1653
+
1654
+Append statement to last of SQL. This is string.
1655
+
1656
+    $dbi->delete(append => 'order by title');
1657
+
1658
+=item C<filter>
1659
+
1660
+Filter, executed before data is send to database. This is array reference.
1661
+Filter value is code reference or
1662
+filter name registerd by C<register_filter()>.
1663
+
1664
+    # Basic
1665
+    $dbi->delete(
1666
+        filter => [
1667
+            title  => sub { uc $_[0] }
1668
+            author => sub { uc $_[0] }
1669
+        ]
1670
+    );
1671
+    
1672
+    # At once
1673
+    $dbi->delete(
1674
+        filter => [
1675
+            [qw/title author/]  => sub { uc $_[0] }
1676
+        ]
1677
+    );
1678
+    
1679
+    # Filter name
1680
+    $dbi->delete(
1681
+        filter => [
1682
+            title  => 'upper_case',
1683
+            author => 'upper_case'
1684
+        ]
1685
+    );
1686
+
1687
+These filters are added to the C<out> filters, set by C<apply_filter()>.
1688
+
1689
+=item C<query EXPERIMENTAL>
1690
+
1691
+Get L<DBIx::Custom::Query> object instead of executing SQL.
1692
+This is true or false value.
1693
+
1694
+    my $query = $dbi->delete(query => 1);
1695
+
1696
+You can check SQL.
1697
+
1698
+    my $sql = $query->sql;
1634 1699
 
1635 1700
 =head2 C<delete_all>
1636 1701
 
1637 1702
     $dbi->delete_all(table => $table);
1638 1703
 
1639
-Execute delete statement to delete all rows.
1640
-Arguments is same as C<delete> method,
1641
-except that C<delete_all> don't have C<where> argument.
1642
-Return value of C<delete_all()> is the count of affected rows.
1704
+Delete statement to delete all rows.
1705
+Options is same as C<delete()>.
1643 1706
 
1644
-=head3 C<delete_at() EXPERIMENTAL>
1707
+=head2 C<delete_at() EXPERIMENTAL>
1645 1708
 
1646
-To delete row by using primary key, use C<delete_at()>
1709
+Delete statement, using primary key.
1647 1710
 
1648 1711
     $dbi->delete_at(
1649 1712
         table => 'book',
1650
-        primary_key => ['id'],
1651
-        where => ['123']
1713
+        primary_key => 'id',
1714
+        where => '5'
1652 1715
     );
1653 1716
 
1654
-In this example, row which id column is 123 is deleted.
1655
-NOTE that you must pass array reference as C<where>.
1717
+This method is same as C<delete()> exept that
1718
+C<primary_key> is specified and C<where> is constant value or array refrence.
1719
+all option of C<delete()> is available.
1656 1720
 
1657
-You can also write arguments like this.
1721
+=head2 C<primary_key>
1658 1722
 
1659
-    $dbi->delete_at(
1660
-        table => 'book',
1661
-        primary_key => ['id'],
1662
-        param => {id => '123'}
1663
-    );
1723
+Primary key. This is constant value or array reference.
1724
+    
1725
+    # Constant value
1726
+    $dbi->delete(primary_key => 'id');
1727
+
1728
+    # Array reference
1729
+    $dbi->delete(primary_key => ['id1', 'id2' ]);
1730
+
1731
+This is used to create where clause.
1732
+
1733
+=head2 C<where>
1734
+
1735
+Where clause, created from primary key information.
1736
+This is constant value or array reference.
1737
+
1738
+    # Constant value
1739
+    $dbi->delete(where => 5);
1740
+
1741
+    # Array reference
1742
+    $dbi->delete(where => [3, 5]);
1743
+
1744
+In first examle, the following SQL is created.
1745
+
1746
+    delete from book where id = ?;
1747
+
1748
+Place holder is set to 5.
1664 1749
 
1665 1750
 =head2 C<insert>
1666 1751
 
1667
-    $dbi->insert(table  => $table, 
1668
-                 param  => \%param,
1669
-                 append => $append,
1670
-                 filter => \@filter,
1671
-                 query  => 1);
1752
+    $dbi->insert(
1753
+        table  => 'book', 
1754
+        param  => {title => 'Perl', author => 'Ken'}
1755
+    );
1756
+
1757
+Insert statement.
1758
+
1759
+The following opitons are currently available.
1760
+
1761
+=item C<table>
1762
+
1763
+Table name.
1764
+
1765
+    $dbi->insert(table => 'book');
1766
+
1767
+=item C<param>
1768
+
1769
+=item C<param>
1770
+
1771
+Insert data. This is hash reference.
1772
+
1773
+    $dbi->insert(param => {title => 'Perl'});
1774
+
1775
+=item C<append>
1776
+
1777
+Append statement to last of SQL. This is string.
1778
+
1779
+    $dbi->insert(append => 'order by title');
1780
+
1781
+=item C<filter>
1782
+
1783
+Filter, executed before data is send to database. This is array reference.
1784
+Filter value is code reference or
1785
+filter name registerd by C<register_filter()>.
1786
+
1787
+    # Basic
1788
+    $dbi->insert(
1789
+        filter => [
1790
+            title  => sub { uc $_[0] }
1791
+            author => sub { uc $_[0] }
1792
+        ]
1793
+    );
1794
+    
1795
+    # At once
1796
+    $dbi->insert(
1797
+        filter => [
1798
+            [qw/title author/]  => sub { uc $_[0] }
1799
+        ]
1800
+    );
1801
+    
1802
+    # Filter name
1803
+    $dbi->insert(
1804
+        filter => [
1805
+            title  => 'upper_case',
1806
+            author => 'upper_case'
1807
+        ]
1808
+    );
1809
+
1810
+These filters are added to the C<out> filters, set by C<apply_filter()>.
1811
+
1812
+=item C<query EXPERIMENTAL>
1813
+
1814
+Get L<DBIx::Custom::Query> object instead of executing SQL.
1815
+This is true or false value.
1816
+
1817
+    my $query = $dbi->insert(query => 1);
1672 1818
 
1673
-Execute insert statement.
1674
-C<insert> method have C<table>, C<param>, C<append>
1675
-and C<filter> arguments.
1676
-C<table> is a table name.
1677
-C<param> is the pairs of column name value. this must be hash reference.
1678
-C<append> is a string added at the end of the SQL statement.
1679
-C<filter> is filters when parameter binding is executed.
1680
-C<query> is if you don't execute sql and get L<DBIx::Custom::Query> object as return value.
1681
-default to 0. This is EXPERIMENTAL.
1682
-This is overwrites C<default_bind_filter>.
1683
-Return value of C<insert()> is the count of affected rows.
1819
+You can check SQL.
1684 1820
 
1685
-=head3 C<insert_at() EXPERIMENTAL>
1821
+    my $sql = $query->sql;
1822
+
1823
+=head2 C<insert_at() EXPERIMENTAL>
1686 1824
 
1687
-To insert row by using primary key, use C<insert_at()>
1825
+Insert statement, using primary key.
1688 1826
 
1689 1827
     $dbi->insert_at(
1690 1828
         table => 'book',
1691
-        primary_key => ['id'],
1692
-        where => ['123'],
1693
-        param => {name => 'Ken'}
1829
+        primary_key => 'id',
1830
+        where => '5',
1831
+        param => {title => 'Perl'}
1694 1832
     );
1695 1833
 
1696
-In this example, row which id column is 123 is inserted.
1697
-NOTE that you must pass array reference as C<where>.
1698
-If C<param> contains primary key,
1699
-the key and value is delete from C<param>.
1834
+This method is same as C<insert()> exept that
1835
+C<primary_key> is specified and C<where> is constant value or array refrence.
1836
+all option of C<insert()> is available.
1837
+
1838
+=head2 C<primary_key>
1839
+
1840
+Primary key. This is constant value or array reference.
1841
+    
1842
+    # Constant value
1843
+    $dbi->insert(primary_key => 'id');
1844
+
1845
+    # Array reference
1846
+    $dbi->insert(primary_key => ['id1', 'id2' ]);
1847
+
1848
+This is used to create parts of insert data.
1849
+
1850
+=head2 C<where>
1851
+
1852
+Parts of Insert data, create from primary key information.
1853
+This is constant value or array reference.
1854
+
1855
+    # Constant value
1856
+    $dbi->insert(where => 5);
1857
+
1858
+    # Array reference
1859
+    $dbi->insert(where => [3, 5]);
1860
+
1861
+In first examle, the following SQL is created.
1862
+
1863
+    insert into book (id, title) values (?, ?);
1864
+
1865
+Place holders are set to 5 and 'Perl'.
1700 1866
 
1701 1867
 =head2 C<insert_param EXPERIMENTAL>
1702 1868
 
... ...
@@ -1944,14 +2110,14 @@ In above select, the following SQL is created.
1944 2110
 
1945 2111
 =item C<append>
1946 2112
 
1947
-Appended statement to last of SQL. This is string.
2113
+Append statement to last of SQL. This is string.
1948 2114
 
1949 2115
     $dbi->select(append => 'order by title');
1950 2116
 
1951 2117
 =item C<filter>
1952 2118
 
1953
-Filter, executed before data is send to database. This is array reference
1954
-and filter value is code reference or
2119
+Filter, executed before data is send to database. This is array reference.
2120
+Filter value is code reference or
1955 2121
 filter name registerd by C<register_filter()>.
1956 2122
 
1957 2123
     # Basic
... ...
@@ -1977,22 +2143,22 @@ filter name registerd by C<register_filter()>.
1977 2143
         ]
1978 2144
     );
1979 2145
 
1980
-These filters are added to the C<out> filters set by C<apply_filter()>.
2146
+These filters are added to the C<out> filters, set by C<apply_filter()>.
1981 2147
 
1982 2148
 =item C<query EXPERIMENTAL>
1983 2149
 
1984 2150
 Get L<DBIx::Custom::Query> object instead of executing SQL.
1985 2151
 This is true or false value.
1986 2152
 
1987
-    my $query = $dbi->select(query => 1, ...);
2153
+    my $query = $dbi->select(query => 1);
1988 2154
 
1989
-You can check executing SQL by this object.
2155
+You can check SQL.
1990 2156
 
1991 2157
     my $sql = $query->sql;
1992 2158
 
1993 2159
 =back
1994 2160
 
1995
-=head3 C<select_at() EXPERIMENTAL>
2161
+=head2 C<select_at() EXPERIMENTAL>
1996 2162
 
1997 2163
 Select statement, using primary key.
1998 2164
 
... ...
@@ -2002,8 +2168,8 @@ Select statement, using primary key.
2002 2168
         where => '5'
2003 2169
     );
2004 2170
 
2005
-This method is same as select method exept that
2006
-primary_key is specified and C<where> is array reference.
2171
+This method is same as C<select()> exept that
2172
+C<primary_key> is specified and C<where> is constant value or array refrence.
2007 2173
 all option of C<select()> is available.
2008 2174
 
2009 2175
 =head2 C<primary_key>
... ...
@@ -2016,9 +2182,11 @@ Primary key. This is constant value or array reference.
2016 2182
     # Array reference
2017 2183
     $dbi->select(primary_key => ['id1', 'id2' ]);
2018 2184
 
2185
+This is used to create where clause.
2186
+
2019 2187
 =head2 C<where>
2020 2188
 
2021
-Where clause, created by primary key infromation.
2189
+Where clause, created from primary key information.
2022 2190
 This is constant value or array reference.
2023 2191
 
2024 2192
     # Constant value
... ...
@@ -2035,33 +2203,78 @@ Place holder is set to 5.
2035 2203
 
2036 2204
 =head2 C<update>
2037 2205
 
2038
-    $dbi->update(table  => $table, 
2039
-                 param  => \%params,
2040
-                 where  => \%where,
2041
-                 append => $append,
2042
-                 filter => \@filter,
2043
-                 query  => 1)
2044
-
2045
-Execute update statement.
2046
-C<update> method have C<table>, C<param>, C<where>, C<append>
2047
-and C<filter> arguments.
2048
-C<table> is a table name.
2049
-C<param> is column-value pairs. this must be hash reference.
2050
-C<where> is where clause. this must be hash reference.
2051
-C<append> is a string added at the end of the SQL statement.
2052
-C<filter> is filters when parameter binding is executed.
2053
-C<query> is if you don't execute sql and get L<DBIx::Custom::Query> object as return value.
2054
-default to 0. This is EXPERIMENTAL.
2055
-This is overwrites C<default_bind_filter>.
2056
-Return value of C<update()> is the count of affected rows.
2206
+    $dbi->update(
2207
+        table  => 'book',
2208
+        param  => {title => 'Perl'},
2209
+        where  => {id => 4}
2210
+    );
2057 2211
 
2058
-=head2 C<update_param EXPERIMENTAL>
2212
+Update statement.
2059 2213
 
2060
-    my $update_param = $dbi->update_param({title => 'a', age => 2});
2214
+The following opitons are currently available.
2061 2215
 
2062
-Create update parameter tag.
2216
+=over 4
2217
+
2218
+Table name.
2219
+
2220
+    $dbi->update(table => 'book');
2221
+
2222
+=item C<param>
2223
+
2224
+Update data. This is hash reference.
2225
+
2226
+    $dbi->update(param => {title => 'Perl'});
2227
+
2228
+=item C<where>
2229
+
2230
+Where clause. This is hash reference or L<DBIx::Custom::Where> object.
2231
+    
2232
+    # Hash reference
2233
+    $dbi->update(where => {author => 'Ken', 'title' => 'Perl'});
2234
+    
2235
+    # DBIx::Custom::Where object
2236
+    my $where = $dbi->where(
2237
+        clause => ['and', '{= author}', '{like title}'],
2238
+        param  => {author => 'Ken', title => '%Perl%'}
2239
+    );
2240
+    $dbi->update(where => $where);
2241
+
2242
+=item C<append>
2243
+
2244
+Append statement to last of SQL. This is string.
2245
+
2246
+    $dbi->update(append => 'order by title');
2247
+
2248
+=item C<filter>
2249
+
2250
+Filter, executed before data is send to database. This is array reference.
2251
+Filter value is code reference or
2252
+filter name registerd by C<register_filter()>.
2253
+
2254
+    # Basic
2255
+    $dbi->update(
2256
+        filter => [
2257
+            title  => sub { uc $_[0] }
2258
+            author => sub { uc $_[0] }
2259
+        ]
2260
+    );
2261
+    
2262
+    # At once
2263
+    $dbi->update(
2264
+        filter => [
2265
+            [qw/title author/]  => sub { uc $_[0] }
2266
+        ]
2267
+    );
2268
+    
2269
+    # Filter name
2270
+    $dbi->update(
2271
+        filter => [
2272
+            title  => 'upper_case',
2273
+            author => 'upper_case'
2274
+        ]
2275
+    );
2063 2276
 
2064
-    {title => 'a', age => 2}   ->   {update_param title age}
2277
+These filters are added to the C<out> filters, set by C<apply_filter()>.
2065 2278
 
2066 2279
 =head2 C<model EXPERIMENTAL>
2067 2280
 
... ...
@@ -2074,40 +2287,75 @@ Create update parameter tag.
2074 2287
 
2075 2288
 Set and get a L<DBIx::Custom::Model> object,
2076 2289
 
2077
-=head2 C<setup_model EXPERIMENTAL>
2290
+=item C<query EXPERIMENTAL>
2078 2291
 
2079
-    $dbi->setup_model;
2292
+Get L<DBIx::Custom::Query> object instead of executing SQL.
2293
+This is true or false value.
2080 2294
 
2081
-Setup all model objects.
2082
-C<columns> and C<primary_key> is automatically set.
2295
+    my $query = $dbi->update(query => 1);
2296
+
2297
+You can check SQL.
2298
+
2299
+    my $sql = $query->sql;
2083 2300
 
2084 2301
 =head2 C<update_all>
2085 2302
 
2086
-    $dbi->update_all(table  => $table, 
2087
-                     param  => \%params,
2088
-                     filter => \@filter,
2089
-                     append => $append);
2303
+    $dbi->update_all(table => 'book', param => {title => 'Perl'});
2090 2304
 
2091
-Execute update statement to update all rows.
2092
-Arguments is same as C<update> method,
2093
-except that C<update_all> don't have C<where> argument.
2094
-Return value of C<update_all()> is the count of affected rows.
2305
+Update statement to update all rows.
2306
+Options is same as C<update()>.
2095 2307
 
2096
-=head3 C<update_at() EXPERIMENTAL>
2308
+=head2 C<update_at() EXPERIMENTAL>
2097 2309
 
2098
-To update row by using primary key, use C<update_at()>
2310
+Update statement, using primary key.
2099 2311
 
2100 2312
     $dbi->update_at(
2101 2313
         table => 'book',
2102
-        primary_key => ['id'],
2103
-        where => ['123'],
2104
-        param => {name => 'Ken'}
2314
+        primary_key => 'id',
2315
+        where => '5',
2316
+        param => {title => 'Perl'}
2105 2317
     );
2106 2318
 
2107
-In this example, row which id column is 123 is updated.
2108
-NOTE that you must pass array reference as C<where>.
2109
-If C<param> contains primary key,
2110
-the key and value is delete from C<param>.
2319
+This method is same as C<update()> exept that
2320
+C<primary_key> is specified and C<where> is constant value or array refrence.
2321
+all option of C<update()> is available.
2322
+
2323
+=head2 C<primary_key>
2324
+
2325
+Primary key. This is constant value or array reference.
2326
+    
2327
+    # Constant value
2328
+    $dbi->update(primary_key => 'id');
2329
+
2330
+    # Array reference
2331
+    $dbi->update(primary_key => ['id1', 'id2' ]);
2332
+
2333
+This is used to create where clause.
2334
+
2335
+=head2 C<where>
2336
+
2337
+Where clause, created from primary key information.
2338
+This is constant value or array reference.
2339
+
2340
+    # Constant value
2341
+    $dbi->update(where => 5);
2342
+
2343
+    # Array reference
2344
+    $dbi->update(where => [3, 5]);
2345
+
2346
+In first examle, the following SQL is created.
2347
+
2348
+    update book set title = ? where id = ?
2349
+
2350
+Place holders are set to 'Perl' and 5.
2351
+
2352
+=head2 C<update_param EXPERIMENTAL>
2353
+
2354
+    my $update_param = $dbi->update_param({title => 'a', age => 2});
2355
+
2356
+Create update parameter tag.
2357
+
2358
+    {update_param title age}
2111 2359
 
2112 2360
 =head2 C<where EXPERIMENTAL>
2113 2361
 
... ...
@@ -2118,12 +2366,12 @@ the key and value is delete from C<param>.
2118 2366
 
2119 2367
 Create a new L<DBIx::Custom::Where> object.
2120 2368
 
2121
-=head2 C<cache_method>
2369
+=head2 C<setup_model EXPERIMENTAL>
2122 2370
 
2123
-    $dbi          = $dbi->cache_method(\&cache_method);
2124
-    $cache_method = $dbi->cache_method
2371
+    $dbi->setup_model;
2125 2372
 
2126
-Method to set and get caches.
2373
+Setup all model objects.
2374
+C<columns> and C<primary_key> is automatically set.
2127 2375
 
2128 2376
 =head1 Tags
2129 2377