package pairec

import (
	"gitlab.alibaba-inc.com/pai_biz_arch/pairec/filter"
	"gitlab.alibaba-inc.com/pai_biz_arch/pairec/recconf"
	"gitlab.alibaba-inc.com/pai_biz_arch/pairec/service/recall"
	"gitlab.alibaba-inc.com/pai_biz_arch/pairec/sort"
)

func register(conf *recconf.RecommendConfig) {
	registerDao(conf)
	registerRecall(conf)
	registerFilter(conf)
	registerSort(conf)
	// registerUserRecommendCleanHook()
}

func registerFilter(conf *recconf.RecommendConfig) {
	filter.RegisterFilterWithConfig(conf)
	filter.RegisterFilter("UniqueFilter", filter.NewUniqueFilter())
}

func registerSort(conf *recconf.RecommendConfig) {
	for _, conf_ := range conf.DPPConf {
		sort.RegisterSort(conf_.Name, sort.NewDPPSort(conf_))
	}
}

func registerDao(conf *recconf.RecommendConfig) {
	/**
	if conf.UserDaoConf.AdapterType == recconf.DaoConf_Adapter_Redis {
		module.RegisterUserDao("UserRedisDao", module.NewUserRedisDao())
	}

	if conf.ItemDaoConf.AdapterType == recconf.DaoConf_Adapter_Redis {
		module.RegisterItemDao("ItemRedisDao", module.NewItemRedisDao())
		// module.RegisterItemDao("ItemRedisV3Dao", module.NewItemRedisV3Dao())
	}
	module.RegisterUserDao("UserMockDao", module.NewUserMockDao())
	module.RegisterItemDao("ItemMockDao", module.NewItemMockDao())
	**/
}

func registerRecall(conf *recconf.RecommendConfig) {
	recall.Load(conf)
}
