package svc import ( "blockchain/internal/config" "blockchain/internal/domain/repository" "blockchain/internal/domain/usecase" repo "blockchain/internal/repository" uc "blockchain/internal/usecase" "github.com/zeromicro/go-zero/core/stores/redis" ) type ServiceContext struct { Config config.Config BinanceDataSource usecase.DataSourceUseCase BinanceRepo repository.DataSourceRepository } func NewServiceContext(c config.Config) *ServiceContext { newRedis, err := redis.NewRedis(c.RedisCluster) if err != nil { panic(err) } cassandra, err := NewDB(c) if err != nil { return nil } binanceRepo := repo.MustBinanceRepository(repo.BinanceRepositoryParam{ Conf: &c.Binance, Redis: newRedis, DB: cassandra, KeySpace: c.Cassandra.Keyspace, }) return &ServiceContext{ Config: c, BinanceRepo: binanceRepo, BinanceDataSource: uc.MustBinanceUseCase(uc.BinanceUseCaseParam{ BinanceRepo: binanceRepo, }), } }