converts to application component

This commit is contained in:
thatben 2025-03-18 14:55:52 +01:00
parent b3e147ace1
commit ce3e53949b
No known key found for this signature in database
GPG Key ID: 62C543548433D43E
3 changed files with 62 additions and 19 deletions

View File

@ -17,9 +17,6 @@ import ./components/todolist
proc createComponents*(state: State): Future[?!seq[Component]] {.async.} =
var components: seq[Component] = newSeq[Component]()
await aaa(state.config)
let clock = createClock()
without dht =? (await createDht(state)), err:
@ -31,6 +28,7 @@ proc createComponents*(state: State): Future[?!seq[Component]] {.async.} =
let
metrics = createMetrics(state.config.metricsAddress, state.config.metricsPort)
todoList = createTodoList(state, metrics)
marketplace = createMarketplace(state)
without dhtMetrics =? createDhtMetrics(state, metrics), err:
return failure(err)
@ -41,5 +39,6 @@ proc createComponents*(state: State): Future[?!seq[Component]] {.async.} =
components.add(Crawler.new(state, dht, todoList))
components.add(TimeTracker.new(state, nodeStore, dht, clock))
components.add(dhtMetrics)
components.add(marketplace)
return success(components)

View File

@ -4,27 +4,50 @@ import pkg/questionable
import ./marketplace/market
import ./marketplace/marketplace
import ../config
import ../component
import ../state
proc aaa*(config: Config) {.async.} =
echo "aaa"
logScope:
topics = "marketplace"
let provider = JsonRpcProvider.new(config.ethProvider)
without marketplaceAddress =? Address.init(config.marketplaceAddress):
raiseAssert("A!")
type
MarketplaceService* = ref object of Component
state: State
market: ?OnChainMarket
method getZkeyhash*(m: MarketplaceService): Future[?!string] {.async: (raises: []), base.} =
try:
if market =? m.market:
without zkeyhash =? await market.getZkeyHash():
return failure("Failed to get zkeyHash")
return success(zkeyhash)
return failure("MarketplaceService is not started")
except CatchableError as err:
return failure("Error while getting zkeyHash: " & err.msg)
method start*(m: MarketplaceService): Future[?!void] {.async.} =
let provider = JsonRpcProvider.new(m.state.config.ethProvider)
without marketplaceAddress =? Address.init(m.state.config.marketplaceAddress):
return failure("Invalid MarketplaceAddress provided")
let marketplace = Marketplace.new(marketplaceAddress, provider)
let market = OnChainMarket.new(marketplace)
m.market = some(OnChainMarket.new(marketplace))
echo "bbb"
echo "running with marketplace address: " & $marketplaceAddress
return success()
try:
without zkeyhash =? await market.getZkeyHash():
echo "couldn't get zkeyhash"
return
echo "zkeyhash=" & $zkeyhash
method stop*(m: MarketplaceService): Future[?!void] {.async.} =
return success()
except CatchableError as err:
echo "catchable error! " & err.msg
proc new(
T: type MarketplaceService,
state: State
): MarketplaceService =
return MarketplaceService(
state: state,
market: none(OnChainMarket)
)
echo "ccc"
proc createMarketplace*(state: State): MarketplaceService =
return MarketplaceService.new(
state
)

View File

@ -0,0 +1,21 @@
import pkg/ethers
import pkg/questionable
import ./marketplace/market
import ./marketplace/marketplace
import ../config
import ../component
import ../state
logScope:
topics = "marketplace"
type
MockMarketplaceService* = ref object of MarketplaceService
zkeyHashReturn*: ?!string
method getZkeyhash*(m: MockMarketplaceService): Future[?!string] {.async: (raises: []).} =
return m.zkeyHashReturn
proc createMockMarketplaceService*(): MockMarketplaceService =
MockMarketplaceService()