[purchasing] keep track of all purchases
This commit is contained in:
parent
466f109193
commit
fb56f60d77
|
@ -1,4 +1,5 @@
|
||||||
import std/times
|
import std/times
|
||||||
|
import std/tables
|
||||||
import pkg/stint
|
import pkg/stint
|
||||||
import pkg/chronos
|
import pkg/chronos
|
||||||
import pkg/questionable
|
import pkg/questionable
|
||||||
|
@ -11,6 +12,7 @@ export market
|
||||||
type
|
type
|
||||||
Purchasing* = ref object
|
Purchasing* = ref object
|
||||||
market: Market
|
market: Market
|
||||||
|
purchases: Table[array[32, byte], Purchase]
|
||||||
proofProbability*: UInt256
|
proofProbability*: UInt256
|
||||||
requestExpiryInterval*: UInt256
|
requestExpiryInterval*: UInt256
|
||||||
offerExpiryMargin*: UInt256
|
offerExpiryMargin*: UInt256
|
||||||
|
@ -27,6 +29,7 @@ const DefaultRequestExpiryInterval = (10 * 60).u256
|
||||||
const DefaultOfferExpiryMargin = (8 * 60).u256
|
const DefaultOfferExpiryMargin = (8 * 60).u256
|
||||||
|
|
||||||
proc start(purchase: Purchase) {.gcsafe.}
|
proc start(purchase: Purchase) {.gcsafe.}
|
||||||
|
func id*(purchase: Purchase): array[32, byte]
|
||||||
|
|
||||||
proc new*(_: type Purchasing, market: Market): Purchasing =
|
proc new*(_: type Purchasing, market: Market): Purchasing =
|
||||||
Purchasing(
|
Purchasing(
|
||||||
|
@ -53,8 +56,15 @@ proc purchase*(purchasing: Purchasing, request: StorageRequest): Purchase =
|
||||||
offerExpiryMargin: purchasing.offerExpiryMargin
|
offerExpiryMargin: purchasing.offerExpiryMargin
|
||||||
)
|
)
|
||||||
purchase.start()
|
purchase.start()
|
||||||
|
purchasing.purchases[purchase.id] = purchase
|
||||||
purchase
|
purchase
|
||||||
|
|
||||||
|
func getPurchase*(purchasing: Purchasing, id: array[32, byte]): ?Purchase =
|
||||||
|
if purchasing.purchases.hasKey(id):
|
||||||
|
some purchasing.purchases[id]
|
||||||
|
else:
|
||||||
|
none Purchase
|
||||||
|
|
||||||
proc selectOffer(purchase: Purchase) {.async.} =
|
proc selectOffer(purchase: Purchase) {.async.} =
|
||||||
var cheapest: ?StorageOffer
|
var cheapest: ?StorageOffer
|
||||||
for offer in purchase.offers:
|
for offer in purchase.offers:
|
||||||
|
|
|
@ -34,6 +34,12 @@ suite "Purchasing":
|
||||||
check submitted.ask.size == request.ask.size
|
check submitted.ask.size == request.ask.size
|
||||||
check submitted.ask.maxPrice == request.ask.maxPrice
|
check submitted.ask.maxPrice == request.ask.maxPrice
|
||||||
|
|
||||||
|
test "remembers purchases":
|
||||||
|
let purchase1 = purchasing.purchase(request)
|
||||||
|
let purchase2 = purchasing.purchase(request)
|
||||||
|
check purchasing.getPurchase(purchase1.id) == some purchase1
|
||||||
|
check purchasing.getPurchase(purchase2.id) == some purchase2
|
||||||
|
|
||||||
test "has a default value for proof probability":
|
test "has a default value for proof probability":
|
||||||
check purchasing.proofProbability != 0.u256
|
check purchasing.proofProbability != 0.u256
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue