POD mistake.
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / CDBICompat.pm
1 package DBIx::Class::CDBICompat;
2
3 use strict;
4 use warnings;
5 use base qw/DBIx::Class::Core DBIx::Class::DB/;
6 use Carp::Clan qw/^DBIx::Class/;
7
8 eval {
9   require Class::Trigger;
10   require DBIx::ContextualFetch;
11 };
12 croak "Class::Trigger and DBIx::ContextualFetch is required for CDBICompat" if $@;
13
14 __PACKAGE__->load_own_components(qw/
15   Constraints
16   Triggers
17   ReadOnly
18   LiveObjectIndex
19   AttributeAPI
20   Stringify
21   DestroyWarning
22   Constructor
23   AccessorMapping
24   ColumnCase
25   Relationships
26   Copy
27   LazyLoading
28   AutoUpdate
29   TempColumns
30   GetSet
31   Retrieve
32   Pager
33   ColumnGroups
34   ColumnsAsHash
35   AbstractSearch
36   ImaDBI
37   Iterator
38 /);
39
40             #DBIx::Class::ObjIndexStubs
41 1;
42
43 =head1 NAME
44
45 DBIx::Class::CDBICompat - Class::DBI Compatibility layer.
46
47 =head1 SYNOPSIS
48
49   use base qw/DBIx::Class/;
50   __PACKAGE__->load_components(qw/CDBICompat Core DB/);
51
52 =head1 DESCRIPTION
53
54 DBIx::Class features a fully featured compatibility layer with L<Class::DBI>
55 and L<Class::DBI::AbstractSearch> to ease transition for existing CDBI users. 
56
57 In fact, this class is just a receipe containing all the features emulated.
58 If you like, you can choose which features to emulate by building your 
59 own class and loading it like this:
60
61   __PACKAGE__->load_own_components(qw/CDBICompat/);
62
63 this will automatically load the features included in My::DB::CDBICompat,
64 provided it looks something like this:
65
66   package My::DB::CDBICompat;
67   __PACKAGE__->load_components(qw/
68     CDBICompat::ColumnGroups
69     CDBICompat::Retrieve
70     CDBICompat::HasA
71     CDBICompat::HasMany
72     CDBICompat::MightHave
73   /);
74
75
76 =head1 LIMITATIONS
77
78 =head2 Unimplemented
79
80 The following methods and classes are not emulated, maybe in the future.
81
82 =over 4
83
84 =item Class::DBI::Query
85
86 Deprecated in Class::DBI.
87
88 =item Class::DBI::Column
89
90 Not documented in Class::DBI.  CDBICompat's columns() returns a plain string, not an object.
91
92 =item data_type()
93
94 Undocumented CDBI method.
95
96 =back
97
98 =head2 Limited Support
99
100 The following elements of Class::DBI have limited support.
101
102 =over 4
103
104 =item Class::DBI::Relationship
105
106 The semi-documented Class::DBI::Relationship objects returned by C<meta_info($type, $col)> are mostly emulated except for their C<args> method.
107
108 =item Relationships
109
110 Relationships between tables (has_a, has_many...) must be delcared after all tables in the relationship have been declared.  Thus the usual CDBI idiom of declaring columns and relationships for each class together will not work.  They must instead be done like so:
111
112     package Foo;
113     use base qw(Class::DBI);
114     
115     Foo->table("foo");
116     Foo->columns( All => qw(this that bar) );
117
118     package Bar;
119     use base qw(Class::DBI);
120     
121     Bar->table("bar");
122     Bar->columns( All => qw(up down) );
123
124     # Now that Foo and Bar are declared it is safe to declare a
125     # relationship between them
126     Foo->has_a( bar => "Bar" );
127
128
129 =back
130
131 =head1 AUTHORS
132
133 Matt S. Trout <mst@shadowcatsystems.co.uk>
134
135 =head1 LICENSE
136
137 You may distribute this code under the same terms as Perl itself.
138
139 =cut
140