mourningdove/bin/dumpsql.pl

87 lines
3 KiB
Perl
Raw Permalink Normal View History

2026-05-24 01:03:05 +00:00
#!/usr/bin/perl
#
# This code was forked from the LiveJournal project owned and operated
# by Live Journal, Inc. The code has been modified and expanded by
# Dreamwidth Studios, LLC. These files were originally licensed under
# the terms of the license supplied by Live Journal, Inc, which can
# currently be found at:
#
# http://code.livejournal.org/trac/livejournal/browser/trunk/LICENSE-LiveJournal.txt
#
# In accordance with the original license, this code and all its
# modifications are provided under the GNU General Public License.
# A copy of that license can be found in the LICENSE file included as
# part of this distribution.
use strict;
BEGIN {
require "$ENV{'LJHOME'}/cgi-bin/ljlib.pl";
}
my $dbh = LJ::get_db_writer();
# dump proplists, etc
print "Dumping proplists.dat\n";
open( my $plg, ">$ENV{LJHOME}/bin/upgrading/proplists.dat" ) or die;
open( my $pll, ">$ENV{LJHOME}/bin/upgrading/proplists-local.dat" ) or die;
foreach my $table ( 'userproplist', 'talkproplist', 'logproplist', 'usermsgproplist' ) {
my $sth = $dbh->prepare("DESCRIBE $table");
$sth->execute;
my @cols = ();
while ( my $c = $sth->fetchrow_hashref ) {
die "Where is the 'Extra' column?" unless exists $c->{'Extra'}; # future-proof
next if $c->{'Extra'} =~ /auto_increment/;
push @cols, $c;
}
@cols = sort { $a->{'Field'} cmp $b->{'Field'} } @cols;
my $cols = join( ", ", map { $_->{'Field'} } @cols );
my $pri_key = "name"; # for now they're all 'name'. might add more tables.
$sth = $dbh->prepare("SELECT $cols FROM $table ORDER BY $pri_key");
$sth->execute;
while ( my @r = $sth->fetchrow_array ) {
my %vals;
my $i = 0;
foreach ( map { $_->{'Field'} } @cols ) {
$vals{$_} = $r[ $i++ ];
}
my $scope = $vals{'scope'} && $vals{'scope'} eq "local" ? "local" : "general";
my $fh = $scope eq "local" ? $pll : $plg;
print $fh "$table.$vals{$pri_key}:\n";
foreach my $c ( map { $_->{'Field'} } @cols ) {
next if $c eq $pri_key;
next if $c eq "scope"; # implied by filenamea
print $fh " $c: $vals{$c}\n";
}
print $fh "\n";
}
}
# and dump mood info
print "Dumping moods.dat\n";
open( F, ">$ENV{'LJHOME'}/bin/upgrading/moods.dat" ) or die;
my $sth = $dbh->prepare("SELECT moodid, mood, parentmood FROM moods ORDER BY moodid");
$sth->execute;
while ( @_ = $sth->fetchrow_array ) {
print F "MOOD @_\n";
}
$sth = $dbh->prepare(
"SELECT moodthemeid, name, des FROM moodthemes WHERE is_public='Y' ORDER BY name");
$sth->execute;
while ( my ( $id, $name, $des ) = $sth->fetchrow_array ) {
$name =~ s/://;
print F "MOODTHEME $name : $des\n";
my $std = $dbh->prepare( "SELECT moodid, picurl, width, height FROM moodthemedata "
. "WHERE moodthemeid=$id ORDER BY moodid" );
$std->execute;
while ( @_ = $std->fetchrow_array ) {
print F "@_\n";
}
}
close F;
print "Done.\n";