11import { bigIntReplacer , unknownToError } from "@happy.tech/common"
2+ import { getUrlProtocol } from "@happy.tech/common"
23import { abis } from "@happy.tech/contracts/random/anvil"
34import { type Result , err , ok } from "neverthrow"
45import { http , type Block , type PublicClient , type Transport , createPublicClient , defineChain , webSocket } from "viem"
5- import { MonitoringRepository } from "./MonitorigRepository "
6- import { Monitoring , MonitoringResult } from "./Monitoring "
6+ import { CheckRepository } from "./CheckRepository "
7+ import { Check , CheckResult } from "./Check "
78import { env } from "./env"
8- import { getUrlProtocol } from "./utils/getUrlProtocol "
9+ import { logger } from "./utils/logger "
910
1011/**
1112 * Main monitoring service for tracking blockchain randomness
1213 */
1314export class MonitoringService {
14- private readonly monitoringRepository : MonitoringRepository
15+ private readonly checkRepository : CheckRepository
1516 private readonly viemClient : PublicClient
1617 private readonly protocol : "http" | "websocket"
1718
@@ -20,7 +21,7 @@ export class MonitoringService {
2021 private isProcessing = false
2122
2223 constructor ( ) {
23- this . monitoringRepository = new MonitoringRepository ( )
24+ this . checkRepository = new CheckRepository ( )
2425
2526 const protocolResult = getUrlProtocol ( env . RPC_URL )
2627
@@ -90,14 +91,14 @@ export class MonitoringService {
9091 * Initialize monitoring state from database
9192 */
9293 private async initializeMonitoring ( ) : Promise < void > {
93- const latestMonitoring = await this . monitoringRepository . findLatestMonitoring ( )
94+ const latestCheck = await this . checkRepository . findLatestCheck ( )
9495
95- if ( latestMonitoring . isErr ( ) ) {
96- console . error ( "Failed to retrieve latest monitoring :" , latestMonitoring . error )
96+ if ( latestCheck . isErr ( ) ) {
97+ console . error ( "Failed to retrieve latest check :" , latestCheck . error )
9798 process . exit ( 1 )
9899 }
99100
100- this . latestMonitoringBlockNumber = latestMonitoring . value ?. blockNumber
101+ this . latestMonitoringBlockNumber = latestCheck . value ?. blockNumber
101102 console . log ( "Starting monitoring from block:" , this . latestMonitoringBlockNumber )
102103 }
103104
@@ -109,7 +110,7 @@ export class MonitoringService {
109110 return
110111 }
111112
112- this . monitoringRepository . pruneMonitoring ( block . timestamp )
113+ this . checkRepository . pruneChecks ( block . timestamp )
113114
114115 this . latestBlockchainBlockNumber = block . number
115116
@@ -135,19 +136,17 @@ export class MonitoringService {
135136 this . latestMonitoringBlockNumber = this . latestBlockchainBlockNumber
136137 }
137138
138- if ( this . latestMonitoringBlockNumber && this . latestBlockchainBlockNumber ) {
139- let blockToMonitor = this . latestMonitoringBlockNumber + 1n
140- const endBlock = this . latestBlockchainBlockNumber
139+ let blockToMonitor = this . latestMonitoringBlockNumber + 1n
140+ const endBlock = this . latestBlockchainBlockNumber
141141
142- while ( blockToMonitor < endBlock ) {
143- const result = await this . monitorBlock ( blockToMonitor )
144- if ( result . isErr ( ) ) {
145- break
146- }
147-
148- this . latestMonitoringBlockNumber = blockToMonitor
149- blockToMonitor = blockToMonitor + 1n
142+ while ( blockToMonitor < endBlock ) {
143+ const result = await this . monitorBlock ( blockToMonitor )
144+ if ( result . isErr ( ) ) {
145+ break
150146 }
147+
148+ this . latestMonitoringBlockNumber = blockToMonitor
149+ blockToMonitor = blockToMonitor + 1n
151150 }
152151 } catch ( error ) {
153152 console . error ( "Error in processing monitoring:" , error )
@@ -160,7 +159,7 @@ export class MonitoringService {
160159 * Monitor a specific block for randomness
161160 */
162161 private async monitorBlock ( blockNumber : bigint ) : Promise < Result < void , Error > > {
163- console . log ( " Monitoring block" , blockNumber )
162+ logger . info ( ` Monitoring block ${ blockNumber } ` )
164163
165164 let block : Block < bigint , false , "latest" > | undefined
166165 try {
@@ -184,12 +183,12 @@ export class MonitoringService {
184183 functionName : "random" ,
185184 blockNumber,
186185 } )
187- await this . monitoringRepository
188- . saveMonitoring (
189- new Monitoring ( blockNumber , block . timestamp , MonitoringResult . Success , undefined , random ) ,
186+ await this . checkRepository
187+ . saveCheck (
188+ new Check ( blockNumber , block . timestamp , CheckResult . Success , undefined , random ) ,
190189 )
191190 . catch ( ( error ) => {
192- console . error ( "Error in saving monitoring :" , error )
191+ console . error ( "Error in saving check :" , error )
193192 } )
194193 } catch ( err : unknown ) {
195194 let errorMessage : string | undefined
@@ -200,10 +199,10 @@ export class MonitoringService {
200199 errorMessage = JSON . stringify ( err , bigIntReplacer )
201200 }
202201
203- await this . monitoringRepository
204- . saveMonitoring ( new Monitoring ( blockNumber , block . timestamp , MonitoringResult . Failure , errorMessage ) )
202+ await this . checkRepository
203+ . saveCheck ( new Check ( blockNumber , block . timestamp , CheckResult . Failure , errorMessage ) )
205204 . catch ( ( error ) => {
206- console . error ( "Error in saving monitoring :" , error )
205+ console . error ( "Error in saving check :" , error )
207206 } )
208207 }
209208
0 commit comments