text search query
This commit is contained in:
@@ -135,6 +135,8 @@ type (
|
||||
}
|
||||
|
||||
selectQry struct {
|
||||
textSearch *textSearchCTE
|
||||
|
||||
table string
|
||||
fields []Field
|
||||
args []any
|
||||
@@ -313,6 +315,12 @@ func (q *selectQry) Build(needArgs bool) (qry string, args []any) {
|
||||
|
||||
sb.Grow(q.averageLen())
|
||||
|
||||
if q.textSearch != nil {
|
||||
var ts = q.textSearch
|
||||
q.args = slices.Insert(q.args, 0, any(ts.value))
|
||||
sb.WriteString("WITH " + ts.name + " AS (SELECT to_tsquery('english', $1) AS " + ts.alias + ") ")
|
||||
}
|
||||
|
||||
// SELECT
|
||||
sb.WriteString("SELECT ")
|
||||
sb.WriteString(joinFileds(q.fields))
|
||||
@@ -323,6 +331,11 @@ func (q *selectQry) Build(needArgs bool) (qry string, args []any) {
|
||||
sb.WriteString(" " + strings.Join(q.join, " "))
|
||||
}
|
||||
|
||||
// Search Query Cross join
|
||||
if q.textSearch != nil {
|
||||
sb.WriteString(" CROSS JOIN " + q.textSearch.name)
|
||||
}
|
||||
|
||||
// WHERE
|
||||
if len(q.where) > 0 {
|
||||
sb.WriteString(" WHERE ")
|
||||
|
||||
Reference in New Issue
Block a user