use Digest::MD5 qw(md5_hex);
use English qw( -no_match_vars );
use Getopt::Long;
-use List::MoreUtils qw(any);
+use List::MoreUtils qw(none);
use Pod::Usage;
use Term::ANSIColor;
}
sub process_table {
- my @spec = split(/=/, shift, 2);
+ my @spec = @_;
my $table = $spec[0];
my $schema = '';
($schema, $table) = split(m/\./, $table) if $table =~ m/\./;
my @tables;
if ($config{all}) {
my $db = SL::DB::create(undef, 'KIVITENDO');
- @tables =
- map { $package_names{KIVITENDO}->{$_} ? "$_=" . $package_names{KIVITENDO}->{$_} : $_ }
- grep { my $table = $_; !any { $_ eq $table } @{ $blacklist{KIVITENDO} } }
- $db->list_tables;
+ @tables = grep { my $table = $_; none { $_ eq $table } @{ $blacklist{KIVITENDO} } } $db->list_tables;
+
} elsif (@ARGV) {
@tables = @ARGV;
} else {
setup();
my @tables = make_tables();
-for my $table (@tables) {
- # add default model name unless model name is given or no defaults exists
- $table .= '=' . $package_names{KIVITENDO}->{lc $table} if $table !~ /=/ && $package_names{KIVITENDO}->{lc $table};
-
- process_table($table);
+my @unknown_tables = grep { !$package_names{KIVITENDO}->{$_} } @tables;
+if (@unknown_tables) {
+ error("The following tables do not have entries in \%SL::DB::Helper::Mappings::kivitendo_package_names: " . join(' ', sort @unknown_tables));
+ exit 1;
}
+process_table($_, $package_names{KIVITENDO}->{$_}) for @tables;
+
1;
__END__
=head1 SYNOPSIS
- scripts/rose_create_model.pl --client name-or-id table1[=package1] [table2[=package2] ...]
+ scripts/rose_create_model.pl --client name-or-id table1 [table2 ...]
scripts/rose_create_model.pl --client name-or-id [--all|-a]
# updates all models
load the schema information for this table and create the appropriate class
files, or update them if already present.
-Each table has two associated files. A C<SL::DB::MetaSetup::*> class, which is
-a perl version of the schema definition, and a C<SL::DB::*> class file. The
-first one will be updated if the schema changes, the second one will only be
-created if it does not exist.
+Each table has three associated files. A C<SL::DB::MetaSetup::*>
+class, which is a perl version of the schema definition, a
+C<SL::DB::*> class file and a C<SL::DB::Manager::*> manager class
+file. The first one will be updated if the schema changes, the second
+and third ones will only be created if it they do not exist.
=head1 OPTIONS
=head1 AUTHOR
+Moritz Bunkus E<lt>m.bunkus@linet-services.deE<gt>,
Sven Schöling E<lt>s.schoeling@linet-services.deE<gt>
=cut