[Bast-commits] r4455 - in
DBIx-Class/0.08/branches/replication_dedux: . lib/DBIx
lib/DBIx/Class lib/DBIx/Class/Storage t
jnapiorkowski at dev.catalyst.perl.org
jnapiorkowski at dev.catalyst.perl.org
Mon Jun 2 15:37:00 BST 2008
Author: jnapiorkowski
Date: 2008-06-02 15:37:00 +0100 (Mon, 02 Jun 2008)
New Revision: 4455
Modified:
DBIx-Class/0.08/branches/replication_dedux/
DBIx-Class/0.08/branches/replication_dedux/lib/DBIx/Class.pm
DBIx-Class/0.08/branches/replication_dedux/lib/DBIx/Class/Relationship.pm
DBIx-Class/0.08/branches/replication_dedux/lib/DBIx/Class/Storage/TxnScopeGuard.pm
DBIx-Class/0.08/branches/replication_dedux/t/81transactions.t
Log:
r13508 at dev (orig r4441): castaway | 2008-05-30 17:41:03 -0500
Update docs for best practices and correctness.
r13509 at dev (orig r4448): castaway | 2008-05-31 15:14:05 -0500
Fix broken pod test (missing newline!)
r13510 at dev (orig r4451): ash | 2008-06-01 05:28:14 -0500
Prepare for new dev release
Property changes on: DBIx-Class/0.08/branches/replication_dedux
___________________________________________________________________
Name: svk:merge
- 168d5346-440b-0410-b799-f706be625ff1:/DBIx-Class-current:2207
462d4d0c-b505-0410-bf8e-ce8f877b3390:/local/bast/DBIx-Class:3159
9c88509d-e914-0410-b01c-b9530614cbfe:/local/DBIx-Class:32260
9c88509d-e914-0410-b01c-b9530614cbfe:/local/DBIx-Class-CDBICompat:54993
9c88509d-e914-0410-b01c-b9530614cbfe:/vendor/DBIx-Class:31122
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/cdbicompat_integration:4160
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/file_column:3920
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/on_disconnect_do:3694
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/oracle_sequence:4173
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/savepoints:4223
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/storage-ms-access:4142
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/versioned_enhancements:4125
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/trunk:4438
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class-C3:318
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class-current:2222
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class-joins:173
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class-resultset:570
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/datetime:1716
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/find_compat:1855
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/find_unique_query_fixes:2142
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/inflate:1988
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/many_to_many:2025
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/re_refactor_bugfix:1944
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/reorganize_tests:1827
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/resultset-new-refactor:1766
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/resultset_2_electric_boogaloo:2175
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/resultset_cleanup:2102
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/sqlt_tests_refactor:2043
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/trunk/DBIx-Class:3606
fe160bb6-dc1c-0410-9f2b-d64a711b54a5:/local/DBIC-trunk-0.08:10510
+ 168d5346-440b-0410-b799-f706be625ff1:/DBIx-Class-current:2207
462d4d0c-b505-0410-bf8e-ce8f877b3390:/local/bast/DBIx-Class:3159
9c88509d-e914-0410-b01c-b9530614cbfe:/local/DBIx-Class:32260
9c88509d-e914-0410-b01c-b9530614cbfe:/local/DBIx-Class-CDBICompat:54993
9c88509d-e914-0410-b01c-b9530614cbfe:/vendor/DBIx-Class:31122
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/cdbicompat_integration:4160
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/file_column:3920
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/on_disconnect_do:3694
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/oracle_sequence:4173
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/savepoints:4223
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/storage-ms-access:4142
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/versioned_enhancements:4125
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/trunk:4451
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class-C3:318
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class-current:2222
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class-joins:173
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class-resultset:570
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/datetime:1716
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/find_compat:1855
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/find_unique_query_fixes:2142
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/inflate:1988
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/many_to_many:2025
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/re_refactor_bugfix:1944
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/reorganize_tests:1827
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/resultset-new-refactor:1766
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/resultset_2_electric_boogaloo:2175
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/resultset_cleanup:2102
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/sqlt_tests_refactor:2043
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/trunk/DBIx-Class:3606
fe160bb6-dc1c-0410-9f2b-d64a711b54a5:/local/DBIC-trunk-0.08:10510
Modified: DBIx-Class/0.08/branches/replication_dedux/lib/DBIx/Class/Relationship.pm
===================================================================
--- DBIx-Class/0.08/branches/replication_dedux/lib/DBIx/Class/Relationship.pm 2008-06-01 12:54:58 UTC (rev 4454)
+++ DBIx-Class/0.08/branches/replication_dedux/lib/DBIx/Class/Relationship.pm 2008-06-02 14:37:00 UTC (rev 4455)
@@ -269,6 +269,7 @@
My::Schema::Item->has_many('rels', 'My::Schema::Relationships',
[ { 'foreign.LItemID' => 'self.ID' },
{ 'foreign.RItemID' => 'self.ID'} ]);
+
=back
# in an Author class (where Author has_many Books)
Modified: DBIx-Class/0.08/branches/replication_dedux/lib/DBIx/Class/Storage/TxnScopeGuard.pm
===================================================================
--- DBIx-Class/0.08/branches/replication_dedux/lib/DBIx/Class/Storage/TxnScopeGuard.pm 2008-06-01 12:54:58 UTC (rev 4454)
+++ DBIx-Class/0.08/branches/replication_dedux/lib/DBIx/Class/Storage/TxnScopeGuard.pm 2008-06-02 14:37:00 UTC (rev 4455)
@@ -18,19 +18,13 @@
$self->[0] = 1;
}
-sub dismiss {
- my $self = shift;
-
- $self->[0] = 1;
-}
-
sub DESTROY {
my ($dismiss, $storage) = @{$_[0]};
return if $dismiss;
my $exception = $@;
- Carp::cluck("A DBIx::Class:: went out of scope without explicit commit/dismiss")
+ Carp::cluck("A DBIx::Class::Storage::TxnScopeGuard went out of scope without explicit commit or an error - bad")
unless $exception;
{
local $@;
@@ -53,7 +47,7 @@
=head1 NAME
-DBIx::Class::Storage::TxnScopeGuard
+DBIx::Class::Storage::TxnScopeGuard - Experimental
=head1 SYNOPSIS
Modified: DBIx-Class/0.08/branches/replication_dedux/lib/DBIx/Class.pm
===================================================================
--- DBIx-Class/0.08/branches/replication_dedux/lib/DBIx/Class.pm 2008-06-01 12:54:58 UTC (rev 4454)
+++ DBIx-Class/0.08/branches/replication_dedux/lib/DBIx/Class.pm 2008-06-02 14:37:00 UTC (rev 4455)
@@ -24,7 +24,7 @@
# i.e. first release of 0.XX *must* be 0.XX000. This avoids fBSD ports
# brain damage and presumably various other packaging systems too
-$VERSION = '0.08099_01';
+$VERSION = '0.08099_02';
$VERSION = eval $VERSION; # numify for warning-free dev releases
@@ -63,46 +63,48 @@
=head1 SYNOPSIS
-Create a schema class called DB/Main.pm:
+Create a schema class called MyDB/Schema.pm:
- package DB::Main;
+ package MyDB::Schema;
use base qw/DBIx::Class::Schema/;
__PACKAGE__->load_classes();
1;
-Create a table class to represent artists, who have many CDs, in DB/Main/Artist.pm:
+Create a table class to represent artists, who have many CDs, in
+MyDB/Schema/Artist.pm:
- package DB::Main::Artist;
+ package MyDB::Schema::Artist;
use base qw/DBIx::Class/;
- __PACKAGE__->load_components(qw/PK::Auto Core/);
+ __PACKAGE__->load_components(qw/Core/);
__PACKAGE__->table('artist');
__PACKAGE__->add_columns(qw/ artistid name /);
__PACKAGE__->set_primary_key('artistid');
- __PACKAGE__->has_many(cds => 'DB::Main::CD');
+ __PACKAGE__->has_many(cds => 'MyDB::Schema::CD');
1;
-A table class to represent a CD, which belongs to an artist, in DB/Main/CD.pm:
+A table class to represent a CD, which belongs to an artist, in
+MyDB/Schema/CD.pm:
- package DB::Main::CD;
+ package MyDB::Schema::CD;
use base qw/DBIx::Class/;
- __PACKAGE__->load_components(qw/PK::Auto Core/);
+ __PACKAGE__->load_components(qw/Core/);
__PACKAGE__->table('cd');
- __PACKAGE__->add_columns(qw/ cdid artist title year /);
+ __PACKAGE__->add_columns(qw/ cdid artistid title year /);
__PACKAGE__->set_primary_key('cdid');
- __PACKAGE__->belongs_to(artist => 'DB::Main::Artist');
+ __PACKAGE__->belongs_to(artist => 'MyDB::Schema::Artist', 'artistid');
1;
Then you can use these classes in your application's code:
# Connect to your database.
- use DB::Main;
- my $schema = DB::Main->connect($dbi_dsn, $user, $pass, \%dbi_params);
+ use MyDB::Schema;
+ my $schema = MyDB::Schema->connect($dbi_dsn, $user, $pass, \%dbi_params);
# Query for all artists and put them in an array,
# or retrieve them as a result set object.
@@ -128,7 +130,7 @@
{ order_by => 'title' }
);
- # Create a result set that will fetch the artist relationship
+ # Create a result set that will fetch the artist data
# at the same time as it fetches CDs, using only one query.
my $millennium_cds_rs = $schema->resultset('CD')->search(
{ year => 2000 },
@@ -136,7 +138,7 @@
);
my $cd = $millennium_cds_rs->next; # SELECT ... FROM cds JOIN artists ...
- my $cd_artist_name = $cd->artist->name; # Already has the data so no query
+ my $cd_artist_name = $cd->artist->name; # Already has the data so no 2nd query
# new() makes a DBIx::Class::Row object but doesnt insert it into the DB.
# create() is the same as new() then insert().
@@ -147,17 +149,18 @@
$schema->txn_do(sub { $new_cd->update }); # Runs the update in a transaction
- $millennium_cds_rs->update({ year => 2002 }); # Single-query bulk update
+ # change the year of all the millennium CDs at once
+ $millennium_cds_rs->update({ year => 2002 });
=head1 DESCRIPTION
This is an SQL to OO mapper with an object API inspired by L<Class::DBI>
-(and a compatibility layer as a springboard for porting) and a resultset API
+(with a compatibility layer as a springboard for porting) and a resultset API
that allows abstract encapsulation of database operations. It aims to make
representing queries in your code as perl-ish as possible while still
providing access to as many of the capabilities of the database as possible,
including retrieving related records from multiple tables in a single query,
-JOIN, LEFT JOIN, COUNT, DISTINCT, GROUP BY and HAVING support.
+JOIN, LEFT JOIN, COUNT, DISTINCT, GROUP BY, ORDER BY and HAVING support.
DBIx::Class can handle multi-column primary and foreign keys, complex
queries and database-level paging, and does its best to only query the
Modified: DBIx-Class/0.08/branches/replication_dedux/t/81transactions.t
===================================================================
--- DBIx-Class/0.08/branches/replication_dedux/t/81transactions.t 2008-06-01 12:54:58 UTC (rev 4454)
+++ DBIx-Class/0.08/branches/replication_dedux/t/81transactions.t 2008-06-02 14:37:00 UTC (rev 4455)
@@ -236,7 +236,9 @@
};
my $err = $@;
ok(($err eq ''), 'Pre-connection nested transactions.');
+ $schema2->storage->disconnect;
}
+$schema->storage->disconnect;
# Test txn_scope_guard
{
More information about the Bast-commits
mailing list