[Dbix-class] DBIC Schema Loader - different schema/result base
classes
Jess Robinson
castaway at desert-island.me.uk
Sun Mar 30 18:13:14 BST 2008
I found myself needing to set different Schema + result class base
classes, any opinions? (See patch).
Jess
-------------- next part --------------
diff -r -u ./lib/DBIx/Class/Schema/Loader/Base.pm /usr/src/perl/dbix-class/bast/trunk/DBIx-Class-Schema-Loader/lib/DBIx/Class/Schema/Loader/Base.pm
--- ./lib/DBIx/Class/Schema/Loader/Base.pm 2008-03-30 18:00:47.000000000 +0100
+++ /usr/src/perl/dbix-class/bast/trunk/DBIx-Class-Schema-Loader/lib/DBIx/Class/Schema/Loader/Base.pm 2008-03-30 16:58:58.000000000 +0100
@@ -19,11 +19,13 @@
__PACKAGE__->mk_ro_accessors(qw/
schema
schema_class
+ schema_base_class
exclude
constraint
additional_classes
additional_base_classes
+ dbic_base_class
left_base_classes
components
resultset_components
@@ -445,6 +447,7 @@
my $target_dir = $self->dump_directory;
my $schema_class = $self->schema_class;
+ my $schema_base = $self->schema_base_class || 'DBIx::Class::Schema';
croak "Must specify target directory for dumping!" if ! $target_dir;
@@ -452,8 +455,8 @@
my $schema_text =
qq|package $schema_class;\n\n|
- . qq|use strict;\nuse warnings;\n\n|
- . qq|use base 'DBIx::Class::Schema';\n\n|;
+ . qq|use strict;\nuse warnings;\n\n|
+ . qq|use base '$schema_base';\n\n|;
if ($self->use_namespaces) {
@@ -479,8 +482,8 @@
foreach my $src_class (sort keys %{$self->{_dump_storage}}) {
my $src_text =
qq|package $src_class;\n\n|
- . qq|use strict;\nuse warnings;\n\n|
- . qq|use base 'DBIx::Class';\n\n|;
+ . qq|use strict;\nuse warnings;\n\n|;
+# . qq|use base '$dbic_base';\n\n|;
$self->_write_classfile($src_class, $src_text);
}
@@ -598,6 +601,7 @@
my $schema = $self->schema;
my $schema_class = $self->schema_class;
+ my $dbic_base = $self->dbic_base_class || 'DBIx::Class';
my $table_moniker = $self->_table2moniker($table);
my @result_namespace = ($schema_class);
@@ -623,6 +627,7 @@
{ no strict 'refs'; @{"${table_class}::ISA"} = qw/DBIx::Class/ }
$self->_use ($table_class, @{$self->additional_classes});
+ $self->_inject($table_class, $dbic_base);
$self->_inject($table_class, @{$self->additional_base_classes});
$self->_dbic_stmt($table_class, 'load_components', @{$self->components}, 'Core');
diff -r -u ./lib/DBIx/Class/Schema/Loader.pm /usr/src/perl/dbix-class/bast/trunk/DBIx-Class-Schema-Loader/lib/DBIx/Class/Schema/Loader.pm
--- ./lib/DBIx/Class/Schema/Loader.pm 2008-03-30 18:00:47.000000000 +0100
+++ /usr/src/perl/dbix-class/bast/trunk/DBIx-Class-Schema-Loader/lib/DBIx/Class/Schema/Loader.pm 2008-03-25 23:53:19.000000000 +0000
@@ -106,7 +106,9 @@
$args->{dump_directory} ||= $self->dump_to_dir;
# XXX this only works for relative storage_type, like ::DBI ...
- my $impl = "DBIx::Class::Schema::Loader" . $self->storage_type;
+# my $impl = "DBIx::Class::Schema::Loader" . $self->storage_type;
+ my $impl = $args->{loader_class}
+ || "DBIx::Class::Schema::Loader" . $self->storage_type;
$impl->require or
croak qq/Could not load storage_type loader "$impl": / .
qq/"$UNIVERSAL::require::ERROR"/;
More information about the DBIx-Class
mailing list