Merge HasA, HasMany and MightHave into one file, Relationships, for easier
[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 =head1 COMPONENTS
76
77 =over 4
78
79 =item AccessorMapping
80
81 =item AbstractSearch
82
83 Compatibility with Class::DBI::AbstractSearch.
84
85 =item AttributeAPI
86
87 =item AutoUpdate
88
89 Allows you to turn on automatic updates for column values.
90
91 =item ColumnCase
92
93 =item ColumnGroups
94
95 =item Constraints
96
97 =item Constructor
98
99 =item DestroyWarning
100
101 =item GetSet
102
103 =item HasA
104
105 =item HasMany
106
107 =item ImaDBI
108
109 =item LazyLoading
110
111 =item LiveObjectIndex
112
113 The live object index tries to ensure there is only one version of a object
114 in the perl interpreter.
115
116 =item MightHave
117
118 =item ObjIndexStubs
119
120 =item ReadOnly
121
122 =item Retrieve
123
124 =item Stringify
125
126 =item TempColumns
127
128 =item Triggers
129
130 =item PassThrough
131
132 =back
133
134 =head1 LIMITATIONS
135
136 The following methods and classes are not emulated, maybe in the future.
137
138 =over 4
139
140 =item Class::DBI::Query
141
142 Deprecated in Class::DBI.
143
144 =item Class::DBI::Column
145
146 Not documented in Class::DBI.  CDBICompat's columns() returns a plain string, not an object.
147
148 =item data_type()
149
150 Undocumented CDBI method.
151
152 =item meta_info()
153
154 Undocumented CDBI method.
155
156 =back
157
158 =head1 AUTHORS
159
160 Matt S. Trout <mst@shadowcatsystems.co.uk>
161
162 =head1 LICENSE
163
164 You may distribute this code under the same terms as Perl itself.
165
166 =cut
167