X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=scripts%2Frose_auto_create_model.pl;h=fd43a0506c1a49989ca05418f41f742ecc622918;hb=95278e0ace83c7d82633799ac638582184df552e;hp=54693cb764993ba323e49b25cd5e69cc69820f99;hpb=c825bf71d99aab4026245f1194a0deda9c5755d4;p=kivitendo-erp.git diff --git a/scripts/rose_auto_create_model.pl b/scripts/rose_auto_create_model.pl index 54693cb76..fd43a0506 100755 --- a/scripts/rose_auto_create_model.pl +++ b/scripts/rose_auto_create_model.pl @@ -13,7 +13,7 @@ use Data::Dumper; use Digest::MD5 qw(md5_hex); use English qw( -no_match_vars ); use Getopt::Long; -use List::MoreUtils qw(none); +use List::MoreUtils qw(apply none uniq); use List::UtilsBy qw(partition_by); use Pod::Usage; use Rose::DB::Object 0.809; @@ -70,10 +70,10 @@ our %foreign_key_name_map = ( orderitems => { parts_id => 'part', trans_id => 'order', }, delivery_order_items => { parts_id => 'part' }, invoice => { parts_id => 'part' }, - follow_ups => { created_for_user => 'created_for', created_by => 'created_by', }, + follow_ups => { created_for_user => 'created_for_employee', created_by => 'created_by_employee', }, follow_up_access => { who => 'with_access', what => 'to_follow_ups_by', }, - periodic_invoices_configs => { oe_id => 'order' }, + periodic_invoices_configs => { oe_id => 'order', email_recipient_contact_id => 'email_recipient_contact' }, reconciliation_links => { acc_trans_id => 'acc_trans' }, }, ); @@ -340,6 +340,22 @@ sub usage { pod2usage(verbose => 99, sections => 'SYNOPSIS'); } +sub list_all_tables { + my ($db) = @_; + + my @schemas = (undef, uniq apply { s{\..*}{} } grep { m{\.} } keys %{ $package_names{KIVITENDO} }); + my @tables; + + foreach my $schema (@schemas) { + $db->schema($schema); + push @tables, map { $schema ? "${schema}.${_}" : $_ } $db->list_tables; + } + + $db->schema(undef); + + return @tables; +} + sub make_tables { my %tables_by_domain; if ($config{all}) { @@ -347,7 +363,7 @@ sub make_tables { foreach my $domain (@domains) { my $db = SL::DB::create(undef, $domain); - $tables_by_domain{$domain} = [ grep { my $table = $_; none { $_ eq $table } @{ $blacklist{$domain} } } $db->list_tables ]; + $tables_by_domain{$domain} = [ grep { my $table = $_; none { $_ eq $table } @{ $blacklist{$domain} } } list_all_tables($db) ]; $db->disconnect; }