mirror of
https://github.com/c9s/bbgo.git
synced 2024-11-25 16:25:16 +00:00
resolve cyclic imports
This commit is contained in:
parent
6845db6dd3
commit
fa4e813729
|
@ -14,6 +14,7 @@ import (
|
||||||
|
|
||||||
"github.com/c9s/bbgo/pkg/datatype"
|
"github.com/c9s/bbgo/pkg/datatype"
|
||||||
"github.com/c9s/bbgo/pkg/fixedpoint"
|
"github.com/c9s/bbgo/pkg/fixedpoint"
|
||||||
|
"github.com/c9s/bbgo/pkg/service"
|
||||||
"github.com/c9s/bbgo/pkg/types"
|
"github.com/c9s/bbgo/pkg/types"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -133,20 +134,9 @@ func (m BacktestAccountBalanceMap) BalanceMap() types.BalanceMap {
|
||||||
return balances
|
return balances
|
||||||
}
|
}
|
||||||
|
|
||||||
type RedisPersistenceConfig struct {
|
|
||||||
Host string `json:"host" env:"REDIS_HOST"`
|
|
||||||
Port string `json:"port" env:"REDIS_PORT"`
|
|
||||||
Password string `json:"password" env:"REDIS_PASSWORD"`
|
|
||||||
DB int `json:"db" env:"REDIS_DB"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type JsonPersistenceConfig struct {
|
|
||||||
Directory string `json:"directory"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type PersistenceConfig struct {
|
type PersistenceConfig struct {
|
||||||
Redis *RedisPersistenceConfig `json:"redis,omitempty" yaml:"redis,omitempty"`
|
Redis *service.RedisPersistenceConfig `json:"redis,omitempty" yaml:"redis,omitempty"`
|
||||||
Json *JsonPersistenceConfig `json:"json,omitempty" yaml:"json,omitempty"`
|
Json *service.JsonPersistenceConfig `json:"json,omitempty" yaml:"json,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type BuildTargetConfig struct {
|
type BuildTargetConfig struct {
|
||||||
|
|
|
@ -21,7 +21,7 @@ type Persistence struct {
|
||||||
Facade *service.PersistenceServiceFacade `json:"-" yaml:"-"`
|
Facade *service.PersistenceServiceFacade `json:"-" yaml:"-"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Persistence) backendService(t string) (service PersistenceService, err error) {
|
func (p *Persistence) backendService(t string) (service service.PersistenceService, err error) {
|
||||||
switch t {
|
switch t {
|
||||||
case "json":
|
case "json":
|
||||||
service = p.Facade.Json
|
service = p.Facade.Json
|
||||||
|
@ -67,13 +67,3 @@ func (p *Persistence) Save(val interface{}, subIDs ...string) error {
|
||||||
return store.Save(val)
|
return store.Save(val)
|
||||||
}
|
}
|
||||||
|
|
||||||
type PersistenceService interface {
|
|
||||||
NewStore(id string, subIDs ...string) Store
|
|
||||||
}
|
|
||||||
|
|
||||||
type Store interface {
|
|
||||||
Load(val interface{}) error
|
|
||||||
Save(val interface{}) error
|
|
||||||
Reset() error
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
|
@ -88,7 +88,7 @@ func runSetup(baseCtx context.Context, userConfig *bbgo.Config, enableApiServer
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func newNotificationSystem(userConfig *bbgo.Config, persistence bbgo.PersistenceService) (*bbgo.Notifiability, error) {
|
func newNotificationSystem(userConfig *bbgo.Config, persistence service.PersistenceService) (*bbgo.Notifiability, error) {
|
||||||
notification := &bbgo.Notifiability{
|
notification := &bbgo.Notifiability{
|
||||||
SymbolChannelRouter: bbgo.NewPatternChannelRouter(nil),
|
SymbolChannelRouter: bbgo.NewPatternChannelRouter(nil),
|
||||||
SessionChannelRouter: bbgo.NewPatternChannelRouter(nil),
|
SessionChannelRouter: bbgo.NewPatternChannelRouter(nil),
|
||||||
|
@ -180,7 +180,7 @@ func BootstrapEnvironment(ctx context.Context, environ *bbgo.Environment, userCo
|
||||||
}
|
}
|
||||||
|
|
||||||
// configure persistence service, by default we will use memory service
|
// configure persistence service, by default we will use memory service
|
||||||
var persistence bbgo.PersistenceService = service.NewMemoryService()
|
var persistence service.PersistenceService = service.NewMemoryService()
|
||||||
if environ.PersistenceServiceFacade != nil {
|
if environ.PersistenceServiceFacade != nil {
|
||||||
if environ.PersistenceServiceFacade.Redis != nil {
|
if environ.PersistenceServiceFacade.Redis != nil {
|
||||||
persistence = environ.PersistenceServiceFacade.Redis
|
persistence = environ.PersistenceServiceFacade.Redis
|
||||||
|
|
|
@ -8,7 +8,7 @@ import (
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
"gopkg.in/tucnak/telebot.v2"
|
"gopkg.in/tucnak/telebot.v2"
|
||||||
|
|
||||||
"github.com/c9s/bbgo/pkg/bbgo"
|
"github.com/c9s/bbgo/pkg/service"
|
||||||
)
|
)
|
||||||
|
|
||||||
var log = logrus.WithField("service", "telegram")
|
var log = logrus.WithField("service", "telegram")
|
||||||
|
@ -27,7 +27,7 @@ func NewSession(key *otp.Key) Session {
|
||||||
|
|
||||||
//go:generate callbackgen -type Interaction
|
//go:generate callbackgen -type Interaction
|
||||||
type Interaction struct {
|
type Interaction struct {
|
||||||
store bbgo.Store
|
store service.Store
|
||||||
|
|
||||||
bot *telebot.Bot
|
bot *telebot.Bot
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ type Interaction struct {
|
||||||
AuthCallbacks []func(user *telebot.User)
|
AuthCallbacks []func(user *telebot.User)
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewInteraction(bot *telebot.Bot, store bbgo.Store) *Interaction {
|
func NewInteraction(bot *telebot.Bot, store service.Store) *Interaction {
|
||||||
interaction := &Interaction{
|
interaction := &Interaction{
|
||||||
store: store,
|
store: store,
|
||||||
bot: bot,
|
bot: bot,
|
||||||
|
|
|
@ -3,8 +3,6 @@ package service
|
||||||
import (
|
import (
|
||||||
"reflect"
|
"reflect"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/c9s/bbgo/pkg/bbgo"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type MemoryService struct {
|
type MemoryService struct {
|
||||||
|
@ -17,7 +15,7 @@ func NewMemoryService() *MemoryService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *MemoryService) NewStore(id string, subIDs ...string) bbgo.Store {
|
func (s *MemoryService) NewStore(id string, subIDs ...string) Store {
|
||||||
key := strings.Join(append([]string{id}, subIDs...), ":")
|
key := strings.Join(append([]string{id}, subIDs...), ":")
|
||||||
return &MemoryStore{
|
return &MemoryStore{
|
||||||
Key: key,
|
Key: key,
|
||||||
|
|
23
pkg/service/persistence.go
Normal file
23
pkg/service/persistence.go
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
package service
|
||||||
|
|
||||||
|
type PersistenceService interface {
|
||||||
|
NewStore(id string, subIDs ...string) Store
|
||||||
|
}
|
||||||
|
|
||||||
|
type Store interface {
|
||||||
|
Load(val interface{}) error
|
||||||
|
Save(val interface{}) error
|
||||||
|
Reset() error
|
||||||
|
}
|
||||||
|
|
||||||
|
type RedisPersistenceConfig struct {
|
||||||
|
Host string `json:"host" env:"REDIS_HOST"`
|
||||||
|
Port string `json:"port" env:"REDIS_PORT"`
|
||||||
|
Password string `json:"password" env:"REDIS_PASSWORD"`
|
||||||
|
DB int `json:"db" env:"REDIS_DB"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type JsonPersistenceConfig struct {
|
||||||
|
Directory string `json:"directory"`
|
||||||
|
}
|
||||||
|
|
|
@ -5,15 +5,13 @@ import (
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
|
||||||
"github.com/c9s/bbgo/pkg/bbgo"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type JsonPersistenceService struct {
|
type JsonPersistenceService struct {
|
||||||
Directory string
|
Directory string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *JsonPersistenceService) NewStore(id string, subIDs ...string) bbgo.Store {
|
func (s *JsonPersistenceService) NewStore(id string, subIDs ...string) Store {
|
||||||
return &JsonStore{
|
return &JsonStore{
|
||||||
ID: id,
|
ID: id,
|
||||||
Directory: filepath.Join(append([]string{s.Directory}, subIDs...)...),
|
Directory: filepath.Join(append([]string{s.Directory}, subIDs...)...),
|
||||||
|
|
|
@ -7,15 +7,13 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/go-redis/redis/v8"
|
"github.com/go-redis/redis/v8"
|
||||||
|
|
||||||
"github.com/c9s/bbgo/pkg/bbgo"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type RedisPersistenceService struct {
|
type RedisPersistenceService struct {
|
||||||
redis *redis.Client
|
redis *redis.Client
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewRedisPersistenceService(config *bbgo.RedisPersistenceConfig) *RedisPersistenceService {
|
func NewRedisPersistenceService(config *RedisPersistenceConfig) *RedisPersistenceService {
|
||||||
client := redis.NewClient(&redis.Options{
|
client := redis.NewClient(&redis.Options{
|
||||||
Addr: net.JoinHostPort(config.Host, config.Port),
|
Addr: net.JoinHostPort(config.Host, config.Port),
|
||||||
// Username: "", // username is only for redis 6.0
|
// Username: "", // username is only for redis 6.0
|
||||||
|
@ -28,7 +26,7 @@ func NewRedisPersistenceService(config *bbgo.RedisPersistenceConfig) *RedisPersi
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *RedisPersistenceService) NewStore(id string, subIDs ...string) bbgo.Store {
|
func (s *RedisPersistenceService) NewStore(id string, subIDs ...string) Store {
|
||||||
if len(subIDs) > 0 {
|
if len(subIDs) > 0 {
|
||||||
id += ":" + strings.Join(subIDs, ":")
|
id += ":" + strings.Join(subIDs, ":")
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,12 +5,11 @@ import (
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
|
|
||||||
"github.com/c9s/bbgo/pkg/bbgo"
|
|
||||||
"github.com/c9s/bbgo/pkg/fixedpoint"
|
"github.com/c9s/bbgo/pkg/fixedpoint"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestRedisPersistentService(t *testing.T) {
|
func TestRedisPersistentService(t *testing.T) {
|
||||||
redisService := NewRedisPersistenceService(&bbgo.RedisPersistenceConfig{
|
redisService := NewRedisPersistenceService(&RedisPersistenceConfig{
|
||||||
Host: "127.0.0.1",
|
Host: "127.0.0.1",
|
||||||
Port: "6379",
|
Port: "6379",
|
||||||
DB: 0,
|
DB: 0,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user