| ... | ... |
@@ -1,3 +1,5 @@ |
| 1 |
+0.1660 |
|
| 2 |
+ - update pod |
|
| 1 | 3 |
0.1659 |
| 2 | 4 |
- EXPERIMETAL fork safety implementaion. |
| 3 | 5 |
- removed EXPERIMENTAL selection |
| ... | ... |
@@ -181,7 +183,7 @@ |
| 181 | 183 |
- update document |
| 182 | 184 |
- renamed DBIx::Custom::QueryBuilder::TagProcessors functions(not backword compatible) |
| 183 | 185 |
0.1607 |
| 184 |
- - where argument of select() method can specify array(string, paramters) |
|
| 186 |
+ - where argument of select() method can specify array(string, parameters) |
|
| 185 | 187 |
- renamed build_query() to create_query()(not backword compatible) |
| 186 | 188 |
0.1606 |
| 187 | 189 |
- fix testing bug |
| ... | ... |
@@ -1,6 +1,6 @@ |
| 1 | 1 |
package DBIx::Custom; |
| 2 | 2 |
|
| 3 |
-our $VERSION = '0.1659'; |
|
| 3 |
+our $VERSION = '0.1660'; |
|
| 4 | 4 |
|
| 5 | 5 |
use 5.008001; |
| 6 | 6 |
use strict; |
| ... | ... |
@@ -22,43 +22,6 @@ use Encode qw/encode_utf8 decode_utf8/; |
| 22 | 22 |
__PACKAGE__->attr( |
| 23 | 23 |
[qw/data_source password pid user/], |
| 24 | 24 |
cache => 1, |
| 25 |
- dbi_option => sub { {} },
|
|
| 26 |
- default_dbi_option => sub {{
|
|
| 27 |
- RaiseError => 1, |
|
| 28 |
- PrintError => 0, |
|
| 29 |
- AutoCommit => 1 |
|
| 30 |
- }}, |
|
| 31 |
- models => sub { {} },
|
|
| 32 |
- query_builder => sub { DBIx::Custom::QueryBuilder->new },
|
|
| 33 |
- result_class => 'DBIx::Custom::Result', |
|
| 34 |
- safety_character => '\w', |
|
| 35 |
- stash => sub { {} }
|
|
| 36 |
-); |
|
| 37 |
- |
|
| 38 |
-sub dbh {
|
|
| 39 |
- my $self = shift; |
|
| 40 |
- |
|
| 41 |
- if (@_) {
|
|
| 42 |
- $self->{dbh} = $_[0];
|
|
| 43 |
- return $self; |
|
| 44 |
- } |
|
| 45 |
- else {
|
|
| 46 |
- my $pid = $$; |
|
| 47 |
- if ($self->pid eq $pid) {
|
|
| 48 |
- return $self->{dbh};
|
|
| 49 |
- } |
|
| 50 |
- else {
|
|
| 51 |
- # Create new connection in child process |
|
| 52 |
- croak "Process is forked in transaction" |
|
| 53 |
- unless $self->{dbh}->{AutoCommit};
|
|
| 54 |
- $self->pid($pid); |
|
| 55 |
- $self->{dbh}->{InactiveDestroy} = 1;
|
|
| 56 |
- return $self->{dbh} = $self->_connect;
|
|
| 57 |
- } |
|
| 58 |
- } |
|
| 59 |
-} |
|
| 60 |
- |
|
| 61 |
-__PACKAGE__->attr( |
|
| 62 | 25 |
cache_method => sub {
|
| 63 | 26 |
sub {
|
| 64 | 27 |
my $self = shift; |
| ... | ... |
@@ -66,22 +29,32 @@ __PACKAGE__->attr( |
| 66 | 29 |
$self->{_cached} ||= {};
|
| 67 | 30 |
|
| 68 | 31 |
if (@_ > 1) {
|
| 69 |
- $self->{_cached}{$_[0]} = $_[1]
|
|
| 32 |
+ $self->{_cached}{$_[0]} = $_[1];
|
|
| 70 | 33 |
} |
| 71 | 34 |
else {
|
| 72 |
- return $self->{_cached}{$_[0]}
|
|
| 35 |
+ return $self->{_cached}{$_[0]};
|
|
| 73 | 36 |
} |
| 74 | 37 |
} |
| 75 |
- } |
|
| 76 |
-); |
|
| 77 |
- |
|
| 78 |
-__PACKAGE__->attr( |
|
| 38 |
+ }, |
|
| 39 |
+ dbi_option => sub { {} },
|
|
| 40 |
+ default_dbi_option => sub {
|
|
| 41 |
+ {
|
|
| 42 |
+ RaiseError => 1, |
|
| 43 |
+ PrintError => 0, |
|
| 44 |
+ AutoCommit => 1 |
|
| 45 |
+ } |
|
| 46 |
+ }, |
|
| 79 | 47 |
filters => sub {
|
| 80 | 48 |
{
|
| 81 | 49 |
encode_utf8 => sub { encode_utf8($_[0]) },
|
| 82 | 50 |
decode_utf8 => sub { decode_utf8($_[0]) }
|
| 83 | 51 |
} |
| 84 |
- } |
|
| 52 |
+ }, |
|
| 53 |
+ models => sub { {} },
|
|
| 54 |
+ query_builder => sub { DBIx::Custom::QueryBuilder->new },
|
|
| 55 |
+ result_class => 'DBIx::Custom::Result', |
|
| 56 |
+ safety_character => '\w', |
|
| 57 |
+ stash => sub { {} }
|
|
| 85 | 58 |
); |
| 86 | 59 |
|
| 87 | 60 |
our $AUTOLOAD; |
| ... | ... |
@@ -241,6 +214,29 @@ sub create_query {
|
| 241 | 214 |
return $query; |
| 242 | 215 |
} |
| 243 | 216 |
|
| 217 |
+sub dbh {
|
|
| 218 |
+ my $self = shift; |
|
| 219 |
+ |
|
| 220 |
+ if (@_) {
|
|
| 221 |
+ $self->{dbh} = $_[0];
|
|
| 222 |
+ return $self; |
|
| 223 |
+ } |
|
| 224 |
+ else {
|
|
| 225 |
+ my $pid = $$; |
|
| 226 |
+ if ($self->pid eq $pid) {
|
|
| 227 |
+ return $self->{dbh};
|
|
| 228 |
+ } |
|
| 229 |
+ else {
|
|
| 230 |
+ # Create new connection in child process |
|
| 231 |
+ croak "Process is forked in transaction" |
|
| 232 |
+ unless $self->{dbh}->{AutoCommit};
|
|
| 233 |
+ $self->pid($pid); |
|
| 234 |
+ $self->{dbh}->{InactiveDestroy} = 1;
|
|
| 235 |
+ return $self->{dbh} = $self->_connect;
|
|
| 236 |
+ } |
|
| 237 |
+ } |
|
| 238 |
+} |
|
| 239 |
+ |
|
| 244 | 240 |
our %VALID_DELETE_ARGS |
| 245 | 241 |
= map { $_ => 1 } qw/table where append filter allow_delete_all query/;
|
| 246 | 242 |
|
| ... | ... |
@@ -307,8 +303,7 @@ sub delete {
|
| 307 | 303 |
sub delete_all { shift->delete(allow_delete_all => 1, @_) }
|
| 308 | 304 |
|
| 309 | 305 |
our %VALID_DELETE_AT_ARGS |
| 310 |
- = map { $_ => 1 } qw/table where append filter query
|
|
| 311 |
- primary_key param/; |
|
| 306 |
+ = map { $_ => 1 } qw/table where append filter query primary_key param/;
|
|
| 312 | 307 |
|
| 313 | 308 |
sub delete_at {
|
| 314 | 309 |
my ($self, %args) = @_; |
| ... | ... |
@@ -450,8 +445,9 @@ sub execute{
|
| 450 | 445 |
return $affected; |
| 451 | 446 |
} |
| 452 | 447 |
|
| 453 |
-our %VALID_INSERT_ARGS = map { $_ => 1 } qw/table param append
|
|
| 454 |
- filter query/; |
|
| 448 |
+our %VALID_INSERT_ARGS |
|
| 449 |
+ = map { $_ => 1 } qw/table param append filter query/;
|
|
| 450 |
+ |
|
| 455 | 451 |
sub insert {
|
| 456 | 452 |
my ($self, %args) = @_; |
| 457 | 453 |
|
| ... | ... |
@@ -503,9 +499,8 @@ sub insert {
|
| 503 | 499 |
} |
| 504 | 500 |
|
| 505 | 501 |
our %VALID_INSERT_AT_ARGS |
| 506 |
- = map { $_ => 1 } qw/table param
|
|
| 507 |
- where append filter query |
|
| 508 |
- primary_key param/; |
|
| 502 |
+ = map { $_ => 1 } qw/table param where append filter
|
|
| 503 |
+ query primary_key param/; |
|
| 509 | 504 |
|
| 510 | 505 |
sub insert_at {
|
| 511 | 506 |
my ($self, %args) = @_; |
| ... | ... |
@@ -551,7 +546,7 @@ sub insert_at {
|
| 551 | 546 |
sub insert_param {
|
| 552 | 547 |
my ($self, $param) = @_; |
| 553 | 548 |
|
| 554 |
- # Insert paramter tag |
|
| 549 |
+ # Insert parameter tag |
|
| 555 | 550 |
my @tag; |
| 556 | 551 |
push @tag, '{insert_param';
|
| 557 | 552 |
my $safety = $self->safety_character; |
| ... | ... |
@@ -921,8 +916,8 @@ sub setup_model {
|
| 921 | 916 |
} |
| 922 | 917 |
|
| 923 | 918 |
our %VALID_UPDATE_ARGS |
| 924 |
- = map { $_ => 1 } qw/table param
|
|
| 925 |
- where append filter allow_update_all query/; |
|
| 919 |
+ = map { $_ => 1 } qw/table param where append filter
|
|
| 920 |
+ allow_update_all query/; |
|
| 926 | 921 |
|
| 927 | 922 |
sub update {
|
| 928 | 923 |
my ($self, %args) = @_; |
| ... | ... |
@@ -1019,9 +1014,8 @@ sub update {
|
| 1019 | 1014 |
sub update_all { shift->update(allow_update_all => 1, @_) };
|
| 1020 | 1015 |
|
| 1021 | 1016 |
our %VALID_UPDATE_AT_ARGS |
| 1022 |
- = map { $_ => 1 } qw/table param
|
|
| 1023 |
- where append filter query |
|
| 1024 |
- primary_key param/; |
|
| 1017 |
+ = map { $_ => 1 } qw/table param where append filter
|
|
| 1018 |
+ query primary_key param/; |
|
| 1025 | 1019 |
|
| 1026 | 1020 |
sub update_at {
|
| 1027 | 1021 |
my ($self, %args) = @_; |
| ... | ... |
@@ -1490,10 +1484,8 @@ default to the following values. |
| 1490 | 1484 |
AutoCommit => 1, |
| 1491 | 1485 |
} |
| 1492 | 1486 |
|
| 1493 |
-You should not change C<AutoCommit> value directly |
|
| 1494 |
-to check if the process is in transaction. |
|
| 1495 |
-L<DBIx::Custom> determin the process is in transaction |
|
| 1496 |
-if AutoCommit is 0. |
|
| 1487 |
+You should not change C<AutoCommit> value directly, |
|
| 1488 |
+the value is used to check if the process is in transaction. |
|
| 1497 | 1489 |
|
| 1498 | 1490 |
=head2 C<filters> |
| 1499 | 1491 |
|
| ... | ... |
@@ -1502,7 +1494,7 @@ if AutoCommit is 0. |
| 1502 | 1494 |
|
| 1503 | 1495 |
Filters, registered by C<register_filter()>. |
| 1504 | 1496 |
|
| 1505 |
-=head2 C<models EXPERIMENTAL> |
|
| 1497 |
+=head2 C<models> EXPERIMENTAL |
|
| 1506 | 1498 |
|
| 1507 | 1499 |
my $models = $dbi->models; |
| 1508 | 1500 |
$dbi = $dbi->models(\%models); |
| ... | ... |
@@ -1530,12 +1522,12 @@ Query builder, default to L<DBIx::Custom::QueryBuilder> object. |
| 1530 | 1522 |
|
| 1531 | 1523 |
Result class, default to L<DBIx::Custom::Result>. |
| 1532 | 1524 |
|
| 1533 |
-=head2 C<safety_character EXPERIMENTAL> |
|
| 1525 |
+=head2 C<safety_character> EXPERIMENTAL |
|
| 1534 | 1526 |
|
| 1535 | 1527 |
my $safety_character = $self->safety_character; |
| 1536 | 1528 |
$dbi = $self->safety_character($character); |
| 1537 | 1529 |
|
| 1538 |
-Regex of safety character consist of table and column name, default to '\w'. |
|
| 1530 |
+Regex of safety character for table and column name, default to '\w'. |
|
| 1539 | 1531 |
Note that you don't have to specify like '[\w]'. |
| 1540 | 1532 |
|
| 1541 | 1533 |
=head2 C<user> |
| ... | ... |
@@ -1551,53 +1543,95 @@ L<DBIx::Custom> inherits all methods from L<Object::Simple> |
| 1551 | 1543 |
and use all methods of L<DBI> |
| 1552 | 1544 |
and implements the following new ones. |
| 1553 | 1545 |
|
| 1554 |
-=head2 C<apply_filter EXPERIMENTAL> |
|
| 1546 |
+=head2 C<apply_filter> EXPERIMENTAL |
|
| 1555 | 1547 |
|
| 1556 | 1548 |
$dbi->apply_filter( |
| 1557 | 1549 |
'book', |
| 1558 |
- $column1 => {out => $outfilter1, in => $infilter1, end => $endfilter1}
|
|
| 1559 |
- $column2 => {out => $outfilter2, in => $infilter2, end => $endfilter2}
|
|
| 1560 |
- ..., |
|
| 1550 |
+ 'issue_date' => {
|
|
| 1551 |
+ out => 'tp_to_date', |
|
| 1552 |
+ in => 'date_to_tp', |
|
| 1553 |
+ end => 'tp_to_displaydate' |
|
| 1554 |
+ }, |
|
| 1555 |
+ 'write_date' => {
|
|
| 1556 |
+ out => 'tp_to_date', |
|
| 1557 |
+ in => 'date_to_tp', |
|
| 1558 |
+ end => 'tp_to_displaydate' |
|
| 1559 |
+ } |
|
| 1561 | 1560 |
); |
| 1562 | 1561 |
|
| 1563 |
-Apply filter to specified column, C<out> is the direction from perl to database, |
|
| 1564 |
-C<in> is the direction from database to perl, |
|
| 1565 |
-C<end> is filter after C<in> filter. |
|
| 1562 |
+Apply filter to columns. |
|
| 1563 |
+C<out> filter is executed before data is send to database. |
|
| 1564 |
+C<in> filter is executed after a row is fetch. |
|
| 1565 |
+C<end> filter is execute after C<in> filter is executed. |
|
| 1566 |
+ |
|
| 1567 |
+Filter is applied to the follwoing tree column name pattern. |
|
| 1566 | 1568 |
|
| 1567 |
-You can use three column name to apply filter to column data. |
|
| 1569 |
+ PETTERN EXAMPLE |
|
| 1570 |
+ 1. Column : author |
|
| 1571 |
+ 2. Table.Column : book.author |
|
| 1572 |
+ 3. Table__Column : book__author |
|
| 1568 | 1573 |
|
| 1569 |
- (Example) |
|
| 1570 |
- 1. column : author |
|
| 1571 |
- 2. table.column : book.author |
|
| 1572 |
- 3. table__column : book__author |
|
| 1574 |
+If column name is duplicate with other table, |
|
| 1575 |
+Main filter specified by C<table> option is used. |
|
| 1576 |
+ |
|
| 1577 |
+You can set multiple filters at once. |
|
| 1578 |
+ |
|
| 1579 |
+ $dbi->apply_filter( |
|
| 1580 |
+ 'book', |
|
| 1581 |
+ [qw/issue_date write_date/] => {
|
|
| 1582 |
+ out => 'tp_to_date', |
|
| 1583 |
+ in => 'date_to_tp', |
|
| 1584 |
+ end => 'tp_to_displaydate' |
|
| 1585 |
+ } |
|
| 1586 |
+ ); |
|
| 1573 | 1587 |
|
| 1574 | 1588 |
=head2 C<cache_method> |
| 1575 | 1589 |
|
| 1576 | 1590 |
$dbi = $dbi->cache_method(\&cache_method); |
| 1577 | 1591 |
$cache_method = $dbi->cache_method |
| 1578 | 1592 |
|
| 1579 |
-Method to set and get caches. |
|
| 1593 |
+Method to set and get cache. |
|
| 1594 |
+Default to the following one. |
|
| 1595 |
+ |
|
| 1596 |
+ sub {
|
|
| 1597 |
+ my $self = shift; |
|
| 1598 |
+ |
|
| 1599 |
+ $self->{_cached} ||= {};
|
|
| 1600 |
+ |
|
| 1601 |
+ if (@_ > 1) {
|
|
| 1602 |
+ $self->{_cached}{$_[0]} = $_[1];
|
|
| 1603 |
+ } |
|
| 1604 |
+ else {
|
|
| 1605 |
+ return $self->{_cached}{$_[0]};
|
|
| 1606 |
+ } |
|
| 1607 |
+ } |
|
| 1580 | 1608 |
|
| 1581 | 1609 |
=head2 C<connect> |
| 1582 | 1610 |
|
| 1583 |
- my $dbi = DBIx::Custom->connect(data_source => "dbi:mysql:database=dbname", |
|
| 1584 |
- user => 'ken', password => '!LFKD%$&'); |
|
| 1611 |
+ my $dbi = DBIx::Custom->connect( |
|
| 1612 |
+ data_source => "dbi:mysql:database=dbname", |
|
| 1613 |
+ user => 'ken', |
|
| 1614 |
+ password => '!LFKD%$&', |
|
| 1615 |
+ dbi_option => {mysql_enable_utf8 => 1}
|
|
| 1616 |
+ ); |
|
| 1617 |
+ |
|
| 1618 |
+Connect to the database and create a new L<DBIx::Custom> object. |
|
| 1585 | 1619 |
|
| 1586 |
-Create a new L<DBIx::Custom> object and connect to the database. |
|
| 1587 | 1620 |
L<DBIx::Custom> is a wrapper of L<DBI>. |
| 1588 | 1621 |
C<AutoCommit> and C<RaiseError> options are true, |
| 1589 |
-and C<PrintError> option is false by default. |
|
| 1622 |
+and C<PrintError> option is false by default. |
|
| 1590 | 1623 |
|
| 1591 | 1624 |
=head2 C<create_query> |
| 1592 | 1625 |
|
| 1593 | 1626 |
my $query = $dbi->create_query( |
| 1594 |
- "select * from book where {= author} and {like title};"
|
|
| 1627 |
+ "insert into book {insert_param title author};";
|
|
| 1595 | 1628 |
); |
| 1596 | 1629 |
|
| 1597 |
-Create the instance of L<DBIx::Custom::Query> from the source of SQL. |
|
| 1630 |
+Create L<DBIx::Custom::Query> object. |
|
| 1631 |
+ |
|
| 1598 | 1632 |
If you want to get high performance, |
| 1599 |
-use C<create_query()> method and execute it by C<execute()> method |
|
| 1600 |
-instead of suger methods. |
|
| 1633 |
+create L<DBIx::Custom::Query> object and execute the query by C<execute()> |
|
| 1634 |
+instead of other methods, such as C<insert>, C<update>. |
|
| 1601 | 1635 |
|
| 1602 | 1636 |
$dbi->execute($query, {author => 'Ken', title => '%Perl%'});
|
| 1603 | 1637 |
|
| ... | ... |
@@ -1608,18 +1642,66 @@ instead of suger methods. |
| 1608 | 1642 |
|
| 1609 | 1643 |
Get and set database handle of L<DBI>. |
| 1610 | 1644 |
|
| 1611 |
-If process is changed by forking, new connection is created |
|
| 1612 |
-and get new database hande ofL<DBI>. This feature is EXPERIMETNAL. |
|
| 1645 |
+If process is spawn by forking, new connection is created automatically. |
|
| 1646 |
+This feature is EXPERIMETNAL. |
|
| 1613 | 1647 |
|
| 1614 | 1648 |
=head2 C<execute> |
| 1615 | 1649 |
|
| 1616 |
- my $result = $dbi->execute($query, param => $params, filter => \@filter); |
|
| 1617 |
- my $result = $dbi->execute($source, param => $params, filter => \@filter); |
|
| 1650 |
+ my $result = $dbi->execute( |
|
| 1651 |
+ "select * from book where {= title} and {like author}",
|
|
| 1652 |
+ param => {title => 'Perl', author => '%Ken%'}
|
|
| 1653 |
+ ); |
|
| 1654 |
+ |
|
| 1655 |
+Execute SQL, containing tags. |
|
| 1656 |
+Return value is L<DBIx::Custom::Result> in select statement, or |
|
| 1657 |
+the count of affected rows in insert, update, delete statement. |
|
| 1658 |
+ |
|
| 1659 |
+Tag is turned into the statement containing place holder |
|
| 1660 |
+before SQL is executed. |
|
| 1661 |
+ |
|
| 1662 |
+ select * from where title = ? and author like ?; |
|
| 1663 |
+ |
|
| 1664 |
+See also L<Tags/Tags>. |
|
| 1665 |
+ |
|
| 1666 |
+The following opitons are currently available. |
|
| 1667 |
+ |
|
| 1668 |
+=over 4 |
|
| 1669 |
+ |
|
| 1670 |
+=item C<filter> |
|
| 1671 |
+ |
|
| 1672 |
+Filter, executed before data is send to database. This is array reference. |
|
| 1673 |
+Filter value is code reference or |
|
| 1674 |
+filter name registerd by C<register_filter()>. |
|
| 1675 |
+ |
|
| 1676 |
+ # Basic |
|
| 1677 |
+ $dbi->execute( |
|
| 1678 |
+ $sql, |
|
| 1679 |
+ filter => [ |
|
| 1680 |
+ title => sub { uc $_[0] }
|
|
| 1681 |
+ author => sub { uc $_[0] }
|
|
| 1682 |
+ ] |
|
| 1683 |
+ ); |
|
| 1684 |
+ |
|
| 1685 |
+ # At once |
|
| 1686 |
+ $dbi->execute( |
|
| 1687 |
+ $sql, |
|
| 1688 |
+ filter => [ |
|
| 1689 |
+ [qw/title author/] => sub { uc $_[0] }
|
|
| 1690 |
+ ] |
|
| 1691 |
+ ); |
|
| 1692 |
+ |
|
| 1693 |
+ # Filter name |
|
| 1694 |
+ $dbi->execute( |
|
| 1695 |
+ $sql, |
|
| 1696 |
+ filter => [ |
|
| 1697 |
+ title => 'upper_case', |
|
| 1698 |
+ author => 'upper_case' |
|
| 1699 |
+ ] |
|
| 1700 |
+ ); |
|
| 1701 |
+ |
|
| 1702 |
+These filters are added to the C<out> filters, set by C<apply_filter()>. |
|
| 1618 | 1703 |
|
| 1619 |
-Execute query or the source of SQL. |
|
| 1620 |
-Query is L<DBIx::Custom::Query> object. |
|
| 1621 |
-Return value is L<DBIx::Custom::Result> if select statement is executed, |
|
| 1622 |
-or the count of affected rows if insert, update, delete statement is executed. |
|
| 1704 |
+=back |
|
| 1623 | 1705 |
|
| 1624 | 1706 |
=head2 C<delete> |
| 1625 | 1707 |
|
| ... | ... |
@@ -1629,6 +1711,8 @@ Delete statement. |
| 1629 | 1711 |
|
| 1630 | 1712 |
The following opitons are currently available. |
| 1631 | 1713 |
|
| 1714 |
+=over 4 |
|
| 1715 |
+ |
|
| 1632 | 1716 |
=item C<table> |
| 1633 | 1717 |
|
| 1634 | 1718 |
Table name. |
| ... | ... |
@@ -1686,7 +1770,7 @@ filter name registerd by C<register_filter()>. |
| 1686 | 1770 |
|
| 1687 | 1771 |
These filters are added to the C<out> filters, set by C<apply_filter()>. |
| 1688 | 1772 |
|
| 1689 |
-=item C<query EXPERIMENTAL> |
|
| 1773 |
+=item C<query> EXPERIMENTAL |
|
| 1690 | 1774 |
|
| 1691 | 1775 |
Get L<DBIx::Custom::Query> object instead of executing SQL. |
| 1692 | 1776 |
This is true or false value. |
| ... | ... |
@@ -1697,6 +1781,8 @@ You can check SQL. |
| 1697 | 1781 |
|
| 1698 | 1782 |
my $sql = $query->sql; |
| 1699 | 1783 |
|
| 1784 |
+=back |
|
| 1785 |
+ |
|
| 1700 | 1786 |
=head2 C<delete_all> |
| 1701 | 1787 |
|
| 1702 | 1788 |
$dbi->delete_all(table => $table); |
| ... | ... |
@@ -1704,7 +1790,7 @@ You can check SQL. |
| 1704 | 1790 |
Delete statement to delete all rows. |
| 1705 | 1791 |
Options is same as C<delete()>. |
| 1706 | 1792 |
|
| 1707 |
-=head2 C<delete_at() EXPERIMENTAL> |
|
| 1793 |
+=head2 C<delete_at()> EXPERIMENTAL |
|
| 1708 | 1794 |
|
| 1709 | 1795 |
Delete statement, using primary key. |
| 1710 | 1796 |
|
| ... | ... |
@@ -1718,7 +1804,9 @@ This method is same as C<delete()> exept that |
| 1718 | 1804 |
C<primary_key> is specified and C<where> is constant value or array refrence. |
| 1719 | 1805 |
all option of C<delete()> is available. |
| 1720 | 1806 |
|
| 1721 |
-=head2 C<primary_key> |
|
| 1807 |
+=over 4 |
|
| 1808 |
+ |
|
| 1809 |
+=item C<primary_key> |
|
| 1722 | 1810 |
|
| 1723 | 1811 |
Primary key. This is constant value or array reference. |
| 1724 | 1812 |
|
| ... | ... |
@@ -1730,7 +1818,7 @@ Primary key. This is constant value or array reference. |
| 1730 | 1818 |
|
| 1731 | 1819 |
This is used to create where clause. |
| 1732 | 1820 |
|
| 1733 |
-=head2 C<where> |
|
| 1821 |
+=item C<where> |
|
| 1734 | 1822 |
|
| 1735 | 1823 |
Where clause, created from primary key information. |
| 1736 | 1824 |
This is constant value or array reference. |
| ... | ... |
@@ -1747,6 +1835,8 @@ In first examle, the following SQL is created. |
| 1747 | 1835 |
|
| 1748 | 1836 |
Place holder is set to 5. |
| 1749 | 1837 |
|
| 1838 |
+=back |
|
| 1839 |
+ |
|
| 1750 | 1840 |
=head2 C<insert> |
| 1751 | 1841 |
|
| 1752 | 1842 |
$dbi->insert( |
| ... | ... |
@@ -1758,6 +1848,8 @@ Insert statement. |
| 1758 | 1848 |
|
| 1759 | 1849 |
The following opitons are currently available. |
| 1760 | 1850 |
|
| 1851 |
+=over 4 |
|
| 1852 |
+ |
|
| 1761 | 1853 |
=item C<table> |
| 1762 | 1854 |
|
| 1763 | 1855 |
Table name. |
| ... | ... |
@@ -1766,8 +1858,6 @@ Table name. |
| 1766 | 1858 |
|
| 1767 | 1859 |
=item C<param> |
| 1768 | 1860 |
|
| 1769 |
-=item C<param> |
|
| 1770 |
- |
|
| 1771 | 1861 |
Insert data. This is hash reference. |
| 1772 | 1862 |
|
| 1773 | 1863 |
$dbi->insert(param => {title => 'Perl'});
|
| ... | ... |
@@ -1809,7 +1899,7 @@ filter name registerd by C<register_filter()>. |
| 1809 | 1899 |
|
| 1810 | 1900 |
These filters are added to the C<out> filters, set by C<apply_filter()>. |
| 1811 | 1901 |
|
| 1812 |
-=item C<query EXPERIMENTAL> |
|
| 1902 |
+=item C<query> EXPERIMENTAL |
|
| 1813 | 1903 |
|
| 1814 | 1904 |
Get L<DBIx::Custom::Query> object instead of executing SQL. |
| 1815 | 1905 |
This is true or false value. |
| ... | ... |
@@ -1820,7 +1910,9 @@ You can check SQL. |
| 1820 | 1910 |
|
| 1821 | 1911 |
my $sql = $query->sql; |
| 1822 | 1912 |
|
| 1823 |
-=head2 C<insert_at() EXPERIMENTAL> |
|
| 1913 |
+=back |
|
| 1914 |
+ |
|
| 1915 |
+=head2 C<insert_at()> EXPERIMENTAL |
|
| 1824 | 1916 |
|
| 1825 | 1917 |
Insert statement, using primary key. |
| 1826 | 1918 |
|
| ... | ... |
@@ -1835,7 +1927,9 @@ This method is same as C<insert()> exept that |
| 1835 | 1927 |
C<primary_key> is specified and C<where> is constant value or array refrence. |
| 1836 | 1928 |
all option of C<insert()> is available. |
| 1837 | 1929 |
|
| 1838 |
-=head2 C<primary_key> |
|
| 1930 |
+=over 4 |
|
| 1931 |
+ |
|
| 1932 |
+=item C<primary_key> |
|
| 1839 | 1933 |
|
| 1840 | 1934 |
Primary key. This is constant value or array reference. |
| 1841 | 1935 |
|
| ... | ... |
@@ -1847,7 +1941,7 @@ Primary key. This is constant value or array reference. |
| 1847 | 1941 |
|
| 1848 | 1942 |
This is used to create parts of insert data. |
| 1849 | 1943 |
|
| 1850 |
-=head2 C<where> |
|
| 1944 |
+=item C<where> |
|
| 1851 | 1945 |
|
| 1852 | 1946 |
Parts of Insert data, create from primary key information. |
| 1853 | 1947 |
This is constant value or array reference. |
| ... | ... |
@@ -1864,19 +1958,21 @@ In first examle, the following SQL is created. |
| 1864 | 1958 |
|
| 1865 | 1959 |
Place holders are set to 5 and 'Perl'. |
| 1866 | 1960 |
|
| 1867 |
-=head2 C<insert_param EXPERIMENTAL> |
|
| 1961 |
+=back |
|
| 1962 |
+ |
|
| 1963 |
+=head2 C<insert_param> EXPERIMENTAL |
|
| 1868 | 1964 |
|
| 1869 | 1965 |
my $insert_param = $dbi->insert_param({title => 'a', age => 2});
|
| 1870 | 1966 |
|
| 1871 | 1967 |
Create insert parameter tag. |
| 1872 | 1968 |
|
| 1873 |
- {title => 'a', age => 2} -> {insert_param title age}
|
|
| 1969 |
+ {insert_param title age}
|
|
| 1874 | 1970 |
|
| 1875 |
-=head2 C<each_column EXPERIMENTAL> |
|
| 1971 |
+=head2 C<each_column> EXPERIMENTAL |
|
| 1876 | 1972 |
|
| 1877 | 1973 |
$dbi->each_column( |
| 1878 | 1974 |
sub {
|
| 1879 |
- my ($self, $table, $column, $column_info) = @_; |
|
| 1975 |
+ my ($dbi, $table, $column, $column_info) = @_; |
|
| 1880 | 1976 |
|
| 1881 | 1977 |
my $type = $column_info->{TYPE_NAME};
|
| 1882 | 1978 |
|
| ... | ... |
@@ -1885,125 +1981,161 @@ Create insert parameter tag. |
| 1885 | 1981 |
} |
| 1886 | 1982 |
} |
| 1887 | 1983 |
); |
| 1888 |
-Get column informations from database. |
|
| 1889 |
-Argument is callback. |
|
| 1890 |
-You can do anything in callback. |
|
| 1984 |
+ |
|
| 1985 |
+Iterate all column informations of all table from database. |
|
| 1986 |
+Argument is callback when one column is found. |
|
| 1891 | 1987 |
Callback receive four arguments, dbi object, table name, |
| 1892 | 1988 |
column name and column information. |
| 1893 | 1989 |
|
| 1894 |
-=head2 C<include_model EXPERIMENTAL> |
|
| 1990 |
+=head2 C<include_model> EXPERIMENTAL |
|
| 1895 | 1991 |
|
| 1896 |
- $dbi->include_model( |
|
| 1897 |
- 'MyModel' => [ |
|
| 1898 |
- 'book', 'person', 'company' |
|
| 1899 |
- ] |
|
| 1900 |
- ); |
|
| 1992 |
+ $dbi->include_model('MyModel');
|
|
| 1901 | 1993 |
|
| 1902 |
-Include models. First argument is name space. |
|
| 1903 |
-Second argument is array reference of class base names. |
|
| 1994 |
+Include models from specified namespace, |
|
| 1995 |
+the following layout is needed to include models. |
|
| 1904 | 1996 |
|
| 1905 |
-If you don't specify second argument, All models under name space is |
|
| 1906 |
-included. |
|
| 1997 |
+ lib / MyModel.pm |
|
| 1998 |
+ / MyModel / book.pm |
|
| 1999 |
+ / company.pm |
|
| 1907 | 2000 |
|
| 1908 |
- $dbi->include_model('MyModel');
|
|
| 2001 |
+Name space module, extending L<DBIx::Custom::Model>. |
|
| 1909 | 2002 |
|
| 1910 |
-Note that in this case name spece module is needed. |
|
| 2003 |
+B<MyModel.pm> |
|
| 1911 | 2004 |
|
| 1912 |
- # MyModel.pm |
|
| 1913 | 2005 |
package MyModel; |
| 1914 | 2006 |
|
| 1915 | 2007 |
use base 'DBIx::Custom::Model'; |
| 2008 |
+ |
|
| 2009 |
+ 1; |
|
| 1916 | 2010 |
|
| 1917 |
-The following model is instantiated and included. |
|
| 2011 |
+Model modules, extending name space module. |
|
| 1918 | 2012 |
|
| 1919 |
- MyModel::book |
|
| 1920 |
- MyModel::person |
|
| 1921 |
- MyModel::company |
|
| 2013 |
+B<MyModel/book.pm> |
|
| 1922 | 2014 |
|
| 1923 |
-You can get these instance by C<model()>. |
|
| 2015 |
+ package MyModel::book; |
|
| 2016 |
+ |
|
| 2017 |
+ use base 'MyModel'; |
|
| 2018 |
+ |
|
| 2019 |
+ 1; |
|
| 1924 | 2020 |
|
| 1925 |
- my $book_model = $dbi->model('book');
|
|
| 2021 |
+B<MyModel/company.pm> |
|
| 1926 | 2022 |
|
| 1927 |
-If you want to other name as model class, |
|
| 1928 |
-you can do like this. |
|
| 2023 |
+ package MyModel::company; |
|
| 2024 |
+ |
|
| 2025 |
+ use base 'MyModel'; |
|
| 2026 |
+ |
|
| 2027 |
+ 1; |
|
| 2028 |
+ |
|
| 2029 |
+MyModel::book and MyModel::company is included by C<include_model()>. |
|
| 1929 | 2030 |
|
| 1930 |
- $dbi->include_model( |
|
| 1931 |
- 'MyModel' => [ |
|
| 1932 |
- {'book' => 'Book'},
|
|
| 1933 |
- {'person' => 'Person'}
|
|
| 1934 |
- ] |
|
| 1935 |
- ); |
|
| 2031 |
+You can get model object by C<model()>. |
|
| 2032 |
+ |
|
| 2033 |
+ my $book_model = $dbi->model('book');
|
|
| 2034 |
+ my $company_model = $dbi->model('company');
|
|
| 1936 | 2035 |
|
| 1937 |
-=head2 C<method EXPERIMENTAL> |
|
| 2036 |
+See L<DBIx::Custom::Model> to know model features. |
|
| 2037 |
+ |
|
| 2038 |
+=head2 C<method> EXPERIMENTAL |
|
| 1938 | 2039 |
|
| 1939 | 2040 |
$dbi->method( |
| 1940 | 2041 |
update_or_insert => sub {
|
| 1941 | 2042 |
my $self = shift; |
| 1942 |
- # do something |
|
| 2043 |
+ |
|
| 2044 |
+ # Process |
|
| 1943 | 2045 |
}, |
| 1944 | 2046 |
find_or_create => sub {
|
| 1945 | 2047 |
my $self = shift; |
| 1946 |
- # do something |
|
| 2048 |
+ |
|
| 2049 |
+ # Process |
|
| 1947 | 2050 |
} |
| 1948 | 2051 |
); |
| 1949 | 2052 |
|
| 1950 |
-Register method. These method is called from L<DBIx::Custom> object directory. |
|
| 2053 |
+Register method. These method is called directly from L<DBIx::Custom> object. |
|
| 1951 | 2054 |
|
| 1952 | 2055 |
$dbi->update_or_insert; |
| 1953 | 2056 |
$dbi->find_or_create; |
| 1954 | 2057 |
|
| 2058 |
+=head2 C<model> EXPERIMENTAL |
|
| 2059 |
+ |
|
| 2060 |
+ $dbi->model('book')->method(
|
|
| 2061 |
+ insert => sub { ... },
|
|
| 2062 |
+ update => sub { ... }
|
|
| 2063 |
+ ); |
|
| 2064 |
+ |
|
| 2065 |
+ my $model = $dbi->model('book');
|
|
| 2066 |
+ |
|
| 2067 |
+Set and get a L<DBIx::Custom::Model> object, |
|
| 2068 |
+ |
|
| 1955 | 2069 |
=head2 C<new> |
| 1956 | 2070 |
|
| 1957 |
- my $dbi = DBIx::Custom->connect(data_source => "dbi:mysql:database=dbname", |
|
| 1958 |
- user => 'ken', password => '!LFKD%$&'); |
|
| 2071 |
+ my $dbi = DBIx::Custom->new( |
|
| 2072 |
+ data_source => "dbi:mysql:database=dbname", |
|
| 2073 |
+ user => 'ken', |
|
| 2074 |
+ password => '!LFKD%$&', |
|
| 2075 |
+ dbi_option => {mysql_enable_utf8 => 1}
|
|
| 2076 |
+ ); |
|
| 1959 | 2077 |
|
| 1960 | 2078 |
Create a new L<DBIx::Custom> object. |
| 1961 | 2079 |
|
| 1962 |
-=head2 C<not_exists EXPERIMENTAL> |
|
| 2080 |
+=head2 C<not_exists> EXPERIMENTAL |
|
| 1963 | 2081 |
|
| 1964 | 2082 |
my $not_exists = $dbi->not_exists; |
| 1965 | 2083 |
|
| 1966 |
-Get DBIx::Custom::NotExists object. |
|
| 2084 |
+DBIx::Custom::NotExists object, indicating the column is not exists. |
|
| 2085 |
+This is used by C<clause> of L<DBIx::Custom::Where> . |
|
| 1967 | 2086 |
|
| 1968 | 2087 |
=head2 C<register_filter> |
| 1969 | 2088 |
|
| 1970 |
- $dbi->register_filter(%filters); |
|
| 1971 |
- $dbi->register_filter(\%filters); |
|
| 2089 |
+ $dbi->register_filter( |
|
| 2090 |
+ # Time::Piece object to database DATE format |
|
| 2091 |
+ tp_to_date => sub {
|
|
| 2092 |
+ my $tp = shift; |
|
| 2093 |
+ return $tp->strftime('%Y-%m-%d');
|
|
| 2094 |
+ }, |
|
| 2095 |
+ # database DATE format to Time::Piece object |
|
| 2096 |
+ date_to_tp => sub {
|
|
| 2097 |
+ my $date = shift; |
|
| 2098 |
+ return Time::Piece->strptime($date, '%Y-%m-%d'); |
|
| 2099 |
+ } |
|
| 2100 |
+ ); |
|
| 1972 | 2101 |
|
| 1973 |
-Register filter. Registered filters is available in the following attributes |
|
| 1974 |
-or arguments. |
|
| 1975 |
- |
|
| 1976 |
-=over 4 |
|
| 2102 |
+Register filters, used by C<filter> option of many methods. |
|
| 1977 | 2103 |
|
| 1978 |
-=item * |
|
| 1979 |
- |
|
| 1980 |
-C<filter> argument of C<insert()>, C<update()>, |
|
| 1981 |
-C<update_all()>, C<delete()>, C<delete_all()>, C<select()> |
|
| 1982 |
-methods |
|
| 2104 |
+=head2 C<register_tag> |
|
| 1983 | 2105 |
|
| 1984 |
-=item * |
|
| 2106 |
+ $dbi->register_tag( |
|
| 2107 |
+ update => sub {
|
|
| 2108 |
+ my @columns = @_; |
|
| 2109 |
+ |
|
| 2110 |
+ # Update parameters |
|
| 2111 |
+ my $s = 'set '; |
|
| 2112 |
+ $s .= "$_ = ?, " for @columns; |
|
| 2113 |
+ $s =~ s/, $//; |
|
| 2114 |
+ |
|
| 2115 |
+ return [$s, \@columns]; |
|
| 2116 |
+ } |
|
| 2117 |
+ ); |
|
| 1985 | 2118 |
|
| 1986 |
-C<execute()> method |
|
| 2119 |
+Register tag, used by C<execute()>. |
|
| 1987 | 2120 |
|
| 1988 |
-=item * |
|
| 2121 |
+See also L<Tags/Tags> about tag registered by default. |
|
| 1989 | 2122 |
|
| 1990 |
-C<default_filter> and C<filter> of C<DBIx::Custom::Query> |
|
| 2123 |
+Tag parser receive arguments specified in tag. |
|
| 2124 |
+In the following tag, 'title' and 'author' is parser arguments |
|
| 1991 | 2125 |
|
| 1992 |
-=item * |
|
| 2126 |
+ {update_param title author}
|
|
| 1993 | 2127 |
|
| 1994 |
-C<default_filter> and C<filter> of C<DBIx::Custom::Result> |
|
| 2128 |
+Tag parser must return array refrence, |
|
| 2129 |
+first element is the result statement, |
|
| 2130 |
+second element is column names corresponding to place holders. |
|
| 1995 | 2131 |
|
| 1996 |
-=back |
|
| 2132 |
+In this example, result statement is |
|
| 1997 | 2133 |
|
| 1998 |
-=head2 C<register_tag> |
|
| 2134 |
+ set title = ?, author = ? |
|
| 1999 | 2135 |
|
| 2000 |
- $dbi->register_tag( |
|
| 2001 |
- limit => sub {
|
|
| 2002 |
- ...; |
|
| 2003 |
- } |
|
| 2004 |
- ); |
|
| 2136 |
+Column names is |
|
| 2005 | 2137 |
|
| 2006 |
-Register tag. |
|
| 2138 |
+ ['title', 'author'] |
|
| 2007 | 2139 |
|
| 2008 | 2140 |
=head2 C<select> |
| 2009 | 2141 |
|
| ... | ... |
@@ -2040,7 +2172,7 @@ Default is '*' unless C<column> is specified. |
| 2040 | 2172 |
# Default |
| 2041 | 2173 |
$dbi->select(column => '*'); |
| 2042 | 2174 |
|
| 2043 |
-=item C<all_column EXPERIMENTAL> |
|
| 2175 |
+=item C<all_column> EXPERIMENTAL |
|
| 2044 | 2176 |
|
| 2045 | 2177 |
Colum clause, contains all columns of joined table. This is true or false value |
| 2046 | 2178 |
|
| ... | ... |
@@ -2077,7 +2209,7 @@ Where clause. This is hash reference or L<DBIx::Custom::Where> object. |
| 2077 | 2209 |
); |
| 2078 | 2210 |
$dbi->select(where => $where); |
| 2079 | 2211 |
|
| 2080 |
-=item C<join EXPERIMENTAL> |
|
| 2212 |
+=item C<join> EXPERIMENTAL |
|
| 2081 | 2213 |
|
| 2082 | 2214 |
Join clause used in need. This is array reference. |
| 2083 | 2215 |
|
| ... | ... |
@@ -2145,7 +2277,7 @@ filter name registerd by C<register_filter()>. |
| 2145 | 2277 |
|
| 2146 | 2278 |
These filters are added to the C<out> filters, set by C<apply_filter()>. |
| 2147 | 2279 |
|
| 2148 |
-=item C<query EXPERIMENTAL> |
|
| 2280 |
+=item C<query> EXPERIMENTAL |
|
| 2149 | 2281 |
|
| 2150 | 2282 |
Get L<DBIx::Custom::Query> object instead of executing SQL. |
| 2151 | 2283 |
This is true or false value. |
| ... | ... |
@@ -2158,7 +2290,7 @@ You can check SQL. |
| 2158 | 2290 |
|
| 2159 | 2291 |
=back |
| 2160 | 2292 |
|
| 2161 |
-=head2 C<select_at() EXPERIMENTAL> |
|
| 2293 |
+=head2 C<select_at()> EXPERIMENTAL |
|
| 2162 | 2294 |
|
| 2163 | 2295 |
Select statement, using primary key. |
| 2164 | 2296 |
|
| ... | ... |
@@ -2172,7 +2304,9 @@ This method is same as C<select()> exept that |
| 2172 | 2304 |
C<primary_key> is specified and C<where> is constant value or array refrence. |
| 2173 | 2305 |
all option of C<select()> is available. |
| 2174 | 2306 |
|
| 2175 |
-=head2 C<primary_key> |
|
| 2307 |
+=over 4 |
|
| 2308 |
+ |
|
| 2309 |
+=item C<primary_key> |
|
| 2176 | 2310 |
|
| 2177 | 2311 |
Primary key. This is constant value or array reference. |
| 2178 | 2312 |
|
| ... | ... |
@@ -2184,7 +2318,7 @@ Primary key. This is constant value or array reference. |
| 2184 | 2318 |
|
| 2185 | 2319 |
This is used to create where clause. |
| 2186 | 2320 |
|
| 2187 |
-=head2 C<where> |
|
| 2321 |
+=item C<where> |
|
| 2188 | 2322 |
|
| 2189 | 2323 |
Where clause, created from primary key information. |
| 2190 | 2324 |
This is constant value or array reference. |
| ... | ... |
@@ -2201,6 +2335,8 @@ In first examle, the following SQL is created. |
| 2201 | 2335 |
|
| 2202 | 2336 |
Place holder is set to 5. |
| 2203 | 2337 |
|
| 2338 |
+=back |
|
| 2339 |
+ |
|
| 2204 | 2340 |
=head2 C<update> |
| 2205 | 2341 |
|
| 2206 | 2342 |
$dbi->update( |
| ... | ... |
@@ -2215,6 +2351,8 @@ The following opitons are currently available. |
| 2215 | 2351 |
|
| 2216 | 2352 |
=over 4 |
| 2217 | 2353 |
|
| 2354 |
+=item C<table> |
|
| 2355 |
+ |
|
| 2218 | 2356 |
Table name. |
| 2219 | 2357 |
|
| 2220 | 2358 |
$dbi->update(table => 'book'); |
| ... | ... |
@@ -2276,18 +2414,7 @@ filter name registerd by C<register_filter()>. |
| 2276 | 2414 |
|
| 2277 | 2415 |
These filters are added to the C<out> filters, set by C<apply_filter()>. |
| 2278 | 2416 |
|
| 2279 |
-=head2 C<model EXPERIMENTAL> |
|
| 2280 |
- |
|
| 2281 |
- $dbi->model('book')->method(
|
|
| 2282 |
- insert => sub { ... },
|
|
| 2283 |
- update => sub { ... }
|
|
| 2284 |
- ); |
|
| 2285 |
- |
|
| 2286 |
- my $model = $dbi->model('book');
|
|
| 2287 |
- |
|
| 2288 |
-Set and get a L<DBIx::Custom::Model> object, |
|
| 2289 |
- |
|
| 2290 |
-=item C<query EXPERIMENTAL> |
|
| 2417 |
+=item C<query> EXPERIMENTAL |
|
| 2291 | 2418 |
|
| 2292 | 2419 |
Get L<DBIx::Custom::Query> object instead of executing SQL. |
| 2293 | 2420 |
This is true or false value. |
| ... | ... |
@@ -2298,6 +2425,8 @@ You can check SQL. |
| 2298 | 2425 |
|
| 2299 | 2426 |
my $sql = $query->sql; |
| 2300 | 2427 |
|
| 2428 |
+=back |
|
| 2429 |
+ |
|
| 2301 | 2430 |
=head2 C<update_all> |
| 2302 | 2431 |
|
| 2303 | 2432 |
$dbi->update_all(table => 'book', param => {title => 'Perl'});
|
| ... | ... |
@@ -2305,7 +2434,7 @@ You can check SQL. |
| 2305 | 2434 |
Update statement to update all rows. |
| 2306 | 2435 |
Options is same as C<update()>. |
| 2307 | 2436 |
|
| 2308 |
-=head2 C<update_at() EXPERIMENTAL> |
|
| 2437 |
+=head2 C<update_at()> EXPERIMENTAL |
|
| 2309 | 2438 |
|
| 2310 | 2439 |
Update statement, using primary key. |
| 2311 | 2440 |
|
| ... | ... |
@@ -2320,7 +2449,9 @@ This method is same as C<update()> exept that |
| 2320 | 2449 |
C<primary_key> is specified and C<where> is constant value or array refrence. |
| 2321 | 2450 |
all option of C<update()> is available. |
| 2322 | 2451 |
|
| 2323 |
-=head2 C<primary_key> |
|
| 2452 |
+=over 4 |
|
| 2453 |
+ |
|
| 2454 |
+=item C<primary_key> |
|
| 2324 | 2455 |
|
| 2325 | 2456 |
Primary key. This is constant value or array reference. |
| 2326 | 2457 |
|
| ... | ... |
@@ -2332,7 +2463,7 @@ Primary key. This is constant value or array reference. |
| 2332 | 2463 |
|
| 2333 | 2464 |
This is used to create where clause. |
| 2334 | 2465 |
|
| 2335 |
-=head2 C<where> |
|
| 2466 |
+=item C<where> |
|
| 2336 | 2467 |
|
| 2337 | 2468 |
Where clause, created from primary key information. |
| 2338 | 2469 |
This is constant value or array reference. |
| ... | ... |
@@ -2349,7 +2480,9 @@ In first examle, the following SQL is created. |
| 2349 | 2480 |
|
| 2350 | 2481 |
Place holders are set to 'Perl' and 5. |
| 2351 | 2482 |
|
| 2352 |
-=head2 C<update_param EXPERIMENTAL> |
|
| 2483 |
+=back |
|
| 2484 |
+ |
|
| 2485 |
+=head2 C<update_param> EXPERIMENTAL |
|
| 2353 | 2486 |
|
| 2354 | 2487 |
my $update_param = $dbi->update_param({title => 'a', age => 2});
|
| 2355 | 2488 |
|
| ... | ... |
@@ -2357,7 +2490,7 @@ Create update parameter tag. |
| 2357 | 2490 |
|
| 2358 | 2491 |
{update_param title age}
|
| 2359 | 2492 |
|
| 2360 |
-=head2 C<where EXPERIMENTAL> |
|
| 2493 |
+=head2 C<where> EXPERIMENTAL |
|
| 2361 | 2494 |
|
| 2362 | 2495 |
my $where = $dbi->where( |
| 2363 | 2496 |
clause => ['and', '{= title}', '{= author}'],
|
| ... | ... |
@@ -2366,24 +2499,24 @@ Create update parameter tag. |
| 2366 | 2499 |
|
| 2367 | 2500 |
Create a new L<DBIx::Custom::Where> object. |
| 2368 | 2501 |
|
| 2369 |
-=head2 C<setup_model EXPERIMENTAL> |
|
| 2502 |
+=head2 C<setup_model> EXPERIMENTAL |
|
| 2370 | 2503 |
|
| 2371 | 2504 |
$dbi->setup_model; |
| 2372 | 2505 |
|
| 2373 | 2506 |
Setup all model objects. |
| 2374 |
-C<columns> and C<primary_key> is automatically set. |
|
| 2507 |
+C<columns> of model object is automatically set, parsing database information. |
|
| 2375 | 2508 |
|
| 2376 | 2509 |
=head1 Tags |
| 2377 | 2510 |
|
| 2378 | 2511 |
The following tags is available. |
| 2379 | 2512 |
|
| 2380 |
-=head2 C<table EXPERIMENTAL> |
|
| 2513 |
+=head2 C<table> EXPERIMENTAL |
|
| 2381 | 2514 |
|
| 2382 | 2515 |
Table tag |
| 2383 | 2516 |
|
| 2384 | 2517 |
{table TABLE} -> TABLE
|
| 2385 | 2518 |
|
| 2386 |
-This is used to teach what is applied table to C<execute()>. |
|
| 2519 |
+This is used to tell C<execute()> what table is needed . |
|
| 2387 | 2520 |
|
| 2388 | 2521 |
=head2 C<?> |
| 2389 | 2522 |
|
| ... | ... |
@@ -161,7 +161,7 @@ sub update_at {
|
| 161 | 161 |
|
| 162 | 162 |
=head1 NAME |
| 163 | 163 |
|
| 164 |
-DBIx::Custom::Model - Model (experimental) |
|
| 164 |
+DBIx::Custom::Model - Model EXPERIMENTAL |
|
| 165 | 165 |
|
| 166 | 166 |
=head1 SYNOPSIS |
| 167 | 167 |
|
| ... | ... |
@@ -197,7 +197,7 @@ This filter is applied when L<DBIx::Custom> C<include_model()> is called. |
| 197 | 197 |
|
| 198 | 198 |
Model name. |
| 199 | 199 |
|
| 200 |
-=head2 C<(experimental) join> |
|
| 200 |
+=head2 C<join> |
|
| 201 | 201 |
|
| 202 | 202 |
my $join = $model->join; |
| 203 | 203 |
$model = $model->join( |
| ... | ... |
@@ -372,7 +372,7 @@ Statement handle of L<DBI>. |
| 372 | 372 |
L<DBIx::Custom::Result> inherits all methods from L<Object::Simple> |
| 373 | 373 |
and implements the following new ones. |
| 374 | 374 |
|
| 375 |
-=head2 C<(experimental) end_filter> |
|
| 375 |
+=head2 C<end_filter> EXPERIMENTAL |
|
| 376 | 376 |
|
| 377 | 377 |
$result = $result->end_filter(title => 'to_something', |
| 378 | 378 |
author => 'to_something'); |
| ... | ... |
@@ -444,19 +444,19 @@ Filters. |
| 444 | 444 |
These each filters override the filters applied by C<apply_filter> of |
| 445 | 445 |
L<DBIx::Custom>. |
| 446 | 446 |
|
| 447 |
-=head2 C<(experimental) remove_end_filter> |
|
| 447 |
+=head2 C<remove_end_filter> EXPERIMENTAL |
|
| 448 | 448 |
|
| 449 | 449 |
$result->remove_end_filter; |
| 450 | 450 |
|
| 451 | 451 |
Remove end filter. |
| 452 | 452 |
|
| 453 |
-=head2 C<(experimental) remove_filter> |
|
| 453 |
+=head2 C<remove_filter> EXPERIMENTAL |
|
| 454 | 454 |
|
| 455 | 455 |
$result->remove_filter; |
| 456 | 456 |
|
| 457 | 457 |
Remove filter. End filter is not removed. |
| 458 | 458 |
|
| 459 |
-=head2 C<(experimental) stash> |
|
| 459 |
+=head2 C<stash> EXPERIMENTAL |
|
| 460 | 460 |
|
| 461 | 461 |
my $stash = $result->stash; |
| 462 | 462 |
my $foo = $result->stash->{foo};
|
| ... | ... |
@@ -68,7 +68,7 @@ sub placeholder {
|
| 68 | 68 |
sub update_param {
|
| 69 | 69 |
my @columns = @_; |
| 70 | 70 |
|
| 71 |
- # Update paramters |
|
| 71 |
+ # Update parameters |
|
| 72 | 72 |
my $s = 'set '; |
| 73 | 73 |
$s .= "$_ = ?, " for @columns; |
| 74 | 74 |
$s =~ s/, $//; |
| ... | ... |
@@ -112,7 +112,7 @@ sub _parse {
|
| 112 | 112 |
|
| 113 | 113 |
=head1 NAME |
| 114 | 114 |
|
| 115 |
-DBIx::Custom::Where - Where clause |
|
| 115 |
+DBIx::Custom::Where - Where clause EXPERIMENTAL |
|
| 116 | 116 |
|
| 117 | 117 |
=head1 SYNOPSYS |
| 118 | 118 |
|