Reinstate schema object base class
Dagfinn Ilmari Mannsåker [Fri, 17 Aug 2012 13:07:45 +0000 (15:07 +0200)]
This class consumes the roles common to all the schema classes, and
maintains backwards compatibilty for DarkPAN code checking
$obj->isa('SQL::Translator::Schema::Object').

lib/SQL/Translator/Schema.pm
lib/SQL/Translator/Schema/Constraint.pm
lib/SQL/Translator/Schema/Field.pm
lib/SQL/Translator/Schema/Index.pm
lib/SQL/Translator/Schema/Object.pm [new file with mode: 0644]
lib/SQL/Translator/Schema/Procedure.pm
lib/SQL/Translator/Schema/Table.pm
lib/SQL/Translator/Schema/Trigger.pm
lib/SQL/Translator/Schema/View.pm

index d05ebd0..756ec1a 100644 (file)
@@ -36,12 +36,7 @@ use SQL::Translator::Schema::View;
 use SQL::Translator::Utils 'parse_list_arg';
 use Carp;
 
-with qw(
-  SQL::Translator::Role::Error
-  SQL::Translator::Role::BuildArgs
-  SQL::Translator::Schema::Role::Extra
-  SQL::Translator::Schema::Role::Compare
-);
+extends 'SQL::Translator::Schema::Object';
 
 our $VERSION = '1.59';
 
index 5adb2ed..d81dd1a 100644 (file)
@@ -29,12 +29,7 @@ use SQL::Translator::Utils qw(parse_list_arg ex2err throw);
 use SQL::Translator::Types qw(schema_obj);
 use List::MoreUtils qw(uniq);
 
-with qw(
-  SQL::Translator::Role::Error
-  SQL::Translator::Role::BuildArgs
-  SQL::Translator::Schema::Role::Extra
-  SQL::Translator::Schema::Role::Compare
-);
+extends 'SQL::Translator::Schema::Object';
 
 our $VERSION = '1.59';
 
index 8e4a0cb..25e8074 100644 (file)
@@ -27,12 +27,7 @@ use SQL::Translator::Schema::Constants;
 use SQL::Translator::Types qw(schema_obj);
 use SQL::Translator::Utils qw(parse_list_arg ex2err throw);
 
-with qw(
-  SQL::Translator::Role::Error
-  SQL::Translator::Role::BuildArgs
-  SQL::Translator::Schema::Role::Extra
-  SQL::Translator::Schema::Role::Compare
-);
+extends 'SQL::Translator::Schema::Object';
 
 our $VERSION = '1.59';
 
index 22d194d..b3041a1 100644 (file)
@@ -31,12 +31,7 @@ use SQL::Translator::Utils qw(parse_list_arg ex2err throw);
 use SQL::Translator::Types qw(schema_obj);
 use List::MoreUtils qw(uniq);
 
-with qw(
-  SQL::Translator::Role::Error
-  SQL::Translator::Role::BuildArgs
-  SQL::Translator::Schema::Role::Extra
-  SQL::Translator::Schema::Role::Compare
-);
+extends 'SQL::Translator::Schema::Object';
 
 our $VERSION = '1.59';
 
diff --git a/lib/SQL/Translator/Schema/Object.pm b/lib/SQL/Translator/Schema/Object.pm
new file mode 100644 (file)
index 0000000..ef0fc05
--- /dev/null
@@ -0,0 +1,50 @@
+package SQL::Translator::Schema::Object;
+
+=head1 NAME
+
+SQL::Translator::Schema::Object - Base class for SQL::Translator schema objects
+
+=head1 SYNOPSIS
+
+    package SQL::Translator::Schema::Foo;
+    use Moo;
+    extends 'SQL::Translator::Schema::Object';
+
+=head1 DESCRIPTION
+
+Base class for Schema objects. A Moo class consuming the following
+roles.
+
+=over
+
+=item L<SQL::Translator::Role::Error>
+
+Provides C<< $obj->error >>, similar to L<Class::Base>.
+
+=item L<SQL::Translator::Role::BuildArgs>
+
+Removes undefined constructor arguments, for backwards compatibility.
+
+=item L<SQL::Translator::Schema::Role::Extra>
+
+Provides an C<extra> attribute storing a hashref of arbitrary data.
+
+=item L<SQL::Translator::Schema::Role::Compare>
+
+Provides an C<< $obj->equals($other) >> method for testing object
+equality.
+
+=back
+
+=cut
+
+use Moo;
+
+with qw(
+  SQL::Translator::Role::Error
+  SQL::Translator::Role::BuildArgs
+  SQL::Translator::Schema::Role::Extra
+  SQL::Translator::Schema::Role::Compare
+);
+
+1;
index 8624a5d..0aa7701 100644 (file)
@@ -32,12 +32,7 @@ use SQL::Translator::Utils qw(parse_list_arg ex2err);
 use SQL::Translator::Types qw(schema_obj);
 use List::MoreUtils qw(uniq);
 
-with qw(
-  SQL::Translator::Role::Error
-  SQL::Translator::Role::BuildArgs
-  SQL::Translator::Schema::Role::Extra
-  SQL::Translator::Schema::Role::Compare
-);
+extends 'SQL::Translator::Schema::Object';
 
 our $VERSION = '1.59';
 
index 3712306..754f910 100644 (file)
@@ -30,12 +30,7 @@ use SQL::Translator::Schema::Index;
 use Carp::Clan '^SQL::Translator';
 use List::Util 'max';
 
-with qw(
-  SQL::Translator::Role::Error
-  SQL::Translator::Role::BuildArgs
-  SQL::Translator::Schema::Role::Extra
-  SQL::Translator::Schema::Role::Compare
-);
+extends 'SQL::Translator::Schema::Object';
 
 our $VERSION = '1.59';
 
index ae2d951..1381c77 100644 (file)
@@ -33,12 +33,7 @@ use SQL::Translator::Utils qw(parse_list_arg ex2err throw);
 use SQL::Translator::Types qw(schema_obj);
 use List::MoreUtils qw(uniq);
 
-with qw(
-  SQL::Translator::Role::Error
-  SQL::Translator::Role::BuildArgs
-  SQL::Translator::Schema::Role::Extra
-  SQL::Translator::Schema::Role::Compare
-);
+extends 'SQL::Translator::Schema::Object';
 
 our $VERSION = '1.59';
 
index 2f51288..e7e57a7 100644 (file)
@@ -28,12 +28,7 @@ use SQL::Translator::Utils qw(parse_list_arg ex2err);
 use SQL::Translator::Types qw(schema_obj);
 use List::MoreUtils qw(uniq);
 
-with qw(
-  SQL::Translator::Role::Error
-  SQL::Translator::Role::BuildArgs
-  SQL::Translator::Schema::Role::Extra
-  SQL::Translator::Schema::Role::Compare
-);
+extends 'SQL::Translator::Schema::Object';
 
 our $VERSION = '1.59';