/
common.go
97 lines (79 loc) · 2.45 KB
/
common.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
package common
import (
"database/sql"
"time"
"github.com/Bnei-Baruch/sqlboiler/boil"
log "github.com/Sirupsen/logrus"
_ "github.com/lib/pq"
"github.com/spf13/viper"
"github.com/Bnei-Baruch/archive-backend/api"
"github.com/Bnei-Baruch/archive-backend/cache"
"github.com/Bnei-Baruch/archive-backend/consts"
"github.com/Bnei-Baruch/archive-backend/es"
"github.com/Bnei-Baruch/archive-backend/mdb"
"github.com/Bnei-Baruch/archive-backend/search"
"github.com/Bnei-Baruch/archive-backend/utils"
)
var (
DB *sql.DB
ESC *search.ESManager
LOGGER *search.SearchLogger
CACHE cache.CacheManager
//GRAMMARS search.Grammars
VARIABLES search.VariablesV2
TOKENS_CACHE *search.TokensCache
CMS *api.CMSParams
)
func Init() time.Time {
return InitWithDefault(nil)
}
func InitWithDefault(defaultDb *sql.DB) time.Time {
var err error
clock := time.Now()
CMS = &api.CMSParams{
Assets: viper.GetString("cms.assets"),
Mode: viper.GetString("server.mode"),
}
log.SetFormatter(&log.TextFormatter{FullTimestamp: true})
//log.SetLevel(log.WarnLevel)
if defaultDb != nil {
DB = defaultDb
} else {
log.Info("Setting up connection to MDB")
DB, err = sql.Open("postgres", viper.GetString("mdb.url"))
utils.Must(err)
utils.Must(DB.Ping())
}
boil.SetDB(DB)
boil.DebugMode = viper.GetString("server.boiler-mode") == "debug"
log.Info("Initializing type registries")
utils.Must(mdb.InitTypeRegistries(DB))
log.Info("Setting up connection to ElasticSearch")
url := viper.GetString("elasticsearch.url")
ESC = search.MakeESManager(url)
LOGGER = search.MakeSearchLogger(ESC)
esc, err := ESC.GetClient()
if esc != nil && err == nil {
esversion, err := esc.ElasticsearchVersion(url)
utils.Must(err)
log.Infof("Elasticsearch version %s", esversion)
}
es.InitVars()
TOKENS_CACHE = search.MakeTokensCache(consts.TOKEN_CACHE_SIZE)
// Moving to Grammars V2 that are iindexed and searched.
VARIABLES, err = search.MakeVariablesV2(viper.GetString("elasticsearch.variables"))
//utils.Must(err)
//GRAMMARS, err = search.MakeGrammars(viper.GetString("elasticsearch.grammars"), esc, TOKENS_CACHE, VARIABLES)
//utils.Must(err)
viper.SetDefault("cache.refresh-search-stats", 5*time.Minute)
refreshIntervals := map[string]time.Duration{
"SearchStats": viper.GetDuration("cache.refresh-search-stats"),
}
CACHE = cache.NewCacheManagerImpl(DB, refreshIntervals)
return clock
}
func Shutdown() {
utils.Must(DB.Close())
ESC.Stop()
CACHE.Close()
}