Implement genesis import and export keepers
This commit is contained in:
parent
75737915ab
commit
00d821538f
@ -1,80 +1,99 @@
|
||||
package keeper
|
||||
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
|
||||
"git.vdb.to/cerc-io/laconic2d/x/registry"
|
||||
)
|
||||
|
||||
// InitGenesis initializes the module state from a genesis state.
|
||||
func (k *Keeper) InitGenesis(ctx context.Context, data *registry.GenesisState) error {
|
||||
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 {
|
||||
// keeper.PutRecord(ctx, record)
|
||||
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 {
|
||||
// panic(err)
|
||||
// }
|
||||
// Add to record expiry queue if expiry time is in the future.
|
||||
expiryTime, err := time.Parse(time.RFC3339, record.ExpiryTime)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
// if expiryTime.After(ctx.BlockTime()) {
|
||||
// keeper.InsertRecordExpiryQueue(ctx, record)
|
||||
// }
|
||||
if expiryTime.After(ctx.BlockTime()) {
|
||||
// TODO
|
||||
// k.InsertRecordExpiryQueue(ctx, record)
|
||||
}
|
||||
}
|
||||
|
||||
// // Note: Bond genesis runs first, so bonds will already be present.
|
||||
// if record.BondId != "" {
|
||||
// keeper.AddBondToRecordIndexEntry(ctx, record.BondId, record.Id)
|
||||
// }
|
||||
// }
|
||||
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
|
||||
}
|
||||
|
||||
// for _, authority := range data.Authorities {
|
||||
// // Only import authorities that are marked active.
|
||||
// if authority.Entry.Status == types.AuthorityActive {
|
||||
// keeper.SetNameAuthority(ctx, authority.Name, authority.Entry)
|
||||
// TODO
|
||||
// Add authority name to expiry queue.
|
||||
// k.InsertAuthorityExpiryQueue(ctx, authority.Name, authority.Entry.ExpiryTime)
|
||||
|
||||
// // Add authority name to expiry queue.
|
||||
// keeper.InsertAuthorityExpiryQueue(ctx, authority.Name, authority.Entry.ExpiryTime)
|
||||
|
||||
// // Note: Bond genesis runs first, so bonds will already be present.
|
||||
// TODO
|
||||
// Note: Bond genesis runs first, so bonds will already be present.
|
||||
// if authority.Entry.BondId != "" {
|
||||
// keeper.AddBondToAuthorityIndexEntry(ctx, authority.Entry.BondId, authority.Name)
|
||||
// }
|
||||
// }
|
||||
// k.AddBondToAuthorityIndexEntry(ctx, authority.Entry.BondId, authority.Name)
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
// for _, nameEntry := range data.Names {
|
||||
// keeper.SetNameRecord(ctx, nameEntry.Name, nameEntry.Entry.Latest.Id)
|
||||
// }
|
||||
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 context.Context) (*registry.GenesisState, error) {
|
||||
func (k *Keeper) ExportGenesis(ctx sdk.Context) (*registry.GenesisState, error) {
|
||||
params, err := k.Params.Get(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// records := keeper.ListRecords(ctx)
|
||||
records, err := k.ListRecords(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// authorities := keeper.ListNameAuthorityRecords(ctx)
|
||||
// authorityEntries := []types.AuthorityEntry{}
|
||||
// // #nosec G705
|
||||
// for name, record := range authorities {
|
||||
// authorityEntries = append(authorityEntries, types.AuthorityEntry{
|
||||
// Name: name,
|
||||
// Entry: &record, //nolint: all
|
||||
// }) // #nosec G601
|
||||
// }
|
||||
authorities, err := k.ListNameAuthorityRecords(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// names := keeper.ListNameRecords(ctx)
|
||||
authorityEntries := []registry.AuthorityEntry{}
|
||||
// #nosec G705
|
||||
for name, record := range authorities {
|
||||
authorityEntries = append(authorityEntries, registry.AuthorityEntry{
|
||||
Name: name,
|
||||
Entry: &record, //nolint: all
|
||||
}) // #nosec G601
|
||||
}
|
||||
|
||||
names, err := k.ListNameRecords(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return ®istry.GenesisState{
|
||||
Params: params,
|
||||
Records: records,
|
||||
Authorities: authorityEntries,
|
||||
Names: names,
|
||||
}, nil
|
||||
}
|
||||
|
@ -39,6 +39,21 @@ func (k Keeper) GetNameAuthority(ctx sdk.Context, name string) (registrytypes.Na
|
||||
return authority, nil
|
||||
}
|
||||
|
||||
// ListNameAuthorityRecords - get all name authority records.
|
||||
func (k Keeper) ListNameAuthorityRecords(ctx sdk.Context) (map[string]registrytypes.NameAuthority, error) {
|
||||
nameAuthorityRecords := make(map[string]registrytypes.NameAuthority)
|
||||
|
||||
err := k.Authorities.Walk(ctx, nil, func(key string, value registrytypes.NameAuthority) (bool, error) {
|
||||
nameAuthorityRecords[key] = value
|
||||
return false, nil
|
||||
})
|
||||
if err != nil {
|
||||
return map[string]registrytypes.NameAuthority{}, err
|
||||
}
|
||||
|
||||
return nameAuthorityRecords, nil
|
||||
}
|
||||
|
||||
// HasNameRecord - checks if a name record exists.
|
||||
func (k Keeper) HasNameRecord(ctx sdk.Context, crn string) (bool, error) {
|
||||
return k.NameRecords.Has(ctx, crn)
|
||||
|
Loading…
Reference in New Issue
Block a user