my $beenThere = {};
my $dsn = "dbi:SQLite:dbname=$TopDir/$Conf{SearchDB}";
+my $user = '';
-my $dbh = DBI->connect($dsn, "", "", { RaiseError => 1, AutoCommit => 0 });
+# DEBUG option!
+($dsn,$user) = qw/dbi:Pg:dbname=backuppc dpavlin/;
+
+my $dbh = DBI->connect($dsn, $user, "", { RaiseError => 1, AutoCommit => 0 });
my %opt;
###################################create tables############################3
if ($opt{c}) {
+ sub do_index {
+ my $index = shift || return;
+ my ($table,$col,$unique) = split(/_/, $index);
+ $unique ||= '';
+ $dbh->do(qq{ create $unique index $index on $table($col) });
+ }
+
print "creating tables...\n";
$dbh->do(qq{
create table hosts (
- ID INTEGER PRIMARY KEY,
+ ID SERIAL PRIMARY KEY,
name VARCHAR(30) NOT NULL,
IP VARCHAR(15)
);
$dbh->do(qq{
create table shares (
- ID INTEGER PRIMARY KEY,
+ ID SERIAL PRIMARY KEY,
hostID INTEGER NOT NULL references hosts(id),
name VARCHAR(30) NOT NULL,
share VARCHAR(200) NOT NULL,
create table backups (
hostID INTEGER NOT NULL references hosts(id),
num INTEGER NOT NULL,
- date DATE,
- type CHAR(1),
+ date integer NOT NULL,
+ type CHAR(4) not null,
PRIMARY KEY(hostID, num)
);
});
+ do_index('backups_num_unique');
+
$dbh->do(qq{
create table dvds (
- ID INTEGER PRIMARY KEY,
+ ID SERIAL PRIMARY KEY,
num INTEGER NOT NULL,
name VARCHAR(255) NOT NULL,
mjesto VARCHAR(255)
$dbh->do(qq{
create table files (
- ID INTEGER NOT NULL PRIMARY KEY,
+ ID SERIAL PRIMARY KEY,
shareID INTEGER NOT NULL references shares(id),
backupNum INTEGER NOT NULL references backups(num),
name VARCHAR(255) NOT NULL,
path VARCHAR(255) NOT NULL,
fullpath VARCHAR(255) NOT NULL,
- date TIMESTAMP NOT NULL,
+ date integer NOT NULL,
type INTEGER NOT NULL,
size INTEGER NOT NULL,
dvdid INTEGER references dvds(id)
);
});
- print "creating indexes...\n";
+ print "creating indexes:";
foreach my $index (qw(
hosts_name
files_date
files_size
)) {
- my ($table,$col) = split(/_/, $index);
- $dbh->do(qq{ create index $index on $table($col) });
+ print " $index";
+ do_index($index);
}
+ print "...\n";
+ $dbh->commit;
}
if ($opt{d}) {
print "deleting ";
- foreach my $table (qw(hosts shares files dvds backups)) {
+ foreach my $table (qw(files dvds backups shares hosts)) {
print "$table ";
$dbh->do(qq{ DELETE FROM $table });
}
print " done...\n";
+
+ eval { $dbh->commit; };
}
if ($opt{v}) {
$hosts->{$host_key}->{'ip'}
);
- $hostID = $dbh->func('last_insert_rowid');
+ $hostID = $dbh->last_insert_id(undef,undef,'hosts',undef);
}
print("host ".$hosts->{$host_key}->{'host'}.": ");
my ($broj) = $sth->{backups_broj}->fetchrow_array();
next if ($broj > 0);
+ $sth->{insert_backups}->execute(
+ $hostID,
+ $backupNum,
+ $backup->{'endTime'},
+ $backup->{'type'}
+ );
+ $dbh->commit();
+
my $files = BackupPC::View->new($bpc, $hostname, \@backups, 1);
foreach my $share ($files->shareList($backupNum)) {
$dbh->commit();
}
- $sth->{insert_backups}->execute(
- $hostID,
- $backupNum,
- $backup->{'endTime'},
- $backup->{'type'}
- );
- $dbh->commit();
-
}
}
undef $sth;
$drop_down =~ s#//+#/#g;
$sth->{insert_share}->execute($hostID,$share, $drop_down ,undef);
- return $dbh->func('last_insert_rowid');
+ return $dbh->last_insert_id(undef,undef,'shares',undef);
}
sub found_in_db {