Allow CDBI objects to be accessed like hashes as people tend to do for
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / CDBICompat.pm
index 5fb1af4..74504b6 100644 (file)
@@ -3,12 +3,18 @@ package DBIx::Class::CDBICompat;
 use strict;
 use warnings;
 use base qw/DBIx::Class::Core DBIx::Class::DB/;
+use Carp::Clan qw/^DBIx::Class/;
+
+eval {
+  require Class::Trigger;
+  require DBIx::ContextualFetch;
+};
+croak "Class::Trigger and DBIx::ContextualFetch is required for CDBICompat" if $@;
 
 __PACKAGE__->load_own_components(qw/
   Constraints
   Triggers
   ReadOnly
-  GetSet
   LiveObjectIndex
   AttributeAPI
   Stringify
@@ -19,20 +25,26 @@ __PACKAGE__->load_own_components(qw/
   HasA
   HasMany
   MightHave
+  Copy
   LazyLoading
   AutoUpdate
   TempColumns
+  GetSet
   Retrieve
   Pager
   ColumnGroups
-  ImaDBI/);
+  ColumnsAsHash
+  AbstractSearch
+  ImaDBI
+  Iterator
+/);
 
             #DBIx::Class::ObjIndexStubs
 1;
 
-=head1 NAME 
+=head1 NAME
 
-DBIx::Class::CDBICompat - Class::DBI Compatability layer.
+DBIx::Class::CDBICompat - Class::DBI Compatibility layer.
 
 =head1 SYNOPSIS
 
@@ -41,15 +53,16 @@ DBIx::Class::CDBICompat - Class::DBI Compatability layer.
 
 =head1 DESCRIPTION
 
-DBIx::Class features a fully featured compability layer with L<Class::DBI>
-to ease transition for existing CDBI users. In fact, this class is just a
-receipe containing all the features emulated. If you like, you can choose
-which features to emulate by building your own class and loading it like 
-this:
+DBIx::Class features a fully featured compatibility layer with L<Class::DBI>
+and L<Class::DBI::AbstractSearch> to ease transition for existing CDBI users. 
+
+In fact, this class is just a receipe containing all the features emulated.
+If you like, you can choose which features to emulate by building your 
+own class and loading it like this:
 
   __PACKAGE__->load_own_components(qw/CDBICompat/);
 
-this will automatically load the features included in My::DB::CDBICompat, 
+this will automatically load the features included in My::DB::CDBICompat,
 provided it looks something like this:
 
   package My::DB::CDBICompat;
@@ -61,12 +74,16 @@ provided it looks something like this:
     CDBICompat::MightHave
   /);
 
-=head1 Components
+=head1 COMPONENTS
 
 =over 4
 
 =item AccessorMapping
 
+=item AbstractSearch
+
+Compatibility with Class::DBI::AbstractSearch.
+
 =item AttributeAPI
 
 =item AutoUpdate
@@ -87,12 +104,8 @@ Allows you to turn on automatic updates for column values.
 
 =item HasA
 
-Responsible for HasA relationships. 
-
 =item HasMany
 
-Responsible for HasMany relationships. 
-
 =item ImaDBI
 
 =item LazyLoading
@@ -100,12 +113,10 @@ Responsible for HasMany relationships.
 =item LiveObjectIndex
 
 The live object index tries to ensure there is only one version of a object
-in the perl interprenter.
+in the perl interpreter.
 
 =item MightHave
 
-Responsible for MightHave relationships. 
-
 =item ObjIndexStubs
 
 =item ReadOnly
@@ -118,12 +129,33 @@ Responsible for MightHave relationships.
 
 =item Triggers
 
-This class implements the trigger functionality.
-
 =item PassThrough
 
 =back
 
+=head1 LIMITATIONS
+
+The following methods and classes are not emulated, maybe in the future.
+
+=over 4
+
+=item Class::DBI::Query
+
+Deprecated in Class::DBI.
+
+=item Class::DBI::Column
+
+Not documented in Class::DBI.  CDBICompat's columns() returns a plain string, not an object.
+
+=item data_type()
+
+Undocumented CDBI method.
+
+=item meta_info()
+
+Undocumented CDBI method.
+
+=back
 
 =head1 AUTHORS