aboutsummaryrefslogtreecommitdiff
path: root/lib/MasterServer/Database/SQLite/dbCore.pm
diff options
context:
space:
mode:
authorDarkelarious <darkelarious@333networks.com>2017-08-22 11:00:13 +0200
committerDarkelarious <darkelarious@333networks.com>2017-08-22 11:00:13 +0200
commitc06322da38b4cb76b2036af1a5448083adb8ff20 (patch)
tree189c9f0fec3325be927f763aba23cf18aa68cfe4 /lib/MasterServer/Database/SQLite/dbCore.pm
parente0d727670cbeda0db0812c5c9efc503d75f8d0a4 (diff)
downloadMasterServer-Perl-2.4.0.tar.gz
MasterServer-Perl-2.4.0.zip
new server checking mechanism, complete recode of major functionsv2.4.0
Diffstat (limited to 'lib/MasterServer/Database/SQLite/dbCore.pm')
-rwxr-xr-xlib/MasterServer/Database/SQLite/dbCore.pm43
1 files changed, 6 insertions, 37 deletions
diff --git a/lib/MasterServer/Database/SQLite/dbCore.pm b/lib/MasterServer/Database/SQLite/dbCore.pm
index 0772a4e..d16cb26 100755
--- a/lib/MasterServer/Database/SQLite/dbCore.pm
+++ b/lib/MasterServer/Database/SQLite/dbCore.pm
@@ -4,72 +4,47 @@ use strict;
use warnings;
use POSIX qw/strftime/;
use Exporter 'import';
-
our @EXPORT = qw| database_login dump_database |;
################################################################################
## login to the database with credentials provided in the config file.
## returns dbh object or quits application on error.
-##
-## Recommended database types: Postgresql, MySQL or SQLite. Warranty void if
-## other database types are used. Use at your own risk.
################################################################################
sub database_login {
my $self = shift;
-
- # get db info
my @db_type = split(':', $self->{dblogin}->[0]);
- # inform what db we try to load
- $self->log("info","Database: $db_type[1], $db_type[2]");
-
# check if database file exists
my $db_file = [split(':', $self->{dblogin}->[0])]->[2];
$db_file =~ s/dbname=//i;
+ # fatal error if database does not exist
unless (-e $db_file) {
- # fatal error
$self->log("fatal", "Database file $db_file does not exist!");
-
- # end program
$self->halt();
}
- # create the dbi object
+ # connect to SQLite database
my $dbh = DBI->connect(@{$self->{dblogin}}, {PrintError => 1});
# verify that the database connected
if (defined $dbh) {
-
- # log the event
- $self->log("info","Connected to the $db_type[1] database.");
-
- # turn on error printing
+ $self->log("info","Connected to the $db_type[1] database $db_type[2]");
$dbh->{printerror} = 1;
- # synchronous read/writing to the SQLite file OFF. That means: when the script
- # shuts down unexpectedly, i.e. because of power failure or a crash, changes
- # to the database are NOT SAVED. However, if this setting is not turned OFF,
- # it takes too long to write to the database, which means that new beacons,
- # requests and servers cannot be processed. You don't have a choice, really..
+ # synchronous read/writing to the SQLite file OFF. Faster, but risk on data
+ # loss on crashes, premature exits or power failure.
$dbh->do("PRAGMA synchronous = OFF");
# allow the use of foreign keys (referencing)
$dbh->do("PRAGMA foreign_keys = ON");
-
- # return the dbi object for further use
return $dbh;
}
else {
# fatal error
$self->log("fatal", "$DBI::errstr!");
-
- # end program
$self->halt();
}
-
- # in case of any other error, return undef.
- return undef;
}
################################################################################
@@ -78,21 +53,15 @@ sub database_login {
################################################################################
sub dump_database {
my $self = shift;
-
- # filename / time
my $time = strftime('%Y-%m-%d-%H-%M',localtime);
# read db credentials from db login
my @db_type = split ':', $self->{dblogin}->[0];
$db_type[2] =~ s/dbname=//;
-
- # split db path
my @db_path = split '/', $db_type[2];
- # use pg_dump to dump Postgresql databases
+ # make a copy of the database file
system("cp $db_type[2] $self->{root}/data/dumps/SQLite-$time-$db_path[-1]");
-
- # log
$self->log("dump", "Dumping database to /data/dumps/SQLite-$time-$db_path[-1]");
}