Skip to content

Commit

Permalink
chore: moved renew lease to message handler
Browse files Browse the repository at this point in the history
  • Loading branch information
ironman0x7b2 committed Jul 5, 2024
1 parent 4162617 commit 6b02574
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 54 deletions.
4 changes: 2 additions & 2 deletions x/lease/keeper/abci.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,13 +75,13 @@ func (k *Keeper) handleLeaseRenewals(ctx sdk.Context) {
k.DeleteLeaseForRenewalAt(ctx, item.RenewalAt, item.ID)

msg := &v1.MsgRenewRequest{
From: "",
From: item.ProvAddress,
ID: item.ID,
Hours: item.MaxHours,
Denom: item.Price.Denom,
}

if _, err := k.RenewLease(ctx, msg); err != nil {
if _, err := k.HandleMsgRenewLease(ctx, msg); err != nil {
panic(err)
}

Expand Down
52 changes: 0 additions & 52 deletions x/lease/keeper/lease.go
Original file line number Diff line number Diff line change
Expand Up @@ -340,55 +340,3 @@ func (k *Keeper) IterateLeasesForRenewalAt(ctx sdk.Context, at time.Time, fn fun
i++
}
}

func (k *Keeper) RenewLease(ctx sdk.Context, msg *v1.MsgRenewRequest) (*v1.Lease, error) {
lease, found := k.GetLease(ctx, msg.ID)
if !found {
return nil, types.NewErrorLeaseNotFound(msg.ID)
}

var (
nodeAddr = lease.GetNodeAddress()
provAddr = lease.GetProvAddress()
)

node, found := k.GetNode(ctx, nodeAddr)
if !found {
return nil, types.NewErrorNodeNotFound(nodeAddr)
}

price, found := node.HourlyPrice(msg.Denom)
if !found {
return nil, types.NewErrorPriceNotFound(msg.Denom)
}

duration := time.Duration(msg.Hours) * time.Hour
lease = v1.Lease{
ID: lease.ID,
ProvAddress: lease.ProvAddress,
NodeAddress: lease.NodeAddress,
Price: price,
Deposit: sdk.NewCoin(
price.Denom,
price.Amount.MulRaw(msg.Hours),
),
Hours: 0,
MaxHours: msg.Hours,
InactiveAt: time.Time{},
PayoutAt: ctx.BlockTime(),
RenewalAt: ctx.BlockTime().Add(duration),
}

if err := k.AddDeposit(ctx, provAddr.Bytes(), lease.Deposit); err != nil {
return nil, err
}

k.SetLease(ctx, lease)
k.SetLeaseForNode(ctx, nodeAddr, lease.ID)
k.SetLeaseForProvider(ctx, provAddr, lease.ID)
k.SetLeaseForProviderByNode(ctx, provAddr, nodeAddr, lease.ID)
k.SetLeaseForPayoutAt(ctx, lease.PayoutAt, lease.ID)
k.SetLeaseForRenewalAt(ctx, lease.RenewalAt, lease.ID)

return &lease, nil
}
60 changes: 60 additions & 0 deletions x/lease/keeper/msg_handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,66 @@ func (k *Keeper) HandleMsgUpdateDetails(ctx sdk.Context, msg *v1.MsgUpdateDetail
return &v1.MsgUpdateDetailsResponse{}, nil
}

func (k *Keeper) HandleMsgRenewLease(ctx sdk.Context, msg *v1.MsgRenewRequest) (*v1.MsgRenewResponse, error) {
lease, found := k.GetLease(ctx, msg.ID)
if !found {
return nil, types.NewErrorLeaseNotFound(msg.ID)
}
if msg.From != lease.ProvAddress {
return nil, types.NewErrorUnauthorized(msg.From)
}

var (
nodeAddr = lease.GetNodeAddress()
provAddr = lease.GetProvAddress()
)

refund := lease.Refund()
if err := k.SubtractDeposit(ctx, provAddr.Bytes(), refund); err != nil {
return nil, err
}

node, found := k.GetNode(ctx, nodeAddr)
if !found {
return nil, types.NewErrorNodeNotFound(nodeAddr)
}

price, found := node.HourlyPrice(msg.Denom)
if !found {
return nil, types.NewErrorPriceNotFound(msg.Denom)
}

duration := time.Duration(msg.Hours) * time.Hour
lease = v1.Lease{
ID: lease.ID,
ProvAddress: lease.ProvAddress,
NodeAddress: lease.NodeAddress,
Price: price,
Deposit: sdk.NewCoin(
price.Denom,
price.Amount.MulRaw(msg.Hours),
),
Hours: 0,
MaxHours: msg.Hours,
InactiveAt: time.Time{},
PayoutAt: ctx.BlockTime(),
RenewalAt: ctx.BlockTime().Add(duration),
}

if err := k.AddDeposit(ctx, provAddr.Bytes(), lease.Deposit); err != nil {
return nil, err
}

k.SetLease(ctx, lease)
k.SetLeaseForNode(ctx, nodeAddr, lease.ID)
k.SetLeaseForProvider(ctx, provAddr, lease.ID)
k.SetLeaseForProviderByNode(ctx, provAddr, nodeAddr, lease.ID)
k.SetLeaseForPayoutAt(ctx, lease.PayoutAt, lease.ID)
k.SetLeaseForRenewalAt(ctx, lease.RenewalAt, lease.ID)

return &v1.MsgRenewResponse{}, nil
}

func (k *Keeper) HandleMsgEnd(ctx sdk.Context, msg *v1.MsgEndRequest) (*v1.MsgEndResponse, error) {
lease, found := k.GetLease(ctx, msg.ID)
if !found {
Expand Down

0 comments on commit 6b02574

Please sign in to comment.