1package feeder
2
3type databaseHandler struct {
4	db          *database
5	itemhandler ItemHandler
6	chanhandler ChannelHandler
7}
8
9func (d *databaseHandler) ProcessItems(f *Feed, ch *Channel, items []*Item) {
10	var newitems []*Item
11	for _, item := range items {
12		if d.db.request <- item.Key(); !<-d.db.response {
13			newitems = append(newitems, item)
14		}
15	}
16	if len(newitems) > 0 && d.itemhandler != nil {
17		d.itemhandler.ProcessItems(f, ch, newitems)
18	}
19}
20
21func (d *databaseHandler) ProcessChannels(f *Feed, ch []*Channel) {
22	var newchannels []*Channel
23	for _, channel := range ch {
24		if d.db.request <- channel.Key(); !<-d.db.response {
25			newchannels = append(newchannels, channel)
26		}
27	}
28	if len(newchannels) > 0 && d.chanhandler != nil {
29		d.chanhandler.ProcessChannels(f, newchannels)
30	}
31}
32
33func NewDatabaseItemHandler(db *database, itemhandler ItemHandler) ItemHandler {
34	database := new(databaseHandler)
35	database.db = db
36	database.itemhandler = itemhandler
37	return database
38}
39
40func NewDatabaseChannelHandler(db *database, chanhandler ChannelHandler) ChannelHandler {
41	database := new(databaseHandler)
42	database.db = db
43	database.chanhandler = chanhandler
44	return database
45}
46