latest version of RBN. Add qra to prefixes.
[spider.git] / perl / DXSql.pm
index 8e2085de009687e9c61e7bcdb8a85566d2fac904..842e30054fc1a8c00db5f483d8593ef02b25e10b 100644 (file)
@@ -1,7 +1,7 @@
 #
 # The master SQL module
 #
-# $Id$
+#
 #
 # Copyright (c) 2006 Dirk Koopman G1TLH
 #
@@ -10,17 +10,10 @@ package DXSql;
 
 use strict;
 
-use DXSql::SQLite;
-use DXSql::mysql;
 use DXDebug;
 
-use vars qw($VERSION $BRANCH);
-$VERSION = sprintf( "%d.%03d", q$Revision$ =~ /(\d+)\.(\d+)/ );
-$BRANCH = sprintf( "%d.%03d", q$Revision$ =~ /\d+\.\d+\.(\d+)\.(\d+)/  || (0,0));
-$main::build += $VERSION;
-$main::branch += $BRANCH;
-
-our $active = 0;
+use vars qw($active);
+$active = 0;
 
 sub init
 {
@@ -67,7 +60,7 @@ sub connect
        my $dbh;
        eval {
                no strict 'refs';
-               $dbh = DBI->connect($dsn, $user, $passwd, {AutoCommit => 0}); 
+               $dbh = DBI->connect($dsn, $user, $passwd); 
        };
        unless ($dbh) {
                $active = 0;
@@ -91,16 +84,19 @@ sub do
        eval { $self->{dbh}->do($s); }; 
 }
 
+sub begin_work
+{
+       $_[0]->{dbh}->begin_work;
+}
+
 sub commit
 {
        $_[0]->{dbh}->commit;
-       $_[0]->{dbh}->{AutoCommit} = 0;
 }
 
 sub rollback
 {
        $_[0]->{dbh}->rollback;
-       $_[0]->{dbh}->{AutoCommit} = 0;
 }
 
 sub quote
@@ -116,7 +112,7 @@ sub prepare
 sub spot_insert_prepare
 {
        my $self = shift;
-       return $self->prepare('insert into spot values(?' . ',?' x 14 . ')');
+       return $self->prepare('insert into spot values(?' . ',?' x 15 . ')');
 }
 
 sub spot_insert
@@ -126,6 +122,8 @@ sub spot_insert
        my $sth = shift;
        
        if ($sth) {
+               push @$spot, undef while  @$spot < 15;
+               pop @$spot while @$spot > 15;
                eval {$sth->execute(undef, @$spot)};
        } else {
                my $s = "insert into spot values(NULL,";
@@ -142,7 +140,8 @@ sub spot_insert
                $s .= $spot->[10] . ',';
                $s .= $spot->[11] . ',';
                $s .= (length $spot->[12] ? $self->quote($spot->[12]) : 'NULL') . ',';
-               $s .= (length $spot->[13] ? $self->quote($spot->[13]) : 'NULL') . ')';
+               $s .= (length $spot->[13] ? $self->quote($spot->[13]) : 'NULL') . ',';
+               $s .= (length $spot->[14] ? $self->quote($spot->[14]) : 'NULL') . ')';
                eval {$self->do($s)};
        }
 }
@@ -163,6 +162,7 @@ sub spot_search
                $expr =~ s/\$f11/spottercq/g;
                $expr =~ s/\$f12/spotstate/g;
                $expr =~ s/\$f13/spotterstate/g;
+               $expr =~ s/\$f14/ipaddr/g;
                $expr =~ s/\$f0/freq/g;
                $expr =~ s/\$f1/spotcall/g;
                $expr =~ s/\$f2/time/g;
@@ -184,7 +184,7 @@ sub spot_search
        my $trange = $fdays ? "($fdays and $days)" : $days;
        $expr .= $expr ? " and $trange" : $trange;
     my $s = qq{select freq,spotcall,time,comment,spotter,spotdxcc,spotterdxcc,
-origin,spotitu,spotcq,spotteritu,spottercq,spotstate,spotterstate from spot
+origin,spotitu,spotcq,spotteritu,spottercq,spotstate,spotterstate,ipaddr from spot
 where $expr order by time desc limit $n};
     dbg("sql expr: $s") if isdbg('search');
        my $ref = $self->{dbh}->selectall_arrayref($s);