[Rt-commit] r5706 - in rt/branches/3.7-EXPERIMENTAL: .

ruz at bestpractical.com ruz at bestpractical.com
Sun Aug 6 23:02:51 EDT 2006


Author: ruz
Date: Sun Aug  6 23:02:49 2006
New Revision: 5706

Added:
   rt/branches/3.7-EXPERIMENTAL/lib/RT/Shredder/Plugin/SQLDump.pm
Modified:
   rt/branches/3.7-EXPERIMENTAL/   (props changed)

Log:
 r3602 at cubic-pc:  cubic | 2006-08-07 07:06:56 +0400
 * reimplementation of --sqldump option within dump plugin


Added: rt/branches/3.7-EXPERIMENTAL/lib/RT/Shredder/Plugin/SQLDump.pm
==============================================================================
--- (empty file)
+++ rt/branches/3.7-EXPERIMENTAL/lib/RT/Shredder/Plugin/SQLDump.pm	Sun Aug  6 23:02:49 2006
@@ -0,0 +1,45 @@
+package RT::Shredder::Plugin::SQLDump;
+
+use strict;
+use warnings;
+
+use base qw(RT::Shredder::Plugin::Base::Dump);
+
+sub SupportArgs
+{
+    my $self = shift;
+    return $self->SUPER::SupportArgs, qw(file_name from_storage);
+}
+
+sub TestArgs
+{
+    my $self = shift;
+    my %args = @_;
+    $args{'from_storage'} = 1 unless defined $args{'from_storage'};
+    my $file = $args{'file_name'} = RT::Shredder->GetFileName(
+        FileName    => $args{'file_name'},
+        FromStorage => delete $args{'from_storage'},
+    );
+    open $args{'file_handle'}, ">:raw", $file
+        or die "Couldn't open '$file' for write: $!";
+
+    return $self->SUPER::TestArgs( %args );
+}
+
+sub FileName   { return $_[0]->{'opt'}{'file_name'}   }
+sub FileHandle { return $_[0]->{'opt'}{'file_handle'} }
+
+sub Run
+{
+    my $self = shift;
+    return (0, 'no handle') unless my $fh = $self->{'opt'}{'file_handle'};
+
+    my %args = ( Object => undef, @_ );
+    my $query = $args{'Object'}->_AsInsertQuery;
+    $query .= "\n" unless $query =~ /\n$/;
+
+    return print $fh $query or return (0, "Couldn't write to filehandle");
+    return 1;
+}
+
+1;


More information about the Rt-commit mailing list