use FindBin qw($Bin);
use lib "$Bin/../../lib"; # print $Bin; exit;
# set database manually using LIMS::DB->modify_db() to change eg outreach/hmrn
$ENV{ROSEDB_DEVINIT} = "$Bin/../../config/rosedb_devinit_devel.pl"; # overrides default db test
use strict;
use LIMS::DB;
use Data::Dumper;
use Rose::DB::Object::Loader;
my $loader =
Rose::DB::Object::Loader->new(
db => LIMS::DB->new,
class_prefix => 'LIMS',
with_managers => 0,
);
# LIMS::DB->modify_db(database => 'outreach'); # for Outreach classes
open my $fh, '>', "$Bin/../../setup/schema/classes.pl" or die $!;
print $fh "# generated automatically by script/make_classes.pl\n\n";
my $delimiter = '#' . ('-' x 75);
my @classes = $loader->make_classes( pre_init_hook => \&delete_all_empty_string_defs );
foreach my $class (sort @classes) { print $class, "\n";
print $fh $delimiter, "\n";
if ( $class->isa('Rose::DB::Object') ) {
print $fh $class->meta->perl_class_definition(
# braces => 'bsd',
indent => 4,
), "\n";
}
else {# Rose::DB::Object::Manager subclasses
print $fh $class->perl_class_definition, "\n";
}
}
# TODO: walk over the list of columns for each class, eliminating all the empty string default values (i.e., changing them to undef instead) - Rose/DB/Object/Loader.pm#GOTCHAS
sub delete_all_empty_string_defs {
my $meta_data = shift; return;
my $cols = $meta_data->columns;
# warn Dumper $cols;
}