4 use vars qw($DEBUG $DRY_RUN);
6 use DBIx::DBSchema 0.31;
7 use FS::UID qw(adminsuidsetup checkeuid datasrc ); #getsecrets);
9 use FS::Schema qw( dbdef dbdef_dist reload_dbdef );
13 die "Not running uid freeside!" unless checkeuid();
15 my $user = shift or die &usage;
16 $FS::CurrentUser::upgrade_hack = 1;
17 my $dbh = adminsuidsetup($user);
19 #needs to match FS::Schema...
20 my $dbdef_file = "/usr/local/etc/freeside/dbdef.". datasrc;
22 dbdef_create($dbh, $dbdef_file);
24 delete $FS::Schema::dbdef_cache{$dbdef_file}; #force an actual reload
25 reload_dbdef($dbdef_file);
27 $DBIx::DBSchema::DEBUG = $DEBUG;
28 $DBIx::DBSchema::Table::DEBUG = $DEBUG;
29 dbdef->update_schema( dbdef_dist, $dbh );
31 $dbh->commit or die $dbh->errstr;
33 dbdef_create($dbh, $dbdef_file);
35 $dbh->disconnect or die $dbh->errstr;
39 sub dbdef_create { # reverse engineer the schema from the DB and save to file
40 my( $dbh, $file ) = @_;
41 my $dbdef = new_native DBIx::DBSchema $dbh;
46 die "Usage:\n freeside-upgrade user\n";