Skip to content

Commit 24f9a62

Browse files
committed
fix: refactored nodes claims get to use seek order and limit for basic pagination
1 parent 09c5859 commit 24f9a62

File tree

5 files changed

+26
-10
lines changed

5 files changed

+26
-10
lines changed

src/nodes/NodeManager.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1224,7 +1224,7 @@ class NodeManager {
12241224
const claims: Record<ClaimId, SignedClaim> = {};
12251225
const client = connection.getClient();
12261226
for await (const agentClaim of await client.methods.nodesClaimsGet({
1227-
claimIdEncoded:
1227+
seek:
12281228
claimId != null
12291229
? claimsUtils.encodeClaimId(claimId)
12301230
: ('' as ClaimIdEncoded),

src/nodes/agent/handlers/NodesAuditsGet.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ import type {
99
AgentAuditMessage,
1010
} from '../types';
1111
import type Audit from '../../../audit/Audit';
12-
import type { AuditEventIdEncoded, AuditEventId} from '../../../ids/types';
1312
import { ServerHandler } from '@matrixai/rpc';
13+
import * as auditUtils from '../../../audit/utils'
1414

1515
/**
1616
* Gets audit events from a node
@@ -46,7 +46,7 @@ class NodesAuditEventsGet extends ServerHandler<
4646
)) {
4747
ctx.signal.throwIfAborted();
4848
yield {
49-
auditIdEncoded: auditEvent.id.toString() as AuditEventIdEncoded,
49+
auditIdEncoded: auditUtils.encodeAuditEventId(auditEvent.id)
5050
};
5151
}
5252
});

src/nodes/agent/handlers/NodesClaimsGet.ts

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@ import type Sigchain from '../../../sigchain/Sigchain';
55
import type {
66
AgentRPCRequestParams,
77
AgentRPCResponseResult,
8-
ClaimIdMessage,
98
AgentClaimMessage,
9+
NodesClaimsGetMessage,
1010
} from '../types';
1111
import { ServerHandler } from '@matrixai/rpc';
1212
import * as claimsUtils from '../../../claims/utils';
13+
import * as ids from '../../../ids';
14+
1315

1416
/**
1517
* Gets the sigchain claims of a node
@@ -19,21 +21,29 @@ class NodesClaimsGet extends ServerHandler<
1921
sigchain: Sigchain;
2022
db: DB;
2123
},
22-
AgentRPCRequestParams<ClaimIdMessage>,
24+
AgentRPCRequestParams<NodesClaimsGetMessage>,
2325
AgentRPCResponseResult<AgentClaimMessage>
2426
> {
2527
public handle = async function* (
26-
_input: ClaimIdMessage,
28+
input: NodesClaimsGetMessage,
2729
_cancel: (reason?: any) => void,
2830
_meta: Record<string, JSONValue> | undefined,
2931
ctx: ContextTimed,
3032
): AsyncGenerator<AgentRPCResponseResult<AgentClaimMessage>> {
33+
const { seek, order, limit } = input;
3134
const { sigchain, db }: { sigchain: Sigchain; db: DB } = this.container;
35+
36+
const decodedClaimId = ids.decodeClaimId(seek);
37+
3238
yield* db.withTransactionG(async function* (tran): AsyncGenerator<
3339
AgentRPCResponseResult<AgentClaimMessage>
3440
> {
3541
for await (const [claimId, signedClaim] of sigchain.getSignedClaims(
36-
{ order: 'asc' },
42+
{
43+
seek: decodedClaimId,
44+
order: order,
45+
limit: limit,
46+
},
3747
tran,
3848
)) {
3949
ctx.signal.throwIfAborted();

src/nodes/agent/types.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,17 @@ type AuditIdMessage = {
3232

3333
type AgentAuditMessage = Partial<AuditIdMessage> & {};
3434

35+
type NodesClaimsGetMessage = {
36+
seek?: ClaimIdEncoded | number;
37+
order?: 'asc' | 'desc';
38+
limit?: number;
39+
}
40+
3541
type ClaimIdMessage = {
3642
claimIdEncoded: ClaimIdEncoded;
3743
};
3844

45+
3946
type AgentClaimMessage = Partial<ClaimIdMessage> & {
4047
signedTokenEncoded: SignedTokenEncoded;
4148
};
@@ -98,6 +105,7 @@ export type {
98105
AgentRPCResponseResult,
99106
AuditIdMessage,
100107
AgentAuditMessage,
108+
NodesClaimsGetMessage,
101109
ClaimIdMessage,
102110
AgentClaimMessage,
103111
NodeIdMessage,

tests/nodes/agent/handlers/nodesClaimsGet.test.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -189,9 +189,7 @@ describe('nodesClaimsGet', () => {
189189
await sigchain.addClaim(identityLink);
190190
}
191191

192-
const response = await rpcClient.methods.nodesClaimsGet({
193-
claimIdEncoded: '' as ClaimIdEncoded,
194-
});
192+
const response = await rpcClient.methods.nodesClaimsGet({});
195193
const chainIds: Array<string> = [];
196194
for await (const claim of response) {
197195
chainIds.push(claim.claimIdEncoded ?? '');

0 commit comments

Comments
 (0)