Skip to content

Commit a791083

Browse files
committed
fix(cardano-services): correct mapping of chain history redeemer purpose
1 parent 6b9fef1 commit a791083

File tree

3 files changed

+28
-7
lines changed

3 files changed

+28
-7
lines changed

packages/cardano-services/src/ChainHistory/DbSyncChainHistory/mappers.ts

+17-1
Original file line numberDiff line numberDiff line change
@@ -105,14 +105,30 @@ export const mapWithdrawal = (withdrawalModel: WithdrawalModel): Cardano.Withdra
105105
// Remove this and select the actual redeemer data from `redeemer_data` table.
106106
const stubRedeemerData = Buffer.from('not implemented');
107107

108+
const mapRedeemerPurpose = (purpose: string): Cardano.RedeemerPurpose => {
109+
switch (purpose) {
110+
case 'cert':
111+
return Cardano.RedeemerPurpose.certificate;
112+
case 'mint':
113+
return Cardano.RedeemerPurpose.mint;
114+
case 'spend':
115+
return Cardano.RedeemerPurpose.spend;
116+
case 'reward':
117+
return Cardano.RedeemerPurpose.withdrawal;
118+
default:
119+
// TODO: find what value it can be
120+
return Cardano.RedeemerPurpose.delegateRepresentative;
121+
}
122+
};
123+
108124
export const mapRedeemer = (redeemerModel: RedeemerModel): Cardano.Redeemer => ({
109125
data: stubRedeemerData,
110126
executionUnits: {
111127
memory: Number(redeemerModel.unit_mem),
112128
steps: Number(redeemerModel.unit_steps)
113129
},
114130
index: redeemerModel.index,
115-
purpose: redeemerModel.purpose as Cardano.RedeemerPurpose
131+
purpose: mapRedeemerPurpose(redeemerModel.purpose)
116132
});
117133

118134
export const mapCertificate = (

packages/cardano-services/src/ChainHistory/openApi.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -361,7 +361,8 @@
361361
"spend",
362362
"mint",
363363
"certificate",
364-
"withdrawal"
364+
"withdrawal",
365+
"representative"
365366
]
366367
},
367368
"data": {

packages/cardano-services/test/ChainHistory/DbSyncChainHistoryProvider/mappers.test.ts

+9-5
Original file line numberDiff line numberDiff line change
@@ -294,24 +294,28 @@ describe('chain history mappers', () => {
294294
});
295295
});
296296
describe('mapRedeemer', () => {
297-
const redeemerModel: RedeemerModel = {
297+
const redeemerModel: Omit<RedeemerModel, 'purpose'> = {
298298
index: 1,
299-
purpose: 'mint',
300299
script_hash: Buffer.from(hash28ByteBase16, 'hex'),
301300
tx_id: Buffer.from(transactionHash, 'hex'),
302301
unit_mem: '2000',
303302
unit_steps: '5000'
304303
};
305-
test('map RedeemerModel to Cardano.Redeemer', () => {
306-
const result = mappers.mapRedeemer(redeemerModel);
304+
test.each([
305+
['spend', Cardano.RedeemerPurpose.spend],
306+
['mint', Cardano.RedeemerPurpose.mint],
307+
['cert', Cardano.RedeemerPurpose.certificate],
308+
['reward', Cardano.RedeemerPurpose.withdrawal]
309+
])("maps '%p' redeemer", (dbSyncRedeemerPurpose, sdkRedeemerPurpose) => {
310+
const result = mappers.mapRedeemer({ ...redeemerModel, purpose: dbSyncRedeemerPurpose });
307311
expect(result).toEqual<Cardano.Redeemer>({
308312
data: Buffer.from('not implemented'),
309313
executionUnits: {
310314
memory: 2000,
311315
steps: 5000
312316
},
313317
index: 1,
314-
purpose: Cardano.RedeemerPurpose.mint
318+
purpose: sdkRedeemerPurpose
315319
});
316320
});
317321
});

0 commit comments

Comments
 (0)