forked from JackalLabs/canine-chain
/
msg_server_feeds.go
70 lines (54 loc) · 1.55 KB
/
msg_server_feeds.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package keeper
import (
"context"
"fmt"
"github.com/MonikaCat/canine-chain/v2/x/oracle/types"
sdk "github.com/cosmos/cosmos-sdk/types"
)
func (k msgServer) CreateFeed(goCtx context.Context, msg *types.MsgCreateFeed) (*types.MsgCreateFeedResponse, error) {
ctx := sdk.UnwrapSDKContext(goCtx)
_, found := k.GetFeed(ctx, msg.Name)
if found {
return nil, fmt.Errorf("cannot overwrite feed, name exists")
}
feed := types.Feed{
Owner: msg.Creator,
Data: "",
LastUpdate: ctx.BlockTime(),
Name: msg.Name,
}
add, err := sdk.AccAddressFromBech32(msg.Creator)
if err != nil {
return nil, err
}
c := sdk.NewInt64Coin("ujkl", 100*1000000)
cs := sdk.NewCoins(c)
err = k.bankKeeper.SendCoinsFromAccountToModule(ctx, add, types.ModuleName, cs)
if err != nil {
return nil, err
}
depo, err := sdk.AccAddressFromBech32(k.GetParams(ctx).Deposit)
if err != nil {
return nil, err
}
err = k.bankKeeper.SendCoinsFromModuleToAccount(ctx, types.ModuleName, depo, cs)
if err != nil {
return nil, err
}
k.SetFeed(ctx, feed)
return &types.MsgCreateFeedResponse{}, nil
}
func (k msgServer) UpdateFeed(goCtx context.Context, msg *types.MsgUpdateFeed) (*types.MsgUpdateFeedResponse, error) {
ctx := sdk.UnwrapSDKContext(goCtx)
feed, found := k.GetFeed(ctx, msg.Name)
if !found {
return nil, fmt.Errorf("cannot find feed")
}
if feed.Owner != msg.Creator {
return nil, fmt.Errorf("you do not own this feed")
}
feed.Data = msg.Data
feed.LastUpdate = ctx.BlockTime()
k.SetFeed(ctx, feed)
return &types.MsgUpdateFeedResponse{}, nil
}