Skip to content

Commit 4b318ec

Browse files
committed
feat(projection-typeorm): store parent handle data in db
1 parent 58e84b0 commit 4b318ec

File tree

3 files changed

+335
-2
lines changed

3 files changed

+335
-2
lines changed

packages/projection-typeorm/src/operators/storeHandles.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ const getSupply = async (queryRunner: QueryRunner, assetId: Cardano.AssetId) =>
4848
export interface DefaultHandleParamsQueryResponse {
4949
handle: NonNullable<HandleEntity['handle']>;
5050
og: HandleMetadataEntity['og'];
51+
parent_handle_handle?: HandleEntity['handle'] | null;
5152
sameStakeCredential: boolean;
5253
samePaymentCredential: boolean;
5354
firstMintSlot: Cardano.Slot;
@@ -90,7 +91,7 @@ export const queryHandlesByAddressCredentials = (
9091
.leftJoin('handle_metadata', 'm', 'm.handle=h.handle')
9192
.innerJoin('asset', 'asset', 'asset.id=h.asset_id')
9293
.select(
93-
`h.handle, COALESCE(m.og, FALSE) as og,
94+
`h.handle, h.parent_handle_handle, COALESCE(m.og, FALSE) as og,
9495
asset.first_mint_block_slot as "firstMintSlot",
9596
COALESCE((input_address.stake_credential_hash=a.stake_credential_hash), FALSE) as "sameStakeCredential",
9697
(input_address.payment_credential_hash=a.payment_credential_hash) as "samePaymentCredential"`
@@ -173,7 +174,7 @@ const getDefaultInWalletAndUpdateOtherHandles = async (
173174
const rollForward = async ({ handles, queryRunner, handleMetadata }: HandleEventParams) => {
174175
const handleRepository = queryRunner.manager.getRepository(HandleEntity);
175176

176-
for (const { assetId, handle, policyId, latestOwnerAddress, datum, totalSupply } of handles) {
177+
for (const { assetId, handle, policyId, latestOwnerAddress, datum, totalSupply, parentHandle } of handles) {
177178
if (totalSupply === 1n) {
178179
// if !address then it's burning it, otherwise transferring
179180
const { cardanoAddress, hasDatum } = latestOwnerAddress
@@ -189,6 +190,7 @@ const rollForward = async ({ handles, queryRunner, handleMetadata }: HandleEvent
189190
cardanoAddress,
190191
handle,
191192
hasDatum,
193+
parentHandle,
192194
policyId,
193195
...defaultInWallet
194196
},

packages/projection-typeorm/test/operators/storeHandles/default.test.ts

+9
Original file line numberDiff line numberDiff line change
@@ -257,27 +257,31 @@ describe('storeHandles', () => {
257257
firstMintSlot: block.slot,
258258
handle: 'sameaddress',
259259
og: false,
260+
parent_handle_handle: null,
260261
samePaymentCredential: true,
261262
sameStakeCredential: false
262263
},
263264
{
264265
firstMintSlot: block.slot,
265266
handle: 'samepayment',
266267
og: false,
268+
parent_handle_handle: null,
267269
samePaymentCredential: true,
268270
sameStakeCredential: false
269271
},
270272
{
271273
firstMintSlot: block.slot,
272274
handle: 'samepayment2',
273275
og: false,
276+
parent_handle_handle: null,
274277
samePaymentCredential: true,
275278
sameStakeCredential: false
276279
},
277280
{
278281
firstMintSlot: block.slot,
279282
handle: 'samepaymententerprise',
280283
og: false,
284+
parent_handle_handle: null,
281285
samePaymentCredential: true,
282286
sameStakeCredential: false
283287
}
@@ -294,34 +298,39 @@ describe('storeHandles', () => {
294298
firstMintSlot: block.slot,
295299
handle: 'sameaddress',
296300
og: false,
301+
parent_handle_handle: null,
297302
samePaymentCredential: true,
298303
sameStakeCredential: true
299304
},
300305
{
301306
firstMintSlot: block.slot,
302307
handle: 'samepayment',
303308
og: false,
309+
parent_handle_handle: null,
304310
samePaymentCredential: true,
305311
sameStakeCredential: false
306312
},
307313
{
308314
firstMintSlot: block.slot,
309315
handle: 'samepayment2',
310316
og: false,
317+
parent_handle_handle: null,
311318
samePaymentCredential: true,
312319
sameStakeCredential: false
313320
},
314321
{
315322
firstMintSlot: block.slot,
316323
handle: 'samepaymententerprise',
317324
og: false,
325+
parent_handle_handle: null,
318326
samePaymentCredential: true,
319327
sameStakeCredential: false
320328
},
321329
{
322330
firstMintSlot: block.slot,
323331
handle: 'samestake',
324332
og: true,
333+
parent_handle_handle: null,
325334
samePaymentCredential: false,
326335
sameStakeCredential: true
327336
}

0 commit comments

Comments
 (0)