Fix randquote for terms with _ or %
This commit is contained in:
@@ -41,7 +41,7 @@ var (
|
|||||||
findQuoteById = `SELECT ` + quoteCols + ` FROM quotes WHERE id = ? LIMIT 1`
|
findQuoteById = `SELECT ` + quoteCols + ` FROM quotes WHERE id = ? LIMIT 1`
|
||||||
findQuoteByQuoteId = `SELECT ` + quoteCols + ` FROM quotes WHERE quote_id = ? AND channel = ? LIMIT 1`
|
findQuoteByQuoteId = `SELECT ` + quoteCols + ` FROM quotes WHERE quote_id = ? AND channel = ? LIMIT 1`
|
||||||
findLastQuote = `SELECT ` + quoteCols + ` FROM quotes WHERE channel = ? ORDER BY quote_id DESC LIMIT 1`
|
findLastQuote = `SELECT ` + quoteCols + ` FROM quotes WHERE channel = ? ORDER BY quote_id DESC LIMIT 1`
|
||||||
findQuotesByTerm = `SELECT ` + quoteCols + ` FROM quotes WHERE channel = ? AND data LIKE ? ORDER BY quote_id DESC`
|
findQuotesByTerm = `SELECT ` + quoteCols + ` FROM quotes WHERE channel = ? AND data LIKE ? ESCAPE '\' ORDER BY quote_id DESC`
|
||||||
findRandomQuote = `SELECT ` + quoteCols + ` FROM quotes WHERE deleted_at IS NULL AND channel = ? ORDER BY RANDOM() LIMIT 1`
|
findRandomQuote = `SELECT ` + quoteCols + ` FROM quotes WHERE deleted_at IS NULL AND channel = ? ORDER BY RANDOM() LIMIT 1`
|
||||||
|
|
||||||
insertQuote = `
|
insertQuote = `
|
||||||
|
@@ -5,6 +5,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
_ "github.com/mattn/go-sqlite3"
|
_ "github.com/mattn/go-sqlite3"
|
||||||
"log"
|
"log"
|
||||||
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -85,8 +86,16 @@ func (q *QuoteDB) FindLastQuote(channel string) (*Quote, error) {
|
|||||||
return quote, err
|
return quote, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func escapeLike(text string) string {
|
||||||
|
text = strings.ReplaceAll(text, `\`, ``)
|
||||||
|
text = strings.ReplaceAll(text, `%`, `\%`)
|
||||||
|
text = strings.ReplaceAll(text, `_`, `\_`)
|
||||||
|
|
||||||
|
return text
|
||||||
|
}
|
||||||
|
|
||||||
func (q QuoteDB) FindQuotesByString(search string, channel string) ([]*Quote, error) {
|
func (q QuoteDB) FindQuotesByString(search string, channel string) ([]*Quote, error) {
|
||||||
term := fmt.Sprintf("%%%s%%", search)
|
term := fmt.Sprintf("%%%s%%", escapeLike(search))
|
||||||
|
|
||||||
rows, err := q.DB.Query(findQuotesByTerm, channel, term)
|
rows, err := q.DB.Query(findQuotesByTerm, channel, term)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user