Commit | Line | Data |
---|---|---|
ea2e61bf | 1 | package DBIx::Class::DB; |
2 | ||
1edd1722 | 3 | use base qw/DBIx::Class/; |
8b445e33 | 4 | use DBIx::Class::Storage::DBI; |
11b78bd6 | 5 | use DBIx::Class::ClassResolver::PassThrough; |
604d9f38 | 6 | use DBI; |
ea2e61bf | 7 | |
34d52be2 | 8 | =head1 NAME |
9 | ||
8b445e33 | 10 | DBIx::Class::DB - Simple DBIx::Class Database connection by class inheritance |
34d52be2 | 11 | |
12 | =head1 SYNOPSIS | |
13 | ||
8b445e33 | 14 | package MyDB; |
15 | ||
16 | use base qw/DBIx::Class/; | |
503536d5 | 17 | __PACKAGE__->load_components('DB'); |
8b445e33 | 18 | |
19 | __PACKAGE__->connection('dbi:...', 'user', 'pass', \%attrs); | |
20 | ||
21 | package MyDB::MyTable; | |
22 | ||
23 | use base qw/MyDB/; | |
503536d5 | 24 | __PACKAGE__->load_components('Core'); |
4a9d7cae | 25 | |
26 | ... | |
8b445e33 | 27 | |
34d52be2 | 28 | =head1 DESCRIPTION |
29 | ||
8b445e33 | 30 | This class provides a simple way of specifying a database connection. |
34d52be2 | 31 | |
32 | =head1 METHODS | |
33 | ||
130c6439 | 34 | =head2 storage |
34d52be2 | 35 | |
130c6439 | 36 | Sets or gets the storage backend. Defaults to L<DBIx::Class::Storage::DBI>. |
076652e8 | 37 | |
130c6439 | 38 | =head2 class_resolver |
076652e8 | 39 | |
130c6439 | 40 | Sets or gets the class to use for resolving a class. Defaults to |
41 | L<DBIx::Class::ClassResolver::Passthrough>, which returns whatever you give | |
42 | it. See resolve_class below. | |
076652e8 | 43 | |
34d52be2 | 44 | =cut |
45 | ||
8b445e33 | 46 | __PACKAGE__->mk_classdata('storage'); |
11b78bd6 | 47 | __PACKAGE__->mk_classdata('class_resolver' => |
48 | 'DBIx::Class::ClassResolver::PassThrough'); | |
8fe001e1 | 49 | |
130c6439 | 50 | =head2 connection |
39fe0e65 | 51 | |
52 | __PACKAGE__->connection($dsn, $user, $pass, $attrs); | |
53 | ||
54 | Specifies the arguments that will be passed to DBI->connect(...) to | |
55 | instantiate the class dbh when required. | |
56 | ||
57 | =cut | |
58 | ||
8fe001e1 | 59 | sub connection { |
60 | my ($class, @info) = @_; | |
8b445e33 | 61 | my $storage = DBIx::Class::Storage::DBI->new; |
62 | $storage->connect_info(\@info); | |
63 | $class->storage($storage); | |
ea2e61bf | 64 | } |
65 | ||
130c6439 | 66 | =head2 dbi_commit |
39fe0e65 | 67 | |
130c6439 | 68 | Issues a commit against the current dbh. |
39fe0e65 | 69 | |
70 | =cut | |
71 | ||
8b445e33 | 72 | sub dbi_commit { $_[0]->storage->commit; } |
a29644e1 | 73 | |
130c6439 | 74 | =head2 dbi_rollback |
39fe0e65 | 75 | |
130c6439 | 76 | Issues a rollback against the current dbh. |
39fe0e65 | 77 | |
78 | =cut | |
79 | ||
8b445e33 | 80 | sub dbi_rollback { $_[0]->storage->rollback; } |
81 | ||
11b78bd6 | 82 | sub resolve_class { return shift->class_resolver->class(@_); } |
83 | ||
ea2e61bf | 84 | 1; |
34d52be2 | 85 | |
34d52be2 | 86 | =head1 AUTHORS |
87 | ||
daec44b8 | 88 | Matt S. Trout <mst@shadowcatsystems.co.uk> |
34d52be2 | 89 | |
90 | =head1 LICENSE | |
91 | ||
92 | You may distribute this code under the same terms as Perl itself. | |
93 | ||
94 | =cut | |
95 |