79 lines
1.8 KiB
Perl
79 lines
1.8 KiB
Perl
|
#!/usr/bin/env perl
|
||
|
|
||
|
use DBI;
|
||
|
|
||
|
if (@ARGV < 1) {
|
||
|
print "Usage: ./user_sql_update dbfile.sq3\n";
|
||
|
exit(0);
|
||
|
}
|
||
|
my $dbfile = $ARGV[0];
|
||
|
|
||
|
sub check_exists {
|
||
|
my ($needed) = @_;
|
||
|
|
||
|
my $dsn = "dbi:SQLite:dbname=$dbfile";
|
||
|
my $user = "";
|
||
|
my $password = "";
|
||
|
my $dbh = DBI->connect($dsn, $user, $password, {
|
||
|
PrintError => 0,
|
||
|
RaiseError => 1,
|
||
|
AutoCommit => 1,
|
||
|
FetchHashKeyName => 'NAME_lc',
|
||
|
});
|
||
|
|
||
|
my $sql = "PRAGMA table_info(users)";
|
||
|
my $sth = $dbh->prepare($sql);
|
||
|
|
||
|
my $gotneeded;
|
||
|
|
||
|
$sth->execute();
|
||
|
while (my @row = $sth->fetchrow_array) {
|
||
|
if ($row[1] eq $needed) {
|
||
|
$gotneeded = 1;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
$dbh->disconnect;
|
||
|
return $gotneeded;
|
||
|
}
|
||
|
|
||
|
if (check_exists("protocol") == 0) {
|
||
|
print "Column \"protocol\" doesn't exist... adding..\n";
|
||
|
|
||
|
my ($needed) = @_;
|
||
|
|
||
|
my $dsn = "dbi:SQLite:dbname=$dbfile";
|
||
|
my $user = "";
|
||
|
my $password = "";
|
||
|
my $dbh = DBI->connect($dsn, $user, $password, {
|
||
|
PrintError => 0,
|
||
|
RaiseError => 1,
|
||
|
AutoCommit => 1,
|
||
|
FetchHashKeyName => 'NAME_lc',
|
||
|
});
|
||
|
|
||
|
my $sql = "ALTER TABLE users ADD COLUMN protocol INTEGER DEFAULT 1";
|
||
|
$dbh->do($sql);
|
||
|
$dbh->disconnect;
|
||
|
}
|
||
|
|
||
|
if (check_exists("archiver") == 0) {
|
||
|
print "Column \"archiver\" doesn't exist... adding..\n";
|
||
|
|
||
|
my ($needed) = @_;
|
||
|
|
||
|
my $dsn = "dbi:SQLite:dbname=$dbfile";
|
||
|
my $user = "";
|
||
|
my $password = "";
|
||
|
my $dbh = DBI->connect($dsn, $user, $password, {
|
||
|
PrintError => 0,
|
||
|
RaiseError => 1,
|
||
|
AutoCommit => 1,
|
||
|
FetchHashKeyName => 'NAME_lc',
|
||
|
});
|
||
|
|
||
|
my $sql = "ALTER TABLE users ADD COLUMN archiver INTEGER DEFAULT 1";
|
||
|
$dbh->do($sql);
|
||
|
$dbh->disconnect;
|
||
|
}
|