Add a query to list authorities #42
@ -67,20 +67,11 @@ func (k *Keeper) ExportGenesis(ctx sdk.Context) (*registry.GenesisState, error)
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
authorities, err := k.ListNameAuthorityRecords(ctx)
|
authorityEntries, err := k.ListNameAuthorityRecords(ctx, "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
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)
|
names, err := k.ListNameRecords(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -41,19 +41,30 @@ func (k Keeper) GetNameAuthority(ctx sdk.Context, name string) (registrytypes.Na
|
|||||||
return authority, nil
|
return authority, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// ListNameAuthorityRecords - get all name authority records.
|
// ListNameAuthorityRecords - get all name authority records for given owner
|
||||||
func (k Keeper) ListNameAuthorityRecords(ctx sdk.Context) (map[string]registrytypes.NameAuthority, error) {
|
// Returns all authorities if owner set to ""
|
||||||
nameAuthorityRecords := make(map[string]registrytypes.NameAuthority)
|
func (k Keeper) ListNameAuthorityRecords(ctx sdk.Context, owner string) ([]registrytypes.AuthorityEntry, error) {
|
||||||
|
authorityEntries := []registrytypes.AuthorityEntry{}
|
||||||
|
|
||||||
err := k.Authorities.Walk(ctx, nil, func(key string, value registrytypes.NameAuthority) (bool, error) {
|
err := k.Authorities.Walk(ctx, nil, func(key string, value registrytypes.NameAuthority) (bool, error) {
|
||||||
nameAuthorityRecords[key] = value
|
// If owner is not empty, skip if authority is not owned by owner
|
||||||
|
if owner != "" && owner != value.OwnerAddress {
|
||||||
|
return false, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
authorityEntries = append(authorityEntries, registrytypes.AuthorityEntry{
|
||||||
|
Name: key,
|
||||||
|
Entry: &value,
|
||||||
|
})
|
||||||
|
|
||||||
|
// Continue the walk
|
||||||
return false, nil
|
return false, nil
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return map[string]registrytypes.NameAuthority{}, err
|
return []registrytypes.AuthorityEntry{}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return nameAuthorityRecords, nil
|
return authorityEntries, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// HasNameRecord - checks if a name record exists.
|
// HasNameRecord - checks if a name record exists.
|
||||||
|
@ -112,10 +112,10 @@ func (qs queryServer) NameRecords(c context.Context, _ *registrytypes.QueryNameR
|
|||||||
return ®istrytypes.QueryNameRecordsResponse{Names: nameRecords}, nil
|
return ®istrytypes.QueryNameRecordsResponse{Names: nameRecords}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (qs queryServer) Whois(c context.Context, request *registrytypes.QueryWhoisRequest) (*registrytypes.QueryWhoisResponse, error) {
|
func (qs queryServer) Whois(c context.Context, req *registrytypes.QueryWhoisRequest) (*registrytypes.QueryWhoisResponse, error) {
|
||||||
ctx := sdk.UnwrapSDKContext(c)
|
ctx := sdk.UnwrapSDKContext(c)
|
||||||
|
|
||||||
nameAuthority, err := qs.k.GetNameAuthority(ctx, request.GetName())
|
nameAuthority, err := qs.k.GetNameAuthority(ctx, req.GetName())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -123,6 +123,17 @@ func (qs queryServer) Whois(c context.Context, request *registrytypes.QueryWhois
|
|||||||
return ®istrytypes.QueryWhoisResponse{NameAuthority: nameAuthority}, nil
|
return ®istrytypes.QueryWhoisResponse{NameAuthority: nameAuthority}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (qs queryServer) Authorities(c context.Context, req *registrytypes.QueryAuthoritiesRequest) (*registrytypes.QueryAuthoritiesResponse, error) {
|
||||||
|
ctx := sdk.UnwrapSDKContext(c)
|
||||||
|
|
||||||
|
authorityEntries, err := qs.k.ListNameAuthorityRecords(ctx, req.GetOwner())
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ®istrytypes.QueryAuthoritiesResponse{Authorities: authorityEntries}, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (qs queryServer) LookupLrn(c context.Context, req *registrytypes.QueryLookupLrnRequest) (*registrytypes.QueryLookupLrnResponse, error) {
|
func (qs queryServer) LookupLrn(c context.Context, req *registrytypes.QueryLookupLrnRequest) (*registrytypes.QueryLookupLrnResponse, error) {
|
||||||
ctx := sdk.UnwrapSDKContext(c)
|
ctx := sdk.UnwrapSDKContext(c)
|
||||||
lrn := req.GetLrn()
|
lrn := req.GetLrn()
|
||||||
|
@ -51,6 +51,14 @@ func (am AppModule) AutoCLIOptions() *autocliv1.ModuleOptions {
|
|||||||
{ProtoField: "name"},
|
{ProtoField: "name"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
RpcMethod: "Authorities",
|
||||||
|
Use: "list-authorities [owner]",
|
||||||
|
Short: "List authorities (optionally by owner)",
|
||||||
|
PositionalArgs: []*autocliv1.PositionalArgDescriptor{
|
||||||
|
{ProtoField: "owner", Optional: true},
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
RpcMethod: "NameRecords",
|
RpcMethod: "NameRecords",
|
||||||
Use: "names",
|
Use: "names",
|
||||||
|
Loading…
Reference in New Issue
Block a user