forked from cerc-io/laconicd
Prathamesh Musale
ec6e2f3776
Part of [Add a CLI query to list all authorities with owner filter](cerc-io/laconicd#41) Usage: ```bash $ laconicd query registry list-authorities -h List authorities (optionally by owner) Usage: laconicd query registry list-authorities [flags] Flags: --grpc-addr string the gRPC endpoint to use for this chain --grpc-insecure allow gRPC over insecure channels, if not the server must use TLS --height int Use a specific height to query state at (this can error if the node is pruning state) -h, --help help for list-authorities --no-indent Do not indent JSON output --node string <host>:<port> to CometBFT RPC interface for this chain (default "tcp://localhost:26657") -o, --output string Output format (text|json) (default "text") --owner string Owner to get the authorities for ``` Example: ```bash # Without owner filter $ laconicd query registry list-authorities authorities: - entry: expiry_time: "2024-07-26T06:54:28.491158167Z" height: "247" owner_address: laconic1e23vfttpvk045pqeydr4mujmlemx8hf9zjm7h2 owner_public_key: A6RlTGLIpyA8nnEQN4V3sz3uaLMY0fHtB7aS7u1zTOdD status: active name: cerc - entry: expiry_time: "2024-07-26T06:47:58.971429925Z" height: "118" owner_address: laconic10ztdu07xn7rracvzvehelgwvsytqlrvj6pvput owner_public_key: AvBxGIXBFmWCF+OHFwydqEtp2bfP+aimObO3teunbve7 status: active name: laconic # With owner filter $ laconicd query registry list-authorities --owner laconic1e23vfttpvk045pqeydr4mujmlemx8hf9zjm7h2 authorities: - entry: expiry_time: "2024-07-26T06:54:28.491158167Z" height: "247" owner_address: laconic1e23vfttpvk045pqeydr4mujmlemx8hf9zjm7h2 owner_public_key: A6RlTGLIpyA8nnEQN4V3sz3uaLMY0fHtB7aS7u1zTOdD status: active name: cerc ``` Reviewed-on: cerc-io/laconicd#42 Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com> Co-committed-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
87 lines
1.9 KiB
Go
87 lines
1.9 KiB
Go
package keeper
|
|
|
|
import (
|
|
"time"
|
|
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
|
|
"git.vdb.to/cerc-io/laconicd/x/registry"
|
|
)
|
|
|
|
// InitGenesis initializes the module state from a genesis state.
|
|
func (k *Keeper) InitGenesis(ctx sdk.Context, data *registry.GenesisState) error {
|
|
if err := k.Params.Set(ctx, data.Params); err != nil {
|
|
return err
|
|
}
|
|
|
|
for _, record := range data.Records {
|
|
if err := k.SaveRecord(ctx, record); err != nil {
|
|
return err
|
|
}
|
|
|
|
// Add to record expiry queue if expiry time is in the future.
|
|
expiryTime, err := time.Parse(time.RFC3339, record.ExpiryTime)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if expiryTime.After(ctx.BlockTime()) {
|
|
if err := k.insertRecordExpiryQueue(ctx, record); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
}
|
|
|
|
for _, authority := range data.Authorities {
|
|
// Only import authorities that are marked active.
|
|
if authority.Entry.Status == registry.AuthorityActive {
|
|
if err := k.SaveNameAuthority(ctx, authority.Name, authority.Entry); err != nil {
|
|
return err
|
|
}
|
|
|
|
// Add authority name to expiry queue.
|
|
if err := k.insertAuthorityExpiryQueue(ctx, authority.Name, authority.Entry.ExpiryTime); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
}
|
|
|
|
for _, nameEntry := range data.Names {
|
|
if err := k.SaveNameRecord(ctx, nameEntry.Name, nameEntry.Entry.Latest.Id); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
// ExportGenesis exports the module state to a genesis state.
|
|
func (k *Keeper) ExportGenesis(ctx sdk.Context) (*registry.GenesisState, error) {
|
|
params, err := k.Params.Get(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
records, err := k.ListRecords(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
authorityEntries, err := k.ListNameAuthorityRecords(ctx, "")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
names, err := k.ListNameRecords(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return ®istry.GenesisState{
|
|
Params: params,
|
|
Records: records,
|
|
Authorities: authorityEntries,
|
|
Names: names,
|
|
}, nil
|
|
}
|