103 lines
1.7 KiB
Go
103 lines
1.7 KiB
Go
package upp
|
|
|
|
import (
|
|
"context"
|
|
"crypto/tls"
|
|
"log"
|
|
|
|
"github.com/loveuer/upp/pkg/api"
|
|
"github.com/loveuer/upp/pkg/cache"
|
|
"github.com/loveuer/upp/pkg/db"
|
|
"github.com/loveuer/upp/pkg/es"
|
|
"github.com/loveuer/upp/pkg/interfaces"
|
|
)
|
|
|
|
type module func(u *upp)
|
|
|
|
func InitDB(uri string, models ...any) module {
|
|
db, err := db.New(uri)
|
|
if err != nil {
|
|
log.Panic(err.Error())
|
|
}
|
|
|
|
if err = db.AutoMigrate(models...); err != nil {
|
|
log.Panic(err.Error())
|
|
}
|
|
|
|
return func(u *upp) {
|
|
u.db = db
|
|
}
|
|
}
|
|
|
|
func InitCache(uri string) module {
|
|
cache, err := cache.New(uri)
|
|
if err != nil {
|
|
log.Panic(err.Error())
|
|
}
|
|
|
|
return func(u *upp) {
|
|
u.cache = cache
|
|
}
|
|
}
|
|
|
|
func InitES(uri string) module {
|
|
client, err := es.New(context.TODO(), uri)
|
|
if err != nil {
|
|
log.Panic(err.Error())
|
|
}
|
|
|
|
return func(u *upp) {
|
|
u.es = client
|
|
}
|
|
}
|
|
|
|
type ApiConfig struct {
|
|
Address string
|
|
TLSConfig *tls.Config
|
|
}
|
|
|
|
func InitApi(api *api.App, cfgs ...ApiConfig) module {
|
|
cfg := ApiConfig{}
|
|
if len(cfgs) > 0 {
|
|
cfg = cfgs[0]
|
|
}
|
|
|
|
if cfg.Address == "" {
|
|
cfg.Address = "localhost:8080"
|
|
}
|
|
|
|
return func(u *upp) {
|
|
api.Upp = u
|
|
u.api = &uppApi{
|
|
engine: api,
|
|
config: cfg,
|
|
}
|
|
}
|
|
}
|
|
|
|
func InitTaskChan(ch <-chan func(upp interfaces.Upp) error) module {
|
|
return func(u *upp) {
|
|
if u.taskCh == nil {
|
|
u.taskCh = make([]<-chan func(u interfaces.Upp) error, 0)
|
|
}
|
|
|
|
u.taskCh = append(u.taskCh, ch)
|
|
}
|
|
}
|
|
|
|
// sync functions
|
|
// 添加 同步执行函数
|
|
func InitFn(fns ...func(interfaces.Upp)) module {
|
|
return func(u *upp) {
|
|
u.initFns._sync = append(u.initFns._sync, fns...)
|
|
}
|
|
}
|
|
|
|
// async functions
|
|
// 添加 异步执行函数
|
|
func InitAsyncFn(fns ...func(interfaces.Upp)) module {
|
|
return func(u *upp) {
|
|
u.initFns._async = append(u.initFns._async, fns...)
|
|
}
|
|
}
|