diff options
| author | Adam Mathes <adam@trenchant.org> | 2018-06-16 09:55:36 -0700 | 
|---|---|---|
| committer | Adam Mathes <adam@trenchant.org> | 2018-06-16 09:55:36 -0700 | 
| commit | 16df68a5118801472909f63fc48caf16e548060c (patch) | |
| tree | 172e238508523db305176c4c2628d72fecc4e90c /models | |
| parent | db331cc3382e782ba98fec33d617917fa930f3cc (diff) | |
| download | neko-16df68a5118801472909f63fc48caf16e548060c.tar.gz neko-16df68a5118801472909f63fc48caf16e548060c.tar.bz2 neko-16df68a5118801472909f63fc48caf16e548060c.zip | |
add back in search support, requires sqlite
Diffstat (limited to 'models')
| -rw-r--r-- | models/item/item.go | 17 | 
1 files changed, 13 insertions, 4 deletions
| diff --git a/models/item/item.go b/models/item/item.go index dd8b52c..badd566 100644 --- a/models/item/item.go +++ b/models/item/item.go @@ -82,7 +82,7 @@ func filterPolicy() *bluemonday.Policy {  }  func ItemById(id int64) *Item { -	items, _ := Filter(0, 0, "", false, false, id) +	items, _ := Filter(0, 0, "", false, false, id, "")  	return items[0]  } @@ -122,17 +122,21 @@ func (i *Item) GetFullContent() {  	}  } -func Filter(max_id int64, feed_id int64, category string, unread_only bool, starred_only bool, item_id int64) ([]*Item, error) { +func Filter(max_id int64, feed_id int64, category string, unread_only bool, starred_only bool, item_id int64, search_query string) ([]*Item, error) {  	var args []interface{} +	tables := " feed,item" +	if search_query != "" { +		tables = tables + ",fts_item" +	}  	query := `SELECT item.id, item.feed_id, item.title,                        item.url, item.description,                        item.read_state, item.starred, item.publish_date,                       item.full_content, item.header_image,                       feed.url, feed.title, feed.category -              FROM feed,item -              WHERE item.feed_id=feed.id AND item.id!=0 ` +              FROM ` +	query = query + tables + ` WHERE item.feed_id=feed.id AND item.id!=0 `  	if max_id != 0 {  		query = query + "AND item.id < ? " @@ -158,6 +162,11 @@ func Filter(max_id int64, feed_id int64, category string, unread_only bool, star  		args = append(args, item_id)  	} +	if search_query != "" { +		query = query + " AND fts_item match ? AND fts_item.rowid=item.id " +		args = append(args, search_query) +	} +  	// this is kind of dumb, but to keep the logic the same  	// we kludge it this way for a "by id" select  	if starred_only { | 
