package dao import ( "github.com/rocboss/paopao-ce/internal/conf" "github.com/rocboss/paopao-ce/internal/core" "github.com/sirupsen/logrus" "gorm.io/gorm" ) var ( _ core.DataService = (*dataServant)(nil) _ core.AttachmentCheckService = (*attachmentCheckServant)(nil) _ core.AuthorizationManageService = (*simpleAuthorizationManageService)(nil) ) type dataServant struct { core.CacheIndexService ams core.AuthorizationManageService engine *gorm.DB } type simpleAuthorizationManageService struct { db *gorm.DB } type attachmentCheckServant struct { domain string } func NewDataService() core.DataService { ds := &dataServant{ engine: conf.DBEngine, ams: NewAuthorizationManageService(), } // initialize CacheIndex if needed if conf.CfgIf("SimpleCacheIndex") { ds.CacheIndexService = newSimpleCacheIndexServant(ds.simpleCacheIndexGetPosts) } else if conf.CfgIf("BigCacheIndex") { ds.CacheIndexService = newBigCacheIndexServant(ds.getIndexPosts) } else { ds.CacheIndexService = newNoneCacheIndexServant(ds.getIndexPosts) } logrus.Infof("use %s as cache index service by version: %s", ds.CacheIndexService.Name(), ds.CacheIndexService.Version()) return ds } func NewAuthorizationManageService() core.AuthorizationManageService { return newSimpleAuthorizationManageService() } func NewAttachmentCheckService() core.AttachmentCheckService { return &attachmentCheckServant{ domain: getOssDomain(), } }