code.vegaprotocol.io/vega@v0.79.0/cmd/data-node/commands/start/sqlsubscribers.go (about)

     1  // Copyright (C) 2023 Gobalsky Labs Limited
     2  //
     3  // This program is free software: you can redistribute it and/or modify
     4  // it under the terms of the GNU Affero General Public License as
     5  // published by the Free Software Foundation, either version 3 of the
     6  // License, or (at your option) any later version.
     7  //
     8  // This program is distributed in the hope that it will be useful,
     9  // but WITHOUT ANY WARRANTY; without even the implied warranty of
    10  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    11  // GNU Affero General Public License for more details.
    12  //
    13  // You should have received a copy of the GNU Affero General Public License
    14  // along with this program.  If not, see <http://www.gnu.org/licenses/>.
    15  
    16  package start
    17  
    18  import (
    19  	"context"
    20  
    21  	"code.vegaprotocol.io/vega/datanode/broker"
    22  	"code.vegaprotocol.io/vega/datanode/candlesv2"
    23  	"code.vegaprotocol.io/vega/datanode/service"
    24  	"code.vegaprotocol.io/vega/datanode/sqlstore"
    25  	"code.vegaprotocol.io/vega/datanode/sqlsubscribers"
    26  	"code.vegaprotocol.io/vega/logging"
    27  )
    28  
    29  type SQLSubscribers struct {
    30  	// Stores
    31  	assetStore                        *sqlstore.Assets
    32  	blockStore                        *sqlstore.Blocks
    33  	accountStore                      *sqlstore.Accounts
    34  	balanceStore                      *sqlstore.Balances
    35  	ledger                            *sqlstore.Ledger
    36  	partyStore                        *sqlstore.Parties
    37  	orderStore                        *sqlstore.Orders
    38  	tradeStore                        *sqlstore.Trades
    39  	networkLimitsStore                *sqlstore.NetworkLimits
    40  	marketDataStore                   *sqlstore.MarketData
    41  	rewardStore                       *sqlstore.Rewards
    42  	delegationStore                   *sqlstore.Delegations
    43  	marketsStore                      *sqlstore.Markets
    44  	epochStore                        *sqlstore.Epochs
    45  	depositStore                      *sqlstore.Deposits
    46  	withdrawalsStore                  *sqlstore.Withdrawals
    47  	proposalStore                     *sqlstore.Proposals
    48  	voteStore                         *sqlstore.Votes
    49  	marginLevelsStore                 *sqlstore.MarginLevels
    50  	riskFactorStore                   *sqlstore.RiskFactors
    51  	netParamStore                     *sqlstore.NetworkParameters
    52  	checkpointStore                   *sqlstore.Checkpoints
    53  	oracleSpecStore                   *sqlstore.OracleSpec
    54  	oracleDataStore                   *sqlstore.OracleData
    55  	liquidityProvisionStore           *sqlstore.LiquidityProvision
    56  	positionStore                     *sqlstore.Positions
    57  	transfersStore                    *sqlstore.Transfers
    58  	stakeLinkingStore                 *sqlstore.StakeLinking
    59  	notaryStore                       *sqlstore.Notary
    60  	multiSigSignerAddedStore          *sqlstore.ERC20MultiSigSignerEvent
    61  	keyRotationsStore                 *sqlstore.KeyRotations
    62  	ethereumKeyRotationsStore         *sqlstore.EthereumKeyRotations
    63  	nodeStore                         *sqlstore.Node
    64  	candleStore                       *sqlstore.Candles
    65  	chainStore                        *sqlstore.Chain
    66  	pupStore                          *sqlstore.ProtocolUpgradeProposals
    67  	snapStore                         *sqlstore.CoreSnapshotData
    68  	stopOrderStore                    *sqlstore.StopOrders
    69  	fundingPeriodStore                *sqlstore.FundingPeriods
    70  	partyActivityStreakStore          *sqlstore.PartyActivityStreaks
    71  	referralProgramStore              *sqlstore.ReferralPrograms
    72  	referralSetsStore                 *sqlstore.ReferralSets
    73  	teamsStore                        *sqlstore.Teams
    74  	vestingStatsStore                 *sqlstore.VestingStats
    75  	feesStatsStore                    *sqlstore.FeesStats
    76  	fundingPaymentStore               *sqlstore.FundingPayments
    77  	volumeDiscountStatsStore          *sqlstore.VolumeDiscountStats
    78  	volumeDiscountProgramsStore       *sqlstore.VolumeDiscountPrograms
    79  	paidLiquidityFeesStatsStore       *sqlstore.PaidLiquidityFeesStats
    80  	partyLockedBalancesStore          *sqlstore.PartyLockedBalance
    81  	partyVestingBalancesStore         *sqlstore.PartyVestingBalance
    82  	gamesStore                        *sqlstore.Games
    83  	marginModesStore                  *sqlstore.MarginModes
    84  	timeWeightedNotionalPositionStore *sqlstore.TimeWeightedNotionalPosition
    85  	gameScoreStore                    *sqlstore.GameScores
    86  	ammPoolsStore                     *sqlstore.AMMPools
    87  	volumeRebateStatsStore            *sqlstore.VolumeRebateStats
    88  	volumeRebateProgramsStore         *sqlstore.VolumeRebatePrograms
    89  
    90  	// Services
    91  	candleService                       *candlesv2.Svc
    92  	marketDepthService                  *service.MarketDepth
    93  	riskService                         *service.Risk
    94  	marketDataService                   *service.MarketData
    95  	positionService                     *service.Position
    96  	tradeService                        *service.Trade
    97  	ledgerService                       *service.Ledger
    98  	rewardService                       *service.Reward
    99  	delegationService                   *service.Delegation
   100  	assetService                        *service.Asset
   101  	blockService                        *service.Block
   102  	partyService                        *service.Party
   103  	accountService                      *service.Account
   104  	orderService                        *service.Order
   105  	networkLimitsService                *service.NetworkLimits
   106  	marketsService                      *service.Markets
   107  	epochService                        *service.Epoch
   108  	depositService                      *service.Deposit
   109  	withdrawalService                   *service.Withdrawal
   110  	governanceService                   *service.Governance
   111  	riskFactorService                   *service.RiskFactor
   112  	networkParameterService             *service.NetworkParameter
   113  	checkpointService                   *service.Checkpoint
   114  	oracleSpecService                   *service.OracleSpec
   115  	oracleDataService                   *service.OracleData
   116  	liquidityProvisionService           *service.LiquidityProvision
   117  	transferService                     *service.Transfer
   118  	stakeLinkingService                 *service.StakeLinking
   119  	notaryService                       *service.Notary
   120  	multiSigService                     *service.MultiSig
   121  	keyRotationsService                 *service.KeyRotations
   122  	ethereumKeyRotationsService         *service.EthereumKeyRotation
   123  	nodeService                         *service.Node
   124  	chainService                        *service.Chain
   125  	protocolUpgradeService              *service.ProtocolUpgrade
   126  	coreSnapshotService                 *service.SnapshotData
   127  	stopOrderService                    *service.StopOrders
   128  	fundingPeriodService                *service.FundingPeriods
   129  	partyActivityStreakService          *service.PartyActivityStreak
   130  	referralProgramService              *service.ReferralPrograms
   131  	referralSetsService                 *service.ReferralSets
   132  	teamsService                        *service.Teams
   133  	vestingStatsService                 *service.VestingStats
   134  	feesStatsService                    *service.FeesStats
   135  	fundingPaymentService               *service.FundingPayment
   136  	volumeDiscountStatsService          *service.VolumeDiscountStats
   137  	volumeDiscountProgramService        *service.VolumeDiscountPrograms
   138  	paidLiquidityFeesStatsService       *service.PaidLiquidityFeesStats
   139  	partyLockedBalancesService          *service.PartyLockedBalances
   140  	partyVestingBalancesService         *service.PartyVestingBalances
   141  	transactionResultsService           *service.TransactionResults
   142  	gamesService                        *service.Games
   143  	marginModesService                  *service.MarginModes
   144  	timeWeightedNotionalPositionService *service.TimeWeightedNotionalPosition
   145  	gameScoreService                    *service.GameScore
   146  	ammPoolsService                     *service.AMMPools
   147  	volumeRebateStatsService            *service.VolumeRebateStats
   148  	volumeRebateProgramService          *service.VolumeRebatePrograms
   149  
   150  	// Subscribers
   151  	accountSub                      *sqlsubscribers.Account
   152  	assetSub                        *sqlsubscribers.Asset
   153  	partySub                        *sqlsubscribers.Party
   154  	transferResponseSub             *sqlsubscribers.TransferResponse
   155  	orderSub                        *sqlsubscribers.Order
   156  	networkLimitsSub                *sqlsubscribers.NetworkLimits
   157  	marketDataSub                   *sqlsubscribers.MarketData
   158  	tradesSub                       *sqlsubscribers.TradeSubscriber
   159  	rewardsSub                      *sqlsubscribers.Reward
   160  	delegationsSub                  *sqlsubscribers.Delegation
   161  	marketCreatedSub                *sqlsubscribers.MarketCreated
   162  	marketUpdatedSub                *sqlsubscribers.MarketUpdated
   163  	epochSub                        *sqlsubscribers.Epoch
   164  	depositSub                      *sqlsubscribers.Deposit
   165  	withdrawalSub                   *sqlsubscribers.Withdrawal
   166  	proposalsSub                    *sqlsubscribers.Proposal
   167  	votesSub                        *sqlsubscribers.Vote
   168  	marginLevelsSub                 *sqlsubscribers.MarginLevels
   169  	riskFactorSub                   *sqlsubscribers.RiskFactor
   170  	netParamSub                     *sqlsubscribers.NetworkParameter
   171  	checkpointSub                   *sqlsubscribers.Checkpoint
   172  	oracleSpecSub                   *sqlsubscribers.OracleSpec
   173  	oracleDataSub                   *sqlsubscribers.OracleData
   174  	liquidityProvisionSub           *sqlsubscribers.LiquidityProvision
   175  	positionsSub                    *sqlsubscribers.Position
   176  	transferSub                     *sqlsubscribers.Transfer
   177  	stakeLinkingSub                 *sqlsubscribers.StakeLinking
   178  	notarySub                       *sqlsubscribers.Notary
   179  	multiSigSignerEventSub          *sqlsubscribers.ERC20MultiSigSignerEvent
   180  	keyRotationsSub                 *sqlsubscribers.KeyRotation
   181  	ethereumKeyRotationsSub         *sqlsubscribers.EthereumKeyRotation
   182  	nodeSub                         *sqlsubscribers.Node
   183  	pupSub                          *sqlsubscribers.ProtocolUpgrade
   184  	snapSub                         *sqlsubscribers.SnapshotData
   185  	stopOrdersSub                   *sqlsubscribers.StopOrder
   186  	fundingPeriodSub                *sqlsubscribers.FundingPeriod
   187  	partyActivityStreakSub          *sqlsubscribers.PartyActivityStreak
   188  	referralProgramSub              *sqlsubscribers.ReferralProgram
   189  	referralSetsSub                 *sqlsubscribers.ReferralSets
   190  	teamsSub                        *sqlsubscribers.Teams
   191  	vestingStatsSub                 *sqlsubscribers.VestingStatsUpdated
   192  	feesStatsSub                    *sqlsubscribers.FeesStats
   193  	fundingPaymentSub               *sqlsubscribers.FundingPaymentSubscriber
   194  	volumeDiscountStatsSub          *sqlsubscribers.VolumeDiscountStatsUpdated
   195  	volumeDiscountProgramSub        *sqlsubscribers.VolumeDiscountProgram
   196  	paidLiquidityFeesStatsSub       *sqlsubscribers.PaidLiquidityFeesStats
   197  	vestingSummarySub               *sqlsubscribers.VestingBalancesSummary
   198  	transactionResultsSub           *sqlsubscribers.TransactionResults
   199  	marginModesSub                  *sqlsubscribers.MarginModes
   200  	timeWeightedNotionalPositionSub *sqlsubscribers.TimeWeightedNotionalPosition
   201  	gameScoreSub                    *sqlsubscribers.GameScore
   202  	ammPoolsSub                     *sqlsubscribers.AMMPools
   203  	volumeRebateStatsSub            *sqlsubscribers.VolumeRebateStatsUpdated
   204  	volumeRebateProgramSub          *sqlsubscribers.VolumeRebateProgram
   205  }
   206  
   207  func (s *SQLSubscribers) GetSQLSubscribers() []broker.SQLBrokerSubscriber {
   208  	return []broker.SQLBrokerSubscriber{
   209  		s.accountSub,
   210  		s.assetSub,
   211  		s.partySub,
   212  		s.transferResponseSub,
   213  		s.orderSub,
   214  		s.networkLimitsSub,
   215  		s.marketDataSub,
   216  		s.tradesSub,
   217  		s.rewardsSub,
   218  		s.delegationsSub,
   219  		s.marketCreatedSub,
   220  		s.marketUpdatedSub,
   221  		s.epochSub,
   222  		s.marketUpdatedSub,
   223  		s.depositSub,
   224  		s.withdrawalSub,
   225  		s.proposalsSub,
   226  		s.votesSub,
   227  		s.depositSub,
   228  		s.marginLevelsSub,
   229  		s.riskFactorSub,
   230  		s.netParamSub,
   231  		s.checkpointSub,
   232  		s.positionsSub,
   233  		s.oracleSpecSub,
   234  		s.oracleDataSub,
   235  		s.liquidityProvisionSub,
   236  		s.transferSub,
   237  		s.stakeLinkingSub,
   238  		s.notarySub,
   239  		s.multiSigSignerEventSub,
   240  		s.keyRotationsSub,
   241  		s.nodeSub,
   242  		s.ethereumKeyRotationsSub,
   243  		s.pupSub,
   244  		s.snapSub,
   245  		s.stopOrdersSub,
   246  		s.fundingPeriodSub,
   247  		s.partyActivityStreakSub,
   248  		s.referralProgramSub,
   249  		s.referralSetsSub,
   250  		s.teamsSub,
   251  		s.vestingStatsSub,
   252  		s.feesStatsSub,
   253  		s.fundingPaymentSub,
   254  		s.volumeDiscountStatsSub,
   255  		s.volumeDiscountProgramSub,
   256  		s.paidLiquidityFeesStatsSub,
   257  		s.vestingSummarySub,
   258  		s.transactionResultsSub,
   259  		s.marginModesSub,
   260  		s.timeWeightedNotionalPositionSub,
   261  		s.gameScoreSub,
   262  		s.ammPoolsSub,
   263  		s.volumeRebateProgramSub,
   264  		s.volumeRebateStatsSub,
   265  	}
   266  }
   267  
   268  func (s *SQLSubscribers) CreateAllStores(ctx context.Context, Log *logging.Logger, transactionalConnectionSource *sqlstore.ConnectionSource,
   269  	candleV2Config candlesv2.CandleStoreConfig,
   270  ) {
   271  	s.assetStore = sqlstore.NewAssets(transactionalConnectionSource)
   272  	s.blockStore = sqlstore.NewBlocks(transactionalConnectionSource)
   273  	s.partyStore = sqlstore.NewParties(transactionalConnectionSource)
   274  	s.partyStore.Initialise(ctx)
   275  	s.accountStore = sqlstore.NewAccounts(transactionalConnectionSource)
   276  	s.balanceStore = sqlstore.NewBalances(transactionalConnectionSource)
   277  	s.ledger = sqlstore.NewLedger(transactionalConnectionSource)
   278  	s.orderStore = sqlstore.NewOrders(transactionalConnectionSource)
   279  	s.tradeStore = sqlstore.NewTrades(transactionalConnectionSource)
   280  	s.networkLimitsStore = sqlstore.NewNetworkLimits(transactionalConnectionSource)
   281  	s.marketDataStore = sqlstore.NewMarketData(transactionalConnectionSource)
   282  	s.rewardStore = sqlstore.NewRewards(ctx, transactionalConnectionSource)
   283  	s.marketsStore = sqlstore.NewMarkets(transactionalConnectionSource)
   284  	s.delegationStore = sqlstore.NewDelegations(transactionalConnectionSource)
   285  	s.epochStore = sqlstore.NewEpochs(transactionalConnectionSource)
   286  	s.depositStore = sqlstore.NewDeposits(transactionalConnectionSource)
   287  	s.withdrawalsStore = sqlstore.NewWithdrawals(transactionalConnectionSource)
   288  	s.proposalStore = sqlstore.NewProposals(transactionalConnectionSource)
   289  	s.voteStore = sqlstore.NewVotes(transactionalConnectionSource)
   290  	s.marginLevelsStore = sqlstore.NewMarginLevels(transactionalConnectionSource)
   291  	s.riskFactorStore = sqlstore.NewRiskFactors(transactionalConnectionSource)
   292  	s.netParamStore = sqlstore.NewNetworkParameters(transactionalConnectionSource)
   293  	s.checkpointStore = sqlstore.NewCheckpoints(transactionalConnectionSource)
   294  	s.positionStore = sqlstore.NewPositions(transactionalConnectionSource)
   295  	s.oracleSpecStore = sqlstore.NewOracleSpec(transactionalConnectionSource)
   296  	s.oracleDataStore = sqlstore.NewOracleData(transactionalConnectionSource)
   297  	s.liquidityProvisionStore = sqlstore.NewLiquidityProvision(transactionalConnectionSource, Log)
   298  	s.transfersStore = sqlstore.NewTransfers(transactionalConnectionSource)
   299  	s.stakeLinkingStore = sqlstore.NewStakeLinking(transactionalConnectionSource)
   300  	s.notaryStore = sqlstore.NewNotary(transactionalConnectionSource)
   301  	s.multiSigSignerAddedStore = sqlstore.NewERC20MultiSigSignerEvent(transactionalConnectionSource)
   302  	s.keyRotationsStore = sqlstore.NewKeyRotations(transactionalConnectionSource)
   303  	s.ethereumKeyRotationsStore = sqlstore.NewEthereumKeyRotations(transactionalConnectionSource)
   304  	s.nodeStore = sqlstore.NewNode(transactionalConnectionSource)
   305  	s.candleStore = sqlstore.NewCandles(ctx, transactionalConnectionSource, candleV2Config)
   306  	s.chainStore = sqlstore.NewChain(transactionalConnectionSource)
   307  	s.pupStore = sqlstore.NewProtocolUpgradeProposals(transactionalConnectionSource)
   308  	s.snapStore = sqlstore.NewCoreSnapshotData(transactionalConnectionSource)
   309  	s.stopOrderStore = sqlstore.NewStopOrders(transactionalConnectionSource)
   310  	s.fundingPeriodStore = sqlstore.NewFundingPeriods(transactionalConnectionSource)
   311  	s.partyActivityStreakStore = sqlstore.NewPartyActivityStreaks(transactionalConnectionSource)
   312  	s.referralProgramStore = sqlstore.NewReferralPrograms(transactionalConnectionSource)
   313  	s.referralSetsStore = sqlstore.NewReferralSets(transactionalConnectionSource)
   314  	s.teamsStore = sqlstore.NewTeams(transactionalConnectionSource)
   315  	s.vestingStatsStore = sqlstore.NewVestingStats(transactionalConnectionSource)
   316  	s.feesStatsStore = sqlstore.NewFeesStats(transactionalConnectionSource)
   317  	s.fundingPaymentStore = sqlstore.NewFundingPayments(transactionalConnectionSource)
   318  	s.volumeDiscountStatsStore = sqlstore.NewVolumeDiscountStats(transactionalConnectionSource)
   319  	s.volumeDiscountProgramsStore = sqlstore.NewVolumeDiscountPrograms(transactionalConnectionSource)
   320  	s.paidLiquidityFeesStatsStore = sqlstore.NewPaidLiquidityFeesStats(transactionalConnectionSource)
   321  	s.partyLockedBalancesStore = sqlstore.NewPartyLockedBalances(transactionalConnectionSource)
   322  	s.partyVestingBalancesStore = sqlstore.NewPartyVestingBalances(transactionalConnectionSource)
   323  	s.gamesStore = sqlstore.NewGames(transactionalConnectionSource)
   324  	s.marginModesStore = sqlstore.NewMarginModes(transactionalConnectionSource)
   325  	s.timeWeightedNotionalPositionStore = sqlstore.NewTimeWeightedNotionalPosition(transactionalConnectionSource)
   326  	s.gameScoreStore = sqlstore.NewGameScores(transactionalConnectionSource)
   327  	s.ammPoolsStore = sqlstore.NewAMMPools(transactionalConnectionSource)
   328  	s.volumeRebateStatsStore = sqlstore.NewVolumeRebateStats(transactionalConnectionSource)
   329  	s.volumeRebateProgramsStore = sqlstore.NewVolumeRebatePrograms(transactionalConnectionSource)
   330  }
   331  
   332  func (s *SQLSubscribers) SetupServices(ctx context.Context, log *logging.Logger, cfg service.Config, candlesConfig candlesv2.Config) error {
   333  	s.accountService = service.NewAccount(s.accountStore, s.balanceStore, log)
   334  	s.assetService = service.NewAsset(s.assetStore)
   335  	s.blockService = service.NewBlock(s.blockStore)
   336  	s.candleService = candlesv2.NewService(ctx, log, candlesConfig, s.candleStore)
   337  	s.checkpointService = service.NewCheckpoint(s.checkpointStore)
   338  	s.delegationService = service.NewDelegation(s.delegationStore, log)
   339  	s.depositService = service.NewDeposit(s.depositStore)
   340  	s.epochService = service.NewEpoch(s.epochStore)
   341  	s.governanceService = service.NewGovernance(s.proposalStore, s.voteStore, log)
   342  	s.keyRotationsService = service.NewKeyRotations(s.keyRotationsStore)
   343  	s.ethereumKeyRotationsService = service.NewEthereumKeyRotation(s.ethereumKeyRotationsStore, log)
   344  	s.ledgerService = service.NewLedger(s.ledger, log)
   345  	s.liquidityProvisionService = service.NewLiquidityProvision(s.liquidityProvisionStore)
   346  	s.marketDataService = service.NewMarketData(s.marketDataStore, log)
   347  	s.positionService = service.NewPosition(s.positionStore, log)
   348  	s.marketsService = service.NewMarkets(s.marketsStore)
   349  	s.multiSigService = service.NewMultiSig(s.multiSigSignerAddedStore)
   350  	s.networkLimitsService = service.NewNetworkLimits(s.networkLimitsStore)
   351  	s.networkParameterService = service.NewNetworkParameter(s.netParamStore)
   352  	s.nodeService = service.NewNode(s.nodeStore)
   353  	s.notaryService = service.NewNotary(s.notaryStore)
   354  	s.oracleDataService = service.NewOracleData(s.oracleDataStore)
   355  	s.oracleSpecService = service.NewOracleSpec(s.oracleSpecStore)
   356  	s.orderService = service.NewOrder(s.orderStore, log)
   357  	s.partyService = service.NewParty(s.partyStore)
   358  	s.rewardService = service.NewReward(s.rewardStore, log)
   359  	s.riskFactorService = service.NewRiskFactor(s.riskFactorStore)
   360  	s.riskService = service.NewRisk(s.marginLevelsStore, s.accountStore, log)
   361  	s.stakeLinkingService = service.NewStakeLinking(s.stakeLinkingStore)
   362  	s.tradeService = service.NewTrade(s.tradeStore, log)
   363  	s.transferService = service.NewTransfer(s.transfersStore)
   364  	s.withdrawalService = service.NewWithdrawal(s.withdrawalsStore)
   365  	s.chainService = service.NewChain(s.chainStore)
   366  	s.protocolUpgradeService = service.NewProtocolUpgrade(s.pupStore, log)
   367  	s.coreSnapshotService = service.NewSnapshotData(s.snapStore)
   368  	s.stopOrderService = service.NewStopOrders(s.stopOrderStore)
   369  	s.partyActivityStreakService = service.NewPartyActivityStreak(s.partyActivityStreakStore)
   370  	s.fundingPeriodService = service.NewFundingPeriods(s.fundingPeriodStore)
   371  	s.referralProgramService = service.NewReferralPrograms(s.referralProgramStore)
   372  	s.referralSetsService = service.NewReferralSets(s.referralSetsStore)
   373  	s.teamsService = service.NewTeams(s.teamsStore)
   374  	s.vestingStatsService = service.NewVestingStats(s.vestingStatsStore)
   375  	s.feesStatsService = service.NewFeesStats(s.feesStatsStore)
   376  	s.fundingPaymentService = service.NewFundingPayment(s.fundingPaymentStore)
   377  	s.volumeDiscountStatsService = service.NewVolumeDiscountStats(s.volumeDiscountStatsStore)
   378  	s.volumeDiscountProgramService = service.NewVolumeDiscountPrograms(s.volumeDiscountProgramsStore)
   379  	s.paidLiquidityFeesStatsService = service.NewPaidLiquidityFeesStats(s.paidLiquidityFeesStatsStore)
   380  	s.partyLockedBalancesService = service.NewPartyLockedBalances(s.partyLockedBalancesStore)
   381  	s.partyVestingBalancesService = service.NewPartyVestingBalances(s.partyVestingBalancesStore)
   382  	s.gamesService = service.NewGames(s.gamesStore)
   383  	s.marginModesService = service.NewMarginModes(s.marginModesStore)
   384  	s.timeWeightedNotionalPositionService = service.NewTimeWeightedNotionalPosition(s.timeWeightedNotionalPositionStore)
   385  	s.gameScoreService = service.NewGameScore(s.gameScoreStore, log)
   386  	s.ammPoolsService = service.NewAMMPools(s.ammPoolsStore)
   387  	s.volumeRebateStatsService = service.NewVolumeRebateStats(s.volumeRebateStatsStore)
   388  	s.volumeRebateProgramService = service.NewVolumeRebatePrograms(s.volumeRebateProgramsStore)
   389  
   390  	s.marketDepthService = service.NewMarketDepth(
   391  		cfg.MarketDepth,
   392  		s.orderStore,
   393  		s.ammPoolsStore,
   394  		s.marketDataStore,
   395  		s.positionService,
   396  		s.assetStore,
   397  		s.marketsStore,
   398  		log,
   399  	)
   400  
   401  	s.transactionResultsSub = sqlsubscribers.NewTransactionResults(log)
   402  	s.transactionResultsService = service.NewTransactionResults(s.transactionResultsSub)
   403  
   404  	toInit := []interface{ Initialise(context.Context) error }{
   405  		s.marketDepthService,
   406  		s.marketDataService,
   407  		s.marketsService,
   408  	}
   409  
   410  	for _, svc := range toInit {
   411  		if err := svc.Initialise(ctx); err != nil {
   412  			return err
   413  		}
   414  	}
   415  
   416  	return nil
   417  }
   418  
   419  func (s *SQLSubscribers) SetupSQLSubscribers() {
   420  	s.accountSub = sqlsubscribers.NewAccount(s.accountService)
   421  	s.assetSub = sqlsubscribers.NewAsset(s.assetService)
   422  	s.partySub = sqlsubscribers.NewParty(s.partyService)
   423  	s.transferResponseSub = sqlsubscribers.NewTransferResponse(s.ledgerService, s.accountService)
   424  	s.orderSub = sqlsubscribers.NewOrder(s.orderService, s.marketDepthService)
   425  	s.networkLimitsSub = sqlsubscribers.NewNetworkLimitSub(s.networkLimitsService)
   426  	s.marketDataSub = sqlsubscribers.NewMarketData(s.marketDataService)
   427  	s.tradesSub = sqlsubscribers.NewTradesSubscriber(s.tradeService)
   428  	s.rewardsSub = sqlsubscribers.NewReward(s.rewardService)
   429  	s.marketCreatedSub = sqlsubscribers.NewMarketCreated(s.marketsService)
   430  	s.marketUpdatedSub = sqlsubscribers.NewMarketUpdated(s.marketsService)
   431  	s.delegationsSub = sqlsubscribers.NewDelegation(s.delegationService)
   432  	s.epochSub = sqlsubscribers.NewEpoch(s.epochService)
   433  	s.depositSub = sqlsubscribers.NewDeposit(s.depositService)
   434  	s.withdrawalSub = sqlsubscribers.NewWithdrawal(s.withdrawalService)
   435  	s.proposalsSub = sqlsubscribers.NewProposal(s.governanceService)
   436  	s.votesSub = sqlsubscribers.NewVote(s.governanceService)
   437  	s.marginLevelsSub = sqlsubscribers.NewMarginLevels(s.riskService, s.accountStore)
   438  	s.riskFactorSub = sqlsubscribers.NewRiskFactor(s.riskFactorService)
   439  	s.netParamSub = sqlsubscribers.NewNetworkParameter(s.networkParameterService)
   440  	s.checkpointSub = sqlsubscribers.NewCheckpoint(s.checkpointService)
   441  	s.positionsSub = sqlsubscribers.NewPosition(s.positionService, s.marketsService)
   442  	s.oracleSpecSub = sqlsubscribers.NewOracleSpec(s.oracleSpecService)
   443  	s.oracleDataSub = sqlsubscribers.NewOracleData(s.oracleDataService)
   444  	s.liquidityProvisionSub = sqlsubscribers.NewLiquidityProvision(s.liquidityProvisionService)
   445  	s.transferSub = sqlsubscribers.NewTransfer(s.transfersStore, s.accountService)
   446  	s.stakeLinkingSub = sqlsubscribers.NewStakeLinking(s.stakeLinkingService)
   447  	s.notarySub = sqlsubscribers.NewNotary(s.notaryService)
   448  	s.multiSigSignerEventSub = sqlsubscribers.NewERC20MultiSigSignerEvent(s.multiSigService)
   449  	s.keyRotationsSub = sqlsubscribers.NewKeyRotation(s.keyRotationsService)
   450  	s.ethereumKeyRotationsSub = sqlsubscribers.NewEthereumKeyRotation(s.ethereumKeyRotationsService)
   451  	s.nodeSub = sqlsubscribers.NewNode(s.nodeService)
   452  	s.pupSub = sqlsubscribers.NewProtocolUpgrade(s.protocolUpgradeService)
   453  	s.snapSub = sqlsubscribers.NewSnapshotData(s.coreSnapshotService)
   454  	s.stopOrdersSub = sqlsubscribers.NewStopOrder(s.stopOrderService)
   455  	s.fundingPeriodSub = sqlsubscribers.NewFundingPeriod(s.fundingPeriodService)
   456  	s.partyActivityStreakSub = sqlsubscribers.NewPartyActivityStreak(s.partyActivityStreakService)
   457  	s.referralProgramSub = sqlsubscribers.NewReferralProgram(s.referralProgramService)
   458  	s.referralSetsSub = sqlsubscribers.NewReferralSets(s.referralSetsService)
   459  	s.teamsSub = sqlsubscribers.NewTeams(s.teamsService)
   460  	s.vestingStatsSub = sqlsubscribers.NewVestingStatsUpdated(s.vestingStatsService)
   461  	s.feesStatsSub = sqlsubscribers.NewFeesStats(s.feesStatsService)
   462  	s.fundingPaymentSub = sqlsubscribers.NewFundingPaymentsSubscriber(s.fundingPaymentStore)
   463  	s.volumeDiscountStatsSub = sqlsubscribers.NewVolumeDiscountStatsUpdated(s.volumeDiscountStatsService)
   464  	s.volumeDiscountProgramSub = sqlsubscribers.NewVolumeDiscountProgram(s.volumeDiscountProgramService)
   465  	s.paidLiquidityFeesStatsSub = sqlsubscribers.NewPaidLiquidityFeesStats(s.paidLiquidityFeesStatsService)
   466  	s.vestingSummarySub = sqlsubscribers.NewVestingBalancesSummary(s.partyVestingBalancesStore, s.partyLockedBalancesStore)
   467  	s.marginModesSub = sqlsubscribers.NewMarginModes(s.marginModesService)
   468  	s.timeWeightedNotionalPositionSub = sqlsubscribers.NewTimeWeightedNotionalPosition(s.timeWeightedNotionalPositionService)
   469  	s.gameScoreSub = sqlsubscribers.NewGameScore(s.gameScoreStore)
   470  	s.volumeRebateStatsSub = sqlsubscribers.NewVolumeRebateStatsUpdated(s.volumeRebateStatsService)
   471  	s.volumeRebateProgramSub = sqlsubscribers.NewVolumeRebateProgram(s.volumeRebateProgramService)
   472  	s.ammPoolsSub = sqlsubscribers.NewAMMPools(s.ammPoolsService, s.marketDepthService)
   473  }