X-Git-Url: http://jaekl.net/gitweb/?p=quanweb.git;a=blobdiff_plain;f=main%2Fdb.go;h=809634a24eb371680ab6ec55f3b64a3d3820477f;hp=21c6818d8c5e6ad23998d30cd5ce10b35a881b94;hb=e2b95cefd1e34e652317fdf82595932c0bf0c6bb;hpb=23d77d1681abb3361f68c56bf0a78481ea479248 diff --git a/main/db.go b/main/db.go index 21c6818..809634a 100644 --- a/main/db.go +++ b/main/db.go @@ -4,6 +4,7 @@ import ( "database/sql" "fmt" _ "github.com/lib/pq" + "strings" "strconv" "sync" ) @@ -56,7 +57,7 @@ func getDb() (*sql.DB) { g_mutex.Lock() defer g_mutex.Unlock() if nil == g_db { - config := getConfig() + config := GetConfig() g_db = openDb(config.user, config.pass, config.dbName) } } @@ -183,8 +184,6 @@ func queryBookPathById(id int) (string) { } func queryIds(criteria []SearchTerm) []int { - fmt.Println("queryIds():", criteria) - query := "SELECT b.id FROM Books b" + " INNER JOIN Authors a ON a.id=b.author" + " LEFT OUTER JOIN Series s ON s.id=b.series" @@ -197,18 +196,22 @@ func queryIds(criteria []SearchTerm) []int { } else { query += " AND " } + + text := criterion.Text + switch criterion.Attribute { case Author: - query += " a.grouping LIKE $" + strconv.Itoa(i + 1) + query += " UPPER(a.grouping) LIKE UPPER($" + strconv.Itoa(i + 1) + ")" + text = strings.Replace(text, " ", "", -1) // Remove spaces case Series: - query += " s.descr LIKE $" + strconv.Itoa(i + 1) + query += " UPPER(s.descr) LIKE UPPER($" + strconv.Itoa(i + 1) + ")" case Title: - query += " b.title LIKE $" + strconv.Itoa(i + 1) + query += " UPPER(b.title) LIKE UPPER($" + strconv.Itoa(i + 1) + ")" default: report("Error: unrecognized search field in queryIds(): " + criterion.Attribute.String(), nil) return nil } - args[i] = criterion.Text + args[i] = text } query += " ORDER BY b.path"