changeset 27:6e381916b016

Some fixes in the query mechanisms of QuoteDB and URLLog.
author Matti Hamalainen <ccr@tnsp.org>
date Mon, 05 Sep 2011 19:51:46 +0300
parents 3f999371de82
children a59e312b1513
files quotedb.tcl urllog.tcl
diffstat 2 files changed, 16 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/quotedb.tcl	Mon Sep 05 19:20:43 2011 +0300
+++ b/quotedb.tcl	Mon Sep 05 19:51:46 2011 +0300
@@ -184,9 +184,11 @@
   set maxdiff [expr $qdb_max_deltime * 60]
 
   if {[regexp "(\[0-9\]+)" $utext umatch unum]} {
+    set quoteID $unum
     set usql "SELECT id AS quoteID, utime AS utime, utext AS utext, user AS uuser, host AS uhost FROM $utable WHERE id=$unum AND user='[qdb_escape $uhand]'"
   } else {
     qdb_msg $upublic $unick $uchan "ID # annettava."
+    return 0
   }
   
   quotedb eval $usql {
@@ -245,6 +247,7 @@
   qdb_log "$unick/$uhand/$uchan searched $utable: $utext"
 
   set ftokens [split $utext " "]
+  set fpatlist ""
   foreach ftoken $ftokens {
     set fprefix [string range $ftoken 0 0]
     set fpattern [string range $ftoken 1 end]
@@ -259,9 +262,14 @@
       lappend fpatlist "utext LIKE '%[qdb_escape $ftoken]%'"
     }
   }
+  if {[llength $fpatlist] > 0} {
+    set fquery "WHERE [join $fpatlist " AND "]"
+  } else {
+    set fquery ""
+  }
 
   set uresults 0
-  set usql "SELECT id AS quoteID, utime AS utime, utext AS utext, user AS uuser, host AS uhost FROM $utable WHERE [join $fpatlist " AND "] ORDER BY utime DESC LIMIT $ulimit"
+  set usql "SELECT id AS quoteID, utime AS utime, utext AS utext, user AS uuser, host AS uhost FROM $utable $fquery ORDER BY utime DESC LIMIT $ulimit"
   quotedb eval $usql {
     incr uresults
     qdb_msg $upublic $unick $uchan "#${quoteID}: $utext ($uuser@[qdb_ctime $utime])"
--- a/urllog.tcl	Mon Sep 05 19:20:43 2011 +0300
+++ b/urllog.tcl	Mon Sep 05 19:51:46 2011 +0300
@@ -540,6 +540,7 @@
 	urllog_log "$unick/$uhand searched URL: $utext"
 
 	set ftokens [split $utext " "]
+	set fpatlist ""
 	foreach ftoken $ftokens {
 		set fprefix [string range $ftoken 0 0]
 		set fpattern [string range $ftoken 1 end]
@@ -555,8 +556,13 @@
 		}
 	}
 
+  if {[llength $fpatlist] > 0} {
+    set fquery "WHERE [join $fpatlist " AND "]"
+  } else {
+    set fquery ""
+  }
 	set iresults 0
-	set query "SELECT id AS urlID, utime AS utime, url AS uurl, user AS uuser, host AS uhost FROM urls WHERE [join $fpatlist " AND "] ORDER BY utime DESC LIMIT $ulimit"
+	set query "SELECT id AS urlID, utime AS utime, url AS uurl, user AS uuser, host AS uhost FROM urls $fquery ORDER BY utime DESC LIMIT $ulimit"
 	urldb eval $query {
 		incr iresults
 		set shortURL $uurl