#!/usr/bin/perl use FS::Schema qw( dbdef_dist ); my $table = shift; ### # add a new FS/FS/table.pm ### my %ut = ( #just guesses 'int' => 'number', 'number' => 'float', 'varchar' => 'text', 'text' => 'text', 'serial' => 'number', ); my $dbdef_table = dbdef_dist->table($table) or die "define table in Schema.pm first"; my $primary_key = $dbdef_table->primary_key; open(SRC,"FS/FS/$table.pm") or die $!; while (my $line = ) { $line =~ s/table_name/$table/g; if ( $line =~ /^=item\s+field\s+-\s+description\s*$/ ) { foreach my $column ( $dbdef_table->columns ) { print DEST "=item $column - "; print DEST "primary key" if $column eq $primary_key; print DEST "\n\n"; } next; } elsif ( $line=~ /^(\s*)\$self->ut_numbern\('primary_key'\)\s*/ ) { print DEST "$1\$self->ut_numbern('$primary_key')\n" if $primary_key; next; } elsif ( $line =~ /^(\s*)\|\|\s+\$self->ut_number\('validate_other_fields'\)\s*/ ) { foreach my $column ( grep { $_ ne $primary_key } $dbdef_table->columns ) { my $ut = $ut{$dbdef_table->column($column)->type}; $ut .= 'n' if $dbdef_table->column($column)->null; print DEST "$1|| \$self->ut_$ut('$column')\n"; } next; } print DEST $line; } close SRC; close DEST; ### # add FS/t/table.t ### open(TEST,">FS/t/$table.t") or die $!; print TEST <>FS/MANIFEST") or die $!; print MANIFEST "FS/$table.pm\n", "t/$table.t\n"; close MANIFEST;