Skip to content
This repository has been archived by the owner on May 19, 2023. It is now read-only.

fix: make total-capacity(offer) and size(agreement) number type #367

Merged
merged 11 commits into from
Nov 9, 2020
3 changes: 2 additions & 1 deletion src/services/storage/handlers/offer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ const handlers: { [key: string]: Function } = {
const flag = firstMsg.substring(2, 4)

if (flag === '01') { // PeerId definition
const previousPeerId = offer.peerId
offer.peerId = decodeByteArray([`0x${firstMsg.substring(4)}`, ...restMsg])

await offer.save()
nduchak marked this conversation as resolved.
Show resolved Hide resolved
Expand All @@ -80,7 +81,7 @@ const handlers: { [key: string]: Function } = {
offerService.emit('updated', wrapEvent('MessageEmitted', offer.toJSON()))

// Join to libp2p room for that offer
if (libp2p) {
if (libp2p && previousPeerId !== offer.peerId) {
subscribeForOffer(libp2p, offer)
}
}
Expand Down
6 changes: 3 additions & 3 deletions src/services/storage/models/agreement.model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ export default class Agreement extends Model {
consumer!: string

// In Megabytes
@Column({ ...BigNumberStringType('size') })
size!: BigNumber
@Column
size!: number

@Column({ defaultValue: true })
isActive!: boolean
Expand Down Expand Up @@ -50,7 +50,7 @@ export default class Agreement extends Model {
offer!: Offer

periodPrice (): BigNumber {
return this.size.times(this.billingPrice)
return this.billingPrice.times(this.size)
}

getPeriodsSinceLastPayout (floor = true): BigNumber {
Expand Down
13 changes: 6 additions & 7 deletions src/services/storage/models/offer.model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import { Literal } from 'sequelize/types/lib/utils'
import BillingPlan from './billing-plan.model'
import { SupportedTokens } from '../../../definitions'
import Agreement from './agreement.model'
import { BigNumberStringType } from '../../../sequelize'
import { WEI } from '../utils'

@Scopes(() => ({
Expand All @@ -28,8 +27,8 @@ export default class Offer extends Model {
@Column({ primaryKey: true, type: DataType.STRING(64) })
provider!: string

@Column({ ...BigNumberStringType('totalCapacity') })
totalCapacity!: BigNumber
@Column
totalCapacity!: number
nduchak marked this conversation as resolved.
Show resolved Hide resolved

@Column
peerId!: string
Expand All @@ -41,15 +40,15 @@ export default class Offer extends Model {
agreements!: Agreement[]

@Column(DataType.VIRTUAL)
get utilizedCapacity (): BigNumber {
get utilizedCapacity (): number {
return (this.agreements || [])
.map(request => request.size)
.reduce((previousValue, currentValue) => previousValue.plus(currentValue), new BigNumber(0))
.reduce((previousValue, currentValue) => previousValue + currentValue, 0)
}

@Column(DataType.VIRTUAL)
get availableCapacity (): BigNumber {
return this.totalCapacity.minus(this.utilizedCapacity)
get availableCapacity (): number {
return this.totalCapacity - this.utilizedCapacity
}

@Column(DataType.VIRTUAL)
Expand Down
4 changes: 2 additions & 2 deletions test/unit/services/storage/processor.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ describe('Storage services: Events Processor', () => {
await processor(event)
const updatedEventFromDB = await Offer.findOne({ where: { provider: event.returnValues.provider } })

expect(updatedEventFromDB?.totalCapacity).to.be.eql(new BigNumber(event.returnValues.capacity))
expect(updatedEventFromDB?.totalCapacity).to.be.eql(event.returnValues.capacity)
})
})

Expand Down Expand Up @@ -387,7 +387,7 @@ describe('Storage services: Events Processor', () => {
expect(agreement?.dataReference).to.be.eql(decodeByteArray(event.returnValues.dataReference))
expect(agreement?.consumer).to.be.eql(event.returnValues.agreementCreator)
expect(agreement?.offerId).to.be.eql(provider)
expect(agreement?.size).to.be.eql(new BigNumber(event.returnValues.size))
expect(agreement?.size).to.be.eql(event.returnValues.size)
expect(agreement?.billingPeriod).to.be.eql(new BigNumber(event.returnValues.billingPeriod))
expect(agreement?.billingPrice).to.be.eql(new BigNumber(plan.price))
expect(agreement?.availableFunds).to.be.eql(new BigNumber(event.returnValues.availableFunds))
Expand Down