quick script to convert rt links from one database name to another
authorivan <ivan>
Tue, 25 Jul 2006 07:27:32 +0000 (07:27 +0000)
committerivan <ivan>
Tue, 25 Jul 2006 07:27:32 +0000 (07:27 +0000)
bin/rt-update-links [new file with mode: 0644]

diff --git a/bin/rt-update-links b/bin/rt-update-links
new file mode 100644 (file)
index 0000000..75d554f
--- /dev/null
@@ -0,0 +1,36 @@
+#!/usr/bin/perl
+
+use FS::UID qw(adminsuidsetup);
+
+my( $olddb, $newdb ) = ( shift, shift );
+
+$FS::CurrentUser::upgrade_hack = 1;
+my $dbh = adminsuidsetup;
+
+my $statement = "select * from links where base like 'fsck.com-rt://$olddb/%' OR target like 'fsck.com-rt://$olddb/%'";
+
+my $sth = $dbh->prepare($statement) or die $dbh->errstr;
+$sth->execute or die $sth->errstr;
+
+while ( my $row = $sth->fetchrow_hashref ) {
+
+  ( my $base = $row->{'base'} )
+    =~ s(^fsck\.com-rt://$olddb/)(fsck.com-rt://$newdb/);
+
+  ( my $target = $row->{'target'} )
+    =~ s(^fsck\.com-rt://$olddb/)(fsck.com-rt://$newdb/);
+
+  if ( $row->{'base'} ne $base || $row->{'target'} ne $target ) {
+
+    my $update = 'UPDATE links SET base = ?, target = ? where id = ?';
+    my @param = ( $base, $target, $row->{'id'} );
+
+    warn "$update : ". join(', ', @param). "\n";
+    $dbh->do($update, {}, @param );
+
+  }
+
+}
+
+$dbh->commit;
+