From b178df89b03266609147e3a8d6107d99c6482797 Mon Sep 17 00:00:00 2001 From: Las Zenow Date: Mon, 27 Apr 2015 20:54:41 -0400 Subject: [PATCH] Check if the lang is supported by mongo If an unsoported lang is setted in the language override the document will fail on inserting in the database, causing it to be lost. --- database/books.go | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/database/books.go b/database/books.go index f2c3125..77624ad 100644 --- a/database/books.go +++ b/database/books.go @@ -151,9 +151,7 @@ func updateBook(coll *mgo.Collection, id string, data map[string]interface{}) er for k, _ := range data { record.Changes[k] = book[k] if k == "lang" { - if lang := metadataLang(data); lang != "" { - data["_lang"] = lang - } + data["_lang"] = metadataLang(data) } } @@ -220,9 +218,18 @@ func buildQuery(q string) bson.M { } func metadataLang(book map[string]interface{}) string { + text_search_langs := map[string]bool{ + "da": true, "nl": true, "en": true, "fi": true, "fr": true, "de": true, + "hu": true, "it": true, "nb": true, "pt": true, "ro": true, "ru": true, + "es": true, "sv": true, "tr": true} + lang, ok := book["lang"].([]string) if !ok || len(lang) == 0 || len(lang[0]) < 2 { - return "" + return "none" } - return strings.ToLower(lang[0][0:2]) + lcode := strings.ToLower(lang[0][0:2]) + if text_search_langs[lcode] { + return lcode + } + return "none" }