initial merge of Schwern's CDBICompat work, with many thanks
[dbsrgits/DBIx-Class-Historic.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   HasA
26   HasMany
27   MightHave
28   Copy
29   LazyLoading
30   AutoUpdate
31   TempColumns
32   GetSet
33   Retrieve
34   Pager
35   ColumnGroups
36   AbstractSearch
37   ImaDBI
38   Iterator
39 /);
40
41             #DBIx::Class::ObjIndexStubs
42 1;
43
44 =head1 NAME
45
46 DBIx::Class::CDBICompat - Class::DBI Compatibility layer.
47
48 =head1 SYNOPSIS
49
50   use base qw/DBIx::Class/;
51   __PACKAGE__->load_components(qw/CDBICompat Core DB/);
52
53 =head1 DESCRIPTION
54
55 DBIx::Class features a fully featured compatibility layer with L<Class::DBI>
56 to ease transition for existing CDBI users. In fact, this class is just a
57 receipe containing all the features emulated. If you like, you can choose
58 which features to emulate by building your own class and loading it like
59 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 AUTHORS
135
136 Matt S. Trout <mst@shadowcatsystems.co.uk>
137
138 =head1 LICENSE
139
140 You may distribute this code under the same terms as Perl itself.
141
142 =cut
143