Skip to content

Commit

Permalink
added logic to request-loan message server
Browse files Browse the repository at this point in the history
  • Loading branch information
outsmartchad committed May 17, 2024
1 parent fe02d84 commit 44c0cba
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 3 deletions.
24 changes: 21 additions & 3 deletions x/loan/keeper/msg_server_request_loan.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,26 @@ import (
func (k msgServer) RequestLoan(goCtx context.Context, msg *types.MsgRequestLoan) (*types.MsgRequestLoanResponse, error) {
ctx := sdk.UnwrapSDKContext(goCtx)

// TODO: Handling the message
_ = ctx

var loan = types.Loan{
Amount: msg.Amount,
Fee: msg.Fee,
Collateral: msg.Collateral,
Deadline: msg.Deadline,
Borrower: msg.Creator,
State: "requested",
}
borrower, err := sdk.AccAddressFromBech32(msg.Creator)
if err != nil {
panic(err)
}
collateral, err := sdk.ParseCoinsNormalized(loan.Collateral)
if err != nil {
panic(err)
}
sdkError := k.bankKeeper.SendCoinsFromAccountToModule(ctx, borrower, types.ModuleName, collateral)
if sdkError != nil{
return nil, sdkError
}
k.AppendLoan(ctx, loan)
return &types.MsgRequestLoanResponse{}, nil
}
27 changes: 27 additions & 0 deletions x/loan/types/message_request_loan.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package types

import (
"strconv"

errorsmod "cosmossdk.io/errors"
sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
Expand All @@ -23,5 +25,30 @@ func (msg *MsgRequestLoan) ValidateBasic() error {
if err != nil {
return errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err)
}
amount, _ := sdk.ParseCoinsNormalized(msg.Amount)
if !amount.IsValid(){
return errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "amount is not a valid Coins object")
}
if amount.Empty(){
return errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "amount is empty")
}
fee, _ := sdk.ParseCoinsNormalized(msg.Fee)
if !fee.IsValid(){
return errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "fee is not a valid Coins object")
}
deadline, err := strconv.ParseInt(msg.Deadline, 10, 64)
if err != nil{
return errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "deadline is not an integer")
}
if deadline <= 0{
return errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "deadline should be positive integer")
}
collateral, _ := sdk.ParseCoinsNormalized(msg.Collateral)
if !collateral.IsValid(){
return errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "collateral is not a valid Coins object")
}
if collateral.Empty(){
return errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "collateral is empty")
}
return nil
}

0 comments on commit 44c0cba

Please sign in to comment.