[Koha-cvs] CVS: koha/updater updatedatabase,1.11,1.12
Steve Tonnesen
tonnesen at users.sourceforge.net
Thu Jul 4 18:41:08 CEST 2002
Update of /cvsroot/koha/koha/updater
In directory usw-pr-cvs1:/tmp/cvs-serv6314
Modified Files:
updatedatabase
Log Message:
Merged changes from rel-1-2. Abstracted table structure changes by alan.
Index: updatedatabase
===================================================================
RCS file: /cvsroot/koha/koha/updater/updatedatabase,v
retrieving revision 1.11
retrieving revision 1.12
diff -C2 -r1.11 -r1.12
*** updatedatabase 25 Jun 2002 16:59:27 -0000 1.11
--- updatedatabase 4 Jul 2002 16:41:06 -0000 1.12
***************
*** 1,4 ****
--- 1,6 ----
#!/usr/bin/perl
+ # $Id$
+
# Database Updater
# This script checks for required updates to the database.
***************
*** 10,13 ****
--- 12,17 ----
# - Would also be a good idea to offer to do a backup at this time...
+ # NOTE: If you do something more than once in here, make it table driven.
+
use strict;
***************
*** 18,24 ****
use C4::Database;
! my %existingtables; # tables already in database
! my %types;
! my $table;
#-------------------
--- 22,37 ----
use C4::Database;
! my $debug=0;
!
! my (
! $sth, $sti,
! $query,
! %existingtables, # tables already in database
! %types,
! $table,
! $column,
! $type, $null, $key, $default, $extra,
! $prefitem, # preference item in systempreferences table
! );
#-------------------
***************
*** 61,64 ****
--- 74,110 ----
PRIMARY KEY (websitenumber) )",
);
+ marcrecorddone=>"( isbn char(40),
+ issn char(40),
+ lccn char(40),
+ controlnumber char(40))",
+ uploadedmarc=>"( id int(11) NOT NULL auto_increment PRIMARY KEY,
+ marc longblob,
+ hidden smallint(6) default NULL,
+ name varchar(255) default NULL)",
+ ethnicity=>"( code varchar(10) NOT NULL default '',
+ name varchar(255) default NULL,
+ PRIMARY KEY (code) )",
+ );
+
+ my %requirefields=(
+ biblio=>{ 'abstract' => 'text' },
+ deletedbiblio=>{ 'abstract' => 'text' },
+ biblioitems=>{ 'lccn' => 'char(25)',
+ 'url' => 'varchar(255)',
+ 'marc' => 'text' },
+ deletedbiblioitems=>{ 'lccn' => 'char(25)',
+ 'url' => 'varchar(255)',
+ 'marc' => 'text' },
+ branchtransfers=>{ 'datearrived' => 'datetime' },
+ statistics=>{'borrowernumber' =>'int(11)'},
+ aqbooksellers=>{'invoicedisc' =>'float(6,4)',
+ 'nocalc' => 'int(11)'},
+ );
+
+ # Default system preferences
+ my %defaultprefs=(
+ 'autoMemberNum'=> '1',
+ 'acquisitions'=> 'simple',
+ );
#-------------------
***************
*** 80,84 ****
# Collect all tables into a list
! my $sth=$dbh->prepare("show tables");
$sth->execute;
while (my ($table) = $sth->fetchrow) {
--- 126,130 ----
# Collect all tables into a list
! $sth=$dbh->prepare("show tables");
$sth->execute;
while (my ($table) = $sth->fetchrow) {
***************
*** 88,91 ****
--- 134,138 ----
# Now add any missing tables
foreach $table ( keys %requiretables ) {
+ print "Checking $table table...\n" if $debug;
unless ($existingtables{$table} ) {
print "Adding $table table...\n";
***************
*** 99,103 ****
} # unless exists
} # foreach
- exit;
unless ($existingtables{'z3950servers'}) {
--- 146,149 ----
***************
*** 127,154 ****
# Columns
! # Get list of columns from biblioitems table
!
! my $sth=$dbh->prepare("show columns from biblioitems");
! $sth->execute;
! while (my ($column, $type, $null, $key, $default, $extra) = $sth->fetchrow) {
! $types{$column}=$type;
! }
! unless ($types{'lccn'}) {
! # Add LCCN field to biblioitems db
! print "Adding lccn field to biblioitems table...\n";
! my $sti=$dbh->prepare("alter table biblioitems
! add column lccn char(25)");
! $sti->execute;
! }
! unless ($types{'marc'}) {
! # Add MARC field to biblioitems db (not used anymore)
! print "Adding marc field to biblioitems table...\n";
! my $sti=$dbh->prepare("alter table biblioitems
! add column marc text");
! $sti->execute;
! }
!
! # Get list of columns from biblioitems table
my %itemtypes;
--- 173,204 ----
# Columns
+ foreach $table ( keys %requirefields ) {
+ print "Check table $table\n" if $debug;
+ $sth=$dbh->prepare("show columns from $table");
+ $sth->execute();
+ undef %types;
+ while ( ($column, $type, $null, $key, $default, $extra)
+ = $sth->fetchrow) {
+ $types{$column}=$type;
+ } # while
+ foreach $column ( keys %{ $requirefields{$table} } ) {
+ print " Check column $column\n" if $debug;
+ if ( ! $types{$column} ) {
+ # column doesn't exist
+ print "Adding $column field to $table table...\n";
+ $query="alter table $table
+ add column $column " . $requirefields{$table}->{$column} ;
+ print "Execute: $query\n" if $debug;
+ my $sti=$dbh->prepare($query);
+ $sti->execute;
+ if ($sti->err) {
+ print "**Error : $sti->errstr \n";
+ $sti->finish;
+ } # if error
+ } # if column
+ } # foreach column
+ } # foreach table
! # Get list of columns from items table
my %itemtypes;
***************
*** 207,211 ****
}
! unless ($branchcategories{'branchcode'} eq 'varchar(4)') {
print "Changing branchcode in branchcategories to categoryname text.\n";
my $sth=$dbh->prepare("alter table branchcategories change branchcode categoryname text");
--- 257,261 ----
}
! unless ($branchcategories{'categoryname'} eq 'text') {
print "Changing branchcode in branchcategories to categoryname text.\n";
my $sth=$dbh->prepare("alter table branchcategories change branchcode categoryname text");
***************
*** 220,223 ****
--- 270,298 ----
+ # Populate systempreferences if it is empty
+
+ foreach $prefitem ( keys %defaultprefs ) {
+ $sth=$dbh->prepare("select value
+ from systempreferences
+ where variable=?");
+ $sth->execute($prefitem);
+ unless ($sth->rows) {
+ print "Adding system preference item $prefitem with value " .
+ $defaultprefs{$prefitem} ."\n";
+ $sti=$dbh->prepare("
+ insert into systempreferences (variable, value)
+ values (?,?)");
+ $sti->execute($prefitem,$defaultprefs{$prefitem});
+ } # unless
+ } # foreach
+
+
$sth->finish;
$dbh->disconnect;
+
+ exit;
+
+ # $Log$
+ # Revision 1.12 2002/07/04 16:41:06 tonnesen
+ # Merged changes from rel-1-2. Abstracted table structure changes by alan.
+ #
More information about the Koha-cvs
mailing list