X-Git-Url: http://jaekl.net/gitweb/?p=quanweb.git;a=blobdiff_plain;f=main%2Fdb.go;h=d903b26209d2caf501b1bdf8767b51f5e6f44fcb;hp=b636cffaed938752386174a32f5e60db54d13800;hb=4eb9b4e2e740117d26b2078591dc0ed5f9b4341a;hpb=c4d6ddc286910a8432b18a4627b7b43ace20e6f3 diff --git a/main/db.go b/main/db.go index b636cff..d903b26 100644 --- a/main/db.go +++ b/main/db.go @@ -20,6 +20,7 @@ type Book struct { DDC string // Dewey Decimal Classification Description string // Back cover / inside flap blurb, describing the book Genre string // e.g. "adventure", "historical", "mystery", "romance", "sf" (Science Fiction) + Language string LCC string // Library of Congress Classification SeriesName string Title string @@ -29,7 +30,7 @@ type Book struct { // --------------------------------------------------------------------------- type Field string const ( - Author, Series, Title Field = "aut", "ser", "tit" + Author, Language, Series, Title Field = "aut", "lan", "ser", "tit" ) func (f Field) String() string { @@ -97,7 +98,7 @@ func openDb(user, pass, dbName string) (*sql.DB) { } func queryBooksByIds(ids []int) []Book { - query := `SELECT s.age,a.grouping,a.reading,a.sort,b.cover,c.ddc,b.description,s.genre,c.lcc,s.descr,b.title,b.volume + query := `SELECT s.age,a.grouping,a.reading,a.sort,b.cover,c.ddc,b.description,s.genre,b.language,c.lcc,s.descr,b.title,b.volume FROM Authors a INNER JOIN Books b ON a.id=b.author LEFT OUTER JOIN Classifications c ON c.id=b.classification @@ -128,10 +129,10 @@ func queryBooksByIds(ids []int) []Book { row := ps.QueryRow(id) - var age, grouping, reading, sort, ddc, description, genre, lcc, name, title, volume sql.NullString + var age, grouping, reading, sort, ddc, description, genre, language, lcc, name, title, volume sql.NullString var cover sql.NullInt64 - err = row.Scan(&age, &grouping, &reading, &sort, &cover, &ddc, &description, &genre, &lcc, &name, &title, &volume) + err = row.Scan(&age, &grouping, &reading, &sort, &cover, &ddc, &description, &genre, &language, &lcc, &name, &title, &volume) if err != nil { report("Error: Failed to read book:" + strconv.Itoa(id) + ":", err) } else { @@ -145,6 +146,7 @@ func queryBooksByIds(ids []int) []Book { b.DDC = nsVal(ddc) b.Description = nsVal(description) b.Genre = nsVal(genre) + b.Language = nsVal(language) b.LCC = nsVal(lcc) b.SeriesName = nsVal(name) b.Title = nsVal(title) @@ -203,6 +205,8 @@ func queryIds(criteria []SearchTerm) []int { case Author: query += " UPPER(a.grouping) LIKE UPPER($" + strconv.Itoa(i + 1) + ")" text = strings.Replace(text, " ", "", -1) // Remove spaces + case Language: + query += " UPPER(b.language) LIKE UPPER($" + strconv.Itoa(i + 1) + ")" case Series: query += " UPPER(s.descr) LIKE UPPER($" + strconv.Itoa(i + 1) + ")" case Title: