sync search

This commit is contained in:
Nazar Kanaev 2020-08-05 11:24:06 +01:00
parent d528fcaaae
commit 821d512f0a

View File

@ -46,6 +46,20 @@ func (h Handler) ServeHTTP(rw http.ResponseWriter, req *http.Request) {
func (h *Handler) startJobs() { func (h *Handler) startJobs() {
delTicker := time.NewTicker(time.Hour * 24) delTicker := time.NewTicker(time.Hour * 24)
syncSearchChannel := make(chan bool, 10)
var syncSearchTimer *time.Timer // TODO: should this be atomic?
syncSearch := func() {
if syncSearchTimer == nil {
syncSearchTimer = time.AfterFunc(time.Second * 2, func() {
syncSearchChannel <- true
})
} else {
syncSearchTimer.Reset(time.Second * 2)
}
}
worker := func() { worker := func() {
for { for {
select { select {
@ -53,6 +67,7 @@ func (h *Handler) startJobs() {
items := listItems(feed) items := listItems(feed)
h.db.CreateItems(items) h.db.CreateItems(items)
atomic.AddInt32(h.queueSize, -1) atomic.AddInt32(h.queueSize, -1)
syncSearch()
if !feed.HasIcon { if !feed.HasIcon {
icon, err := findFavicon(feed.Link, feed.FeedLink) icon, err := findFavicon(feed.Link, feed.FeedLink)
if icon != nil { if icon != nil {
@ -64,6 +79,8 @@ func (h *Handler) startJobs() {
} }
case <- delTicker.C: case <- delTicker.C:
h.db.DeleteOldItems() h.db.DeleteOldItems()
case <- syncSearchChannel:
h.db.SyncSearch()
} }
} }
} }