Support fetch all OpenOrders accounts for a given owner, program id

This commit is contained in:
Nishad 2020-09-07 18:34:42 +08:00
parent 9d8271e12f
commit 3688910c2a
1 changed files with 26 additions and 0 deletions

View File

@ -860,6 +860,32 @@ export class OpenOrders {
return OPEN_ORDERS_LAYOUT;
}
static async findForOwner(
connection: Connection,
ownerAddress: PublicKey,
programId: PublicKey,
) {
const filters = [
{
memcmp: {
offset: OPEN_ORDERS_LAYOUT.offsetOf('owner'),
bytes: ownerAddress.toBase58(),
},
},
{
dataSize: OPEN_ORDERS_LAYOUT.span,
},
];
const accounts = await getFilteredProgramAccounts(
connection,
programId,
filters,
);
return accounts.map(({ publicKey, accountInfo }) =>
OpenOrders.fromAccountInfo(publicKey, accountInfo, programId),
);
}
static async findForMarketAndOwner(
connection: Connection,
marketAddress: PublicKey,