diff options
Diffstat (limited to 'scripts/gdupdate.pm')
-rwxr-xr-x | scripts/gdupdate.pm | 509 |
1 files changed, 0 insertions, 509 deletions
diff --git a/scripts/gdupdate.pm b/scripts/gdupdate.pm deleted file mode 100755 index 8242c6c..0000000 --- a/scripts/gdupdate.pm +++ /dev/null @@ -1,509 +0,0 @@ -################################################## -# -# GiantDisc mp3 Jukebox -# -# © 2000-2003, Rolf Brugger -# -################################################## - - -# Package for database modifications and consistency checks related -# to version updates - - -package gdupdate; - -use strict; - - -BEGIN{ -} - - -############################################################################### -### Version 1.32 -############################################################################### - -sub db_check_update_132{ - my ($dbh) = @_; - my ($sth, $count, $res); - - my $update = 0; - - ### new field 'audio channel' - $res = $dbh->do("SHOW COLUMNS FROM playerstate LIKE 'audiochannel'"); - if ($res < 1){ - $update = 1; - } - - $res = $dbh->do("SHOW COLUMNS FROM playerstate LIKE 'processid'"); - if ($res < 1){ - $update = 1; - } - - - return $update; -} - - -sub db_update_132{ - my ($dbh) = @_; - my ($sth, $count, $res); - - ### usage frequencies - $res = $dbh->do("SHOW COLUMNS FROM playerstate LIKE 'audiochannel'"); - if ($res < 1){ - print("Update table playerstate to version 1.32\n"); - print("rename index column playertype into audiochannel\n"); - $dbh->do("ALTER TABLE playerstate CHANGE playertype audiochannel INT NOT NULL"); - print("Adding field playertype to table playerstate\n"); - $dbh->do("ALTER TABLE playerstate ADD COLUMN playertype INT AFTER audiochannel"); - } - - ### player process id - $res = $dbh->do("SHOW COLUMNS FROM playerstate LIKE 'processid'"); - if ($res < 1){ - print("Update table playerstate to version 1.12\n"); - print("Adding field processid to table playerstate\n"); - $dbh->do("ALTER TABLE playerstate ADD COLUMN processid INT AFTER audiochannel"); - } - -} - - -############################################################################### -### Version 1.31 -############################################################################### - -sub db_check_update_131{ - my ($dbh) = @_; - my ($sth, $count, $res); - - my $update = 0; - - ### usage frequencies - $res = $dbh->do("SHOW COLUMNS FROM album LIKE 'genre'"); - if ($res < 1){ - $update = 1; - } - - ### Optimizations - my $row; - $sth = $dbh->prepare("SHOW TABLE STATUS FROM GiantDisc LIKE 'playerstate'"); - $count = $sth->execute; - if($row = $sth->fetchrow_hashref){ - if ($row->{Type} ne "HEAP"){ - $update = 1; - } - } - $sth->finish; - - - my ($dbh, $table, $column, $indexspec) = @_; - - my ($sth, $count, $row); - $sth = $dbh->prepare("SHOW index FROM tracks"); - $count = $sth->execute; - while($row = $sth->fetchrow_hashref){ - last if ($row->{Key_name} eq "artist"); - } - if($row->{Key_name} eq "artist"){ - #print "index artist exists\n"; - ; - } - else{ - print "Alert: no additional indexes defined\n"; - print " consider upgrading the db-structure with 'gdupdatedb.pl'\n"; - } - $sth->finish; - - - return $update; -} - - -sub db_update_131{ - my ($dbh) = @_; - my ($sth, $count, $res); - - ### usage frequencies - $res = $dbh->do("SHOW COLUMNS FROM album LIKE 'genre'"); - if ($res < 1){ - print("Update table album to version 1.31\n"); - print("Adding field genre to table album\n"); - $dbh->do("ALTER TABLE album ADD COLUMN genre VARCHAR(10) AFTER modified"); - } - - ### Optimizations - my $row; - $sth = $dbh->prepare("SHOW TABLE STATUS FROM GiantDisc LIKE 'playerstate'"); - $count = $sth->execute; - if($row = $sth->fetchrow_hashref){ - if ($row->{Type} ne "HEAP"){ - print "Set table 'playerstate' to type HEAP\n"; - $dbh->do("ALTER TABLE playerstate TYPE=HEAP"); - } - } - $sth->finish; - - - test_and_add_index($dbh, "tracks", "artist", "artist(artist(10))"); - test_and_add_index($dbh, "tracks", "title", "title(title(10))"); - test_and_add_index($dbh, "tracks", "genre1", "(genre1)"); - test_and_add_index($dbh, "tracks", "genre2", "(genre2)"); - test_and_add_index($dbh, "tracks", "year", "(year)"); - test_and_add_index($dbh, "tracks", "lang", "(lang)"); - test_and_add_index($dbh, "tracks", "type", "(type)"); - test_and_add_index($dbh, "tracks", "rating", "(rating)"); - test_and_add_index($dbh, "tracks", "sourceid","(sourceid)"); - test_and_add_index($dbh, "tracks", "mp3file", "mp3file(mp3file(10))"); - - test_and_add_index($dbh, "album", "artist", "artist(artist(10))"); - test_and_add_index($dbh, "album", "title", "title(title(10))"); - test_and_add_index($dbh, "album", "genre", "(genre)"); - test_and_add_index($dbh, "album", "modified", "(modified)"); - -} - -sub test_and_add_index -{ - my ($dbh, $table, $column, $indexspec) = @_; - - my ($sth, $count, $row); - $sth = $dbh->prepare("SHOW index FROM $table"); - $count = $sth->execute; - while($row = $sth->fetchrow_hashref){ - last if ($row->{Key_name} eq $column); - } - if($row->{Key_name} eq $column){ - #print "index $column exists\n"; - ; - } - else{ - print "creating index $column\n"; - $dbh->do("ALTER TABLE $table ADD INDEX $indexspec"); - } - $sth->finish; -} - - -############################################################################### -### Version 1.14 -############################################################################### - -sub db_update_114{ - my ($dbh) = @_; - my ($sth, $count, $res); - - ### bitrate - $sth = $dbh->prepare("SELECT id FROM tracks WHERE length(bitrate)<4"); - $count = $sth->execute; - if ($count > 0){ - print("Update table tracks to version 1.14\n"); - print("enlarging field bitrate to 10 characters\n"); - $dbh->do("ALTER TABLE tracks MODIFY COLUMN bitrate VARCHAR(10)"); - - ### add prefix "mp3 " to all bitrate fields of mp3 tracks - $res=print("add prefix \"mp3 \" to all bitrate fields of mp3 tracks\n"); - $dbh->do("UPDATE tracks SET bitrate=CONCAT('mp3 ',bitrate) " - ."WHERE length(bitrate)<4 AND ( mp3file LIKE '%.mp3'" - ." OR mp3file LIKE 'http%')"); - print "mp3 track records updated\n"; - $dbh->do("UPDATE tracks SET bitrate=CONCAT('ogg ',bitrate) " - ."WHERE length(bitrate)<4 AND mp3file LIKE '%.ogg'"); - - ### check result - $sth = $dbh->prepare("SELECT id FROM tracks WHERE length(bitrate)<4"); - $count = $sth->execute; - if ($count > 0){ - print "\n"; - print "Warning: some track records could not be properly translated.\n"; - print " You might have tracks in your database with no audio-\n"; - print " file associated!\n\n"; - } - } - $sth->finish; -} - - - -############################################################################### -### Version 1.12 -############################################################################### - -sub db_update_112{ - my ($dbh) = @_; - my $res; - - ### add player process id -> killing pid with killall and killfam is unstable and too slow! - #$res = $dbh->do("SHOW COLUMNS FROM playerstate LIKE 'processid'"); - #if ($res < 1){ - # print("Update table playerstate to version 1.12\n"); - # print("Adding field processid to table playerstate\n"); - # $dbh->do("ALTER TABLE playerstate ADD COLUMN processid INT AFTER snddevice"); - #} - - ### usage frequencies - $res = $dbh->do("SHOW COLUMNS FROM language LIKE 'freq'"); - if ($res < 1){ - print("Update table language to version 1.12\n"); - print("Adding field freq to table language\n"); - $dbh->do("ALTER TABLE language ADD COLUMN freq INT AFTER language"); - } - $res = $dbh->do("SHOW COLUMNS FROM genre LIKE 'freq'"); - if ($res < 1){ - print("Update table genre to version 1.12\n"); - print("Adding field freq to table genre\n"); - $dbh->do("ALTER TABLE genre ADD COLUMN freq INT AFTER genre"); - } -#else {print("-- column modified exists -> DB needs not be updated\n");} -} - - - -############################################################################### -### Version 1.11 -############################################################################### - -sub db_update_111{ - my ($dbh) = @_; - my $res; - - ### Table recordingitem - $res = $dbh->do("SHOW TABLES LIKE 'recordingitem'"); - if ($res < 1){ - print("recordingitem does not exist (upgrading...)\n"); - $dbh->do( - "create table recordingitem(" - ."trackid int," - ."recdate date," - ."rectime time," - ."reclength int," - ."enddate date," - ."endtime time," - ."repeat varchar(10)," - ."initcmd varchar(255)," - ."parameters varchar(255)," - ."atqjob int," - ."id int not null," - ."primary key(id)" - .")"); - } -#else{print("-- recordingitem does exist\n");} -} - - - -############################################################################### -### Version 0.97 -############################################################################### - -sub db_update_097{ - my ($dbh) = @_; - my $res; - - ### shuffle parameter - $res = $dbh->do("SHOW COLUMNS FROM playerstate LIKE 'shufflepar'"); - if ($res < 1){ - print("Update table album to version 0.97\n"); - print("Adding modified field shufflepar,shufflestat to table playerstate\n"); - $dbh->do("ALTER TABLE playerstate ADD COLUMN shufflepar varchar(255) AFTER state"); - $dbh->do("ALTER TABLE playerstate ADD COLUMN shufflestat varchar(255) AFTER shufflepar"); - } -#else {print("-- column modified exists -> DB needs not be updated\n");} -} - - - -############################################################################### -### Version 0.96 -############################################################################### - -sub db_update_096{ - my ($dbh) = @_; - my $res; - - ### album modification time - $res = $dbh->do("SHOW COLUMNS FROM album LIKE 'modified'"); - if ($res < 1){ - print("Update table album to version 0.96\n"); - print("Adding modified field to table album\n"); - $dbh->do("ALTER TABLE album ADD COLUMN modified date AFTER covertxt"); - } -#else {print("-- column modified exists -> DB needs not be updated\n");} -} - - -############################################################################### -### Version 0.95 -############################################################################### - -sub db_update_095{ - my ($dbh) = @_; - my $res; - - ### anchortime - $res = $dbh->do("SHOW COLUMNS FROM playerstate LIKE 'anchortime'"); - if ($res < 1){ - print("Update table playerstate to version 0.95\n"); - print("Adding anchortime field to table playerstate\n"); - $dbh->do("ALTER TABLE playerstate ADD COLUMN anchortime bigint AFTER framesremain"); - } -#else {print("-- column anchortime exists -> DB needs not be updated\n");} - - ### framestotal - $res = $dbh->do("SHOW COLUMNS FROM playerstate LIKE 'framestotal'"); - if ($res < 1){ - print("Update table playerstate to version 0.95\n"); - print("Renaming framesremain field to framestotal\n"); - $dbh->do("ALTER TABLE playerstate CHANGE framesremain framestotal INT"); - } -#else {print("-- column framestotal exists -> DB needs not be updated\n");} -} - - -############################################################################### -### Version 0.94 -############################################################################### - -sub check_new_mp3info080{ -# This routine checks if the version of mp3info is at least 0.8.0, which -# is required as of GD-version 0.94 -# A warning message is printed if mp3info should be updated - - my $infostr = `mp3info`; - if ($infostr =~ /MP3Info\D*([0-9]*).([0-9]*).([0-9]*)/){ - if ($2 < 8){ - print ("\n\n"); - print ("Warning: The Version of 'mp3info' on your system is $1.$2.$3\n"); - print (" At least version 0.8.0 is required. You can get it\n"); - print (" from http://www.ibiblio.org/mp3info\n"); - print ("\n\n"); - exit(0); - } - } - else{ - print ("Warning: could not extract version number of 'mp3info'\n"); - print (" 'mp3info' is not installed?\n"); - exit(0); - } -} - - - -sub db_update_094{ - my ($dbh) = @_; - my $res; - - ### Bitrate - $res = $dbh->do("SHOW COLUMNS FROM tracks LIKE 'bitrate'"); - if ($res < 1){ - print("Update table tracks to version 0.94\n"); - print("Adding bitrate field to table tracks\n"); - $dbh->do("ALTER TABLE tracks ADD COLUMN bitrate CHAR(4) AFTER lyrics"); - - ### Update records - my $base = gdparams::gdbase(); - my ($sth, $count, $row, $fname, $bitrate); - $sth = $dbh->prepare("SELECT * FROM tracks WHERE bitrate IS NULL OR bitrate=''"); - $count = $sth->execute; - print("I have to update the bitrate of $count records\n"); - while($row = $sth->fetchrow_hashref){ - $fname = `ls $base/[0-9][0-9]/$row->{mp3file}`; # get full path - chop($fname); - $bitrate = gdgentools::get_bitrate_str($fname); - print("Set bitrate of $row->{artist}/$row->{title} to $bitrate\n"); - $dbh->do( "UPDATE tracks SET bitrate='$bitrate' WHERE id=$row->{id}"); - - } - $sth->finish; - } -#else {print("-- column bitrate exists -> DB needs not be updated\n");} - - - ### Table player - $res = $dbh->do("SHOW TABLES LIKE 'player'"); - if ($res < 1){ - print("player does not exist (upgrading...)\n"); - $dbh->do( - "create table player( " - ."ipaddr varchar(255) not null," - ."uichannel varchar(255) not null," - ."logtarget int," - ."cdripper varchar(255)," - ."mp3encoder varchar(255)," - ."cdromdev varchar(255)," - ."cdrwdev varchar(255)," - ."id int not null," - ."primary key(id)" - .")"); - } -#else{print("-- player does exist\n");} - - - ### Table playerstate - $res = $dbh->do("SHOW TABLES LIKE 'playerstate'"); - if ($res < 1){ - print("playerstate does not exist (upgrading...)\n"); - $dbh->do( - "create table playerstate(" - ."playerid int not null," - ."playertype int not null," - ."snddevice varchar(255)," - ."playerapp varchar(255)," - ."playerparams varchar(255)," - ."ptlogger varchar(255)," - ."currtracknb int," - ."state varchar(4)," - ."pauseframe int, " - ."framesplayed int," - ."framesremain int," - ."primary key(playerid, playertype)" - .")"); - } -#else{print("-- playerstate does exist\n");} - - - ### Table tracklistitem - $res = $dbh->do("SHOW TABLES LIKE 'tracklistitem'"); - if ($res < 1){ - print("tracklistitem does not exist (upgrading...)\n"); - $dbh->do( - "create table tracklistitem(" - ."playerid int not null," - ."listtype smallint not null," - ."tracknb int not null," - ."trackid int not null," - ."primary key(playerid, listtype, tracknb)" - .")"); - } -#else{print("-- tracklistitem does exist\n");} - -} - -############################################################################### -### Version 0.92 -############################################################################### - -sub fix_leading_slash_bug -### removes leading / in the column tracks.mp3file -{ - my ($dbh) = @_; - my $numrec = $dbh->do( "UPDATE tracks SET mp3file=SUBSTRING(mp3file,2) " - ."WHERE mp3file LIKE '/%'"); - if ($numrec>0){ - print("fix_leading_slash_bug: $numrec records fixed!\n\n"); - } -} - - - -############################################################################### - -END{ - ; -} - - -# -1; |