This commit was generated by cvs2svn to compensate for changes in r4888,
[freeside.git] / FS / bin / freeside-upgrade
1 #!/usr/bin/perl -w
2
3 use strict;
4 use vars qw($DEBUG $DRY_RUN);
5 use Term::ReadKey;
6 use DBIx::DBSchema 0.31;
7 use FS::UID qw(adminsuidsetup checkeuid datasrc );  #getsecrets);
8 use FS::CurrentUser;
9 use FS::Schema qw( dbdef dbdef_dist reload_dbdef );
10
11 $DEBUG = 1;
12
13 die "Not running uid freeside!" unless checkeuid();
14
15 my $user = shift or die &usage;
16 $FS::CurrentUser::upgrade_hack = 1;
17 my $dbh = adminsuidsetup($user);
18
19 #needs to match FS::Schema...
20 my $dbdef_file = "/usr/local/etc/freeside/dbdef.". datasrc;
21
22 dbdef_create($dbh, $dbdef_file);
23
24 delete $FS::Schema::dbdef_cache{$dbdef_file}; #force an actual reload
25 reload_dbdef($dbdef_file);
26
27 $DBIx::DBSchema::DEBUG = $DEBUG;
28 $DBIx::DBSchema::Table::DEBUG = $DEBUG;
29 dbdef->update_schema( dbdef_dist, $dbh );
30
31 $dbh->commit or die $dbh->errstr;
32
33 dbdef_create($dbh, $dbdef_file);
34
35 $dbh->disconnect or die $dbh->errstr;
36
37 ###
38
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;
42   $dbdef->save($file);
43 }
44
45 sub usage {
46   die "Usage:\n  freeside-upgrade user\n"; 
47 }
48
49 1;