2024-12-30 15:09:02 +08:00
|
|
|
package upp
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"sync"
|
|
|
|
|
|
|
|
"github.com/elastic/go-elasticsearch/v7"
|
|
|
|
"github.com/loveuer/upp/pkg/api"
|
|
|
|
"github.com/loveuer/upp/pkg/cache"
|
|
|
|
"github.com/loveuer/upp/pkg/interfaces"
|
2025-01-01 21:01:05 -08:00
|
|
|
"github.com/loveuer/upp/pkg/log"
|
2024-12-30 15:09:02 +08:00
|
|
|
"gorm.io/gorm"
|
|
|
|
)
|
|
|
|
|
2025-01-02 22:44:20 +08:00
|
|
|
const Banner = `
|
|
|
|
__ __
|
|
|
|
/ / / /__ ___
|
|
|
|
/ /_/ / _ \/ _ \
|
|
|
|
\____/ .__/ .__/
|
|
|
|
/_/ /_/
|
|
|
|
|
|
|
|
`
|
|
|
|
|
2024-12-30 15:09:02 +08:00
|
|
|
type uppApi struct {
|
|
|
|
engine *api.App
|
|
|
|
config ApiConfig
|
|
|
|
}
|
|
|
|
|
|
|
|
type upp struct {
|
|
|
|
debug bool
|
|
|
|
ctx context.Context
|
|
|
|
logger *sync.Pool
|
|
|
|
db *gorm.DB
|
|
|
|
cache cache.Cache
|
|
|
|
es *elasticsearch.Client
|
|
|
|
api *uppApi
|
2025-01-02 22:44:20 +08:00
|
|
|
initFns struct {
|
|
|
|
_sync []func(interfaces.Upp)
|
|
|
|
_async []func(interfaces.Upp)
|
|
|
|
}
|
|
|
|
taskCh []<-chan func(interfaces.Upp) error
|
2024-12-30 15:09:02 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
func (u *upp) With(modules ...module) {
|
|
|
|
for _, m := range modules {
|
|
|
|
m(u)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2025-01-01 21:01:05 -08:00
|
|
|
func New(configs ...Config) *upp {
|
|
|
|
config := Config{}
|
2024-12-30 15:09:02 +08:00
|
|
|
|
2025-01-01 21:01:05 -08:00
|
|
|
if len(configs) > 0 {
|
|
|
|
config = configs[0]
|
2024-12-30 15:09:02 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
app := &upp{
|
|
|
|
logger: upp_logger_pool,
|
2025-01-02 22:44:20 +08:00
|
|
|
initFns: struct {
|
|
|
|
_sync []func(interfaces.Upp)
|
|
|
|
_async []func(interfaces.Upp)
|
|
|
|
}{
|
|
|
|
_sync: make([]func(interfaces.Upp), 0),
|
|
|
|
_async: make([]func(interfaces.Upp), 0),
|
|
|
|
},
|
2025-01-01 22:14:45 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
if config.Debug || env.Debug {
|
|
|
|
log.SetLogLevel(log.LogLevelDebug)
|
|
|
|
app.debug = true
|
2024-12-30 15:09:02 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
return app
|
|
|
|
}
|