Albirew/nyaa-pantsu
Albirew
/
nyaa-pantsu
Archivé
1
0
Bifurcation 0
Ce dépôt a été archivé le 2022-05-07. Vous pouvez voir ses fichiers ou le cloner, mais pas ouvrir de ticket ou de demandes d'ajout, ni soumettre de changements.
nyaa-pantsu/utils/search/tags.go

45 lignes
872 B
Go

package search
import (
"strings"
"github.com/NyaaPantsu/nyaa/config"
)
// Tags struct for search
type Tags config.ArrayString
// Parse a tag list separated by commas to Tags struct
func (ta *Tags) Parse(str string) bool {
if str == "" {
return false
}
arr := strings.Split(str, ",")
for _, tag := range arr {
if tag != "" {
*ta = append(*ta, tag)
}
}
return len(*ta) > 0
}
// ToESQuery prepare the ES statement for tags
func (ta Tags) ToESQuery() string {
if len(ta) > 0 && ta[0] != "" {
return "tags:" + strings.Join(ta, " tags:")
}
return ""
}
// ToDBQuery prepare the DB statement for tags
func (ta Tags) ToDBQuery() (string, []string) {
if len(ta) > 0 {
conditionsAnd := make([]string, len(ta))
for key := range ta {
conditionsAnd[key] = "tags = ?"
}
return strings.Join(conditionsAnd, " AND "), ta
}
return "", []string{}
}