M core/routes.go => core/routes.go +6 -5
@@ 3187,13 3187,14 @@ func (s *Service) TagAutocomplete(c echo.Context) error {
gctx := c.(*server.Context)
user := gctx.User.(*models.User)
orgID := c.QueryParam("org")
- q := c.QueryParam("q")
- var tags []*models.Tag
- var err error
+ q := links.ParseSearch(c.QueryParam("q"))
+ var (
+ tags []*models.Tag
+ err error
+ )
if q != "" {
- s := links.ParseSearch(q)
opts := &database.FilterOptions{
- Filter: sq.Expr(`to_tsvector('simple', t.name) @@ to_tsquery('simple', ?)`, s),
+ Filter: sq.Expr(`to_tsvector('simple', t.name) @@ to_tsquery('simple', ?)`, q),
}
if orgID != "" {
opts.Filter = sq.And{
M helpers.go => helpers.go +7 -5
@@ 864,12 864,14 @@ func ParseSearch(s string) string {
var words []string
for _, word := range strings.Split(s, " ") {
// This is used for to_tsquery searches (tag autocomplete)
- word = strings.TrimSpace(word)
- word = strings.Replace(word, ":", "\\:", -1)
- if !strings.HasPrefix(word, "-") {
- word = word + ":*"
+ if len(word) > 0 {
+ word = strings.TrimSpace(word)
+ word = strings.Replace(word, ":", "\\:", -1)
+ if !strings.HasPrefix(word, "-") {
+ word = word + ":*"
+ }
+ words = append(words, word)
}
- words = append(words, word)
}
s = strings.Join(words, " & ")
return s
M migrations/0006_update_auditlog_metadata.down.sql => migrations/0006_update_auditlog_metadata.down.sql +1 -1
@@ 1,3 1,3 @@
UPDATE audit_log SET metadata = metadata - 'org_slug' WHERE metadata ? 'org_slug';
UPDATE audit_log SET metadata = metadata - 'list_slug' WHERE metadata ? 'list_slug';
-DROP INDEX audit_log_metadata_gin;
+DROP INDEX IF EXISTS audit_log_metadata_gin;