Skip to content

Commit 5630644

Browse files
authored
feat(api): add parent_refs field to inscription responses (#436)
* fix: parent refs * parent refs array
1 parent a7073da commit 5630644

File tree

6 files changed

+50
-33
lines changed

6 files changed

+50
-33
lines changed

api/ordinals/src/api/schemas.ts

+13-11
Original file line numberDiff line numberDiff line change
@@ -316,19 +316,21 @@ export const InscriptionResponse = Type.Object(
316316
timestamp: Type.Integer({ examples: [1677733170000] }),
317317
curse_type: Nullable(Type.String({ examples: ['p2wsh'] })),
318318
recursive: Type.Boolean({ examples: [true] }),
319-
recursion_refs: Nullable(
320-
Type.Array(
321-
Type.String({
322-
examples: [
323-
'1463d48e9248159084929294f64bda04487503d30ce7ab58365df1dc6fd58218i0',
324-
'541076e29e1b63460412d3087b37130c9a14abd0beeb4e9b2b805d2072c84dedi0',
325-
],
326-
})
327-
)
319+
recursion_refs: Type.Array(
320+
Type.String({
321+
examples: [
322+
'1463d48e9248159084929294f64bda04487503d30ce7ab58365df1dc6fd58218i0',
323+
'541076e29e1b63460412d3087b37130c9a14abd0beeb4e9b2b805d2072c84dedi0',
324+
],
325+
})
328326
),
329-
parent: Nullable(
327+
parent: Type.Null(), // Deprecated
328+
parent_refs: Type.Array(
330329
Type.String({
331-
examples: ['1463d48e9248159084929294f64bda04487503d30ce7ab58365df1dc6fd58218i0'],
330+
examples: [
331+
'1463d48e9248159084929294f64bda04487503d30ce7ab58365df1dc6fd58218i0',
332+
'541076e29e1b63460412d3087b37130c9a14abd0beeb4e9b2b805d2072c84dedi0',
333+
],
332334
})
333335
),
334336
delegate: Nullable(

api/ordinals/src/api/util/helpers.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,9 @@ export function parseDbInscriptions(
8989
timestamp: parseTimestamp(i.timestamp),
9090
curse_type: i.curse_type,
9191
recursive: i.recursive,
92-
recursion_refs: i.recursion_refs?.split(',') ?? null,
93-
parent: i.parent,
92+
recursion_refs: i.recursion_refs?.split(',') ?? [],
93+
parent: null,
94+
parent_refs: i.parent_refs?.split(',') ?? [],
9495
metadata: i.metadata ? JSON.parse(i.metadata) : null,
9596
delegate: i.delegate ?? null,
9697
meta_protocol: i.metaprotocol ?? null,

api/ordinals/src/pg/pg-store.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -175,8 +175,7 @@ export class PgStore extends BasePgStore {
175175
SELECT ip.parent_inscription_id
176176
FROM inscription_parents AS ip
177177
WHERE ip.inscription_id = i.inscription_id
178-
LIMIT 1
179-
) AS parent,
178+
) AS parent_refs,
180179
i.metadata,
181180
s.rarity AS sat_rarity,
182181
s.coinbase_height AS sat_coinbase_height,

api/ordinals/src/pg/types.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ export type DbFullyLocatedInscriptionResult = {
3131
curse_type: string | null;
3232
recursive: boolean;
3333
recursion_refs: string | null;
34-
parent: string | null;
34+
parent_refs: string | null;
3535
metadata: string | null;
3636
input_index: number;
3737
pointer: number | null;

api/ordinals/tests/api/inscriptions.test.ts

+28-15
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,9 @@ describe('/inscriptions', () => {
9494
genesis_tx_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dc',
9595
curse_type: null,
9696
recursive: false,
97-
recursion_refs: null,
97+
recursion_refs: [],
9898
parent: null,
99+
parent_refs: [],
99100
metadata: null,
100101
meta_protocol: null,
101102
delegate: null,
@@ -200,6 +201,7 @@ describe('/inscriptions', () => {
200201
'b4b27b9a15f928b95a8ce4b418946553b7b313a345254cd9b23d79489175fa5ai0',
201202
],
202203
parent: null,
204+
parent_refs: [],
203205
metadata: null,
204206
meta_protocol: null,
205207
delegate: null,
@@ -299,9 +301,9 @@ describe('/inscriptions', () => {
299301
url: '/ordinals/v1/inscriptions/f351d86c6e6cae3c64e297e7463095732f216875bcc1f3c03f950a492bb25421i0',
300302
});
301303
expect(response.statusCode).toBe(200);
302-
expect(response.json().parent).toBe(
303-
'9f4a9b73b0713c5da01c0a47f97c6c001af9028d6bdd9e264dfacbc4e6790201i0'
304-
);
304+
expect(response.json().parent_refs).toStrictEqual([
305+
'9f4a9b73b0713c5da01c0a47f97c6c001af9028d6bdd9e264dfacbc4e6790201i0',
306+
]);
305307
});
306308

307309
test('shows inscription with metadata', async () => {
@@ -404,8 +406,9 @@ describe('/inscriptions', () => {
404406
genesis_tx_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dc',
405407
curse_type: null,
406408
recursive: false,
407-
recursion_refs: null,
409+
recursion_refs: [],
408410
parent: null,
411+
parent_refs: [],
409412
metadata: null,
410413
meta_protocol: null,
411414
delegate: null,
@@ -487,8 +490,9 @@ describe('/inscriptions', () => {
487490
genesis_tx_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dc',
488491
curse_type: '88',
489492
recursive: false,
490-
recursion_refs: null,
493+
recursion_refs: [],
491494
parent: null,
495+
parent_refs: [],
492496
metadata: null,
493497
meta_protocol: null,
494498
delegate: null,
@@ -597,8 +601,9 @@ describe('/inscriptions', () => {
597601
genesis_tx_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dc',
598602
curse_type: null,
599603
recursive: false,
600-
recursion_refs: null,
604+
recursion_refs: [],
601605
parent: null,
606+
parent_refs: [],
602607
metadata: null,
603608
meta_protocol: null,
604609
delegate: null,
@@ -655,8 +660,9 @@ describe('/inscriptions', () => {
655660
genesis_tx_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dc',
656661
curse_type: null,
657662
recursive: false,
658-
recursion_refs: null,
663+
recursion_refs: [],
659664
parent: null,
665+
parent_refs: [],
660666
metadata: null,
661667
meta_protocol: null,
662668
delegate: null,
@@ -769,8 +775,9 @@ describe('/inscriptions', () => {
769775
genesis_tx_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dc',
770776
curse_type: null,
771777
recursive: false,
772-
recursion_refs: null,
778+
recursion_refs: [],
773779
parent: null,
780+
parent_refs: [],
774781
metadata: null,
775782
meta_protocol: null,
776783
delegate: null,
@@ -863,8 +870,9 @@ describe('/inscriptions', () => {
863870
genesis_tx_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dc',
864871
curse_type: '{"tag":66}',
865872
recursive: false,
866-
recursion_refs: null,
873+
recursion_refs: [],
867874
parent: null,
875+
parent_refs: [],
868876
metadata: null,
869877
meta_protocol: null,
870878
delegate: null,
@@ -921,8 +929,9 @@ describe('/inscriptions', () => {
921929
genesis_tx_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dc',
922930
curse_type: '{"tag":66}',
923931
recursive: false,
924-
recursion_refs: null,
932+
recursion_refs: [],
925933
parent: null,
934+
parent_refs: [],
926935
metadata: null,
927936
meta_protocol: null,
928937
delegate: null,
@@ -1666,8 +1675,9 @@ describe('/inscriptions', () => {
16661675
genesis_tx_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dc',
16671676
curse_type: null,
16681677
recursive: false,
1669-
recursion_refs: null,
1678+
recursion_refs: [],
16701679
parent: null,
1680+
parent_refs: [],
16711681
metadata: null,
16721682
meta_protocol: null,
16731683
delegate: null,
@@ -1697,8 +1707,9 @@ describe('/inscriptions', () => {
16971707
genesis_tx_id: '9f4a9b73b0713c5da01c0a47f97c6c001af9028d6bdd9e264dfacbc4e6790201',
16981708
curse_type: null,
16991709
recursive: false,
1700-
recursion_refs: null,
1710+
recursion_refs: [],
17011711
parent: null,
1712+
parent_refs: [],
17021713
metadata: null,
17031714
meta_protocol: null,
17041715
delegate: null,
@@ -1808,8 +1819,9 @@ describe('/inscriptions', () => {
18081819
genesis_tx_id: '9f4a9b73b0713c5da01c0a47f97c6c001af9028d6bdd9e264dfacbc4e6790201',
18091820
curse_type: null,
18101821
recursive: false,
1811-
recursion_refs: null,
1822+
recursion_refs: [],
18121823
parent: null,
1824+
parent_refs: [],
18131825
metadata: null,
18141826
meta_protocol: null,
18151827
delegate: null,
@@ -1849,8 +1861,9 @@ describe('/inscriptions', () => {
18491861
genesis_tx_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dc',
18501862
curse_type: null,
18511863
recursive: false,
1852-
recursion_refs: null,
1864+
recursion_refs: [],
18531865
parent: null,
1866+
parent_refs: [],
18541867
metadata: null,
18551868
meta_protocol: null,
18561869
delegate: null,

api/ordinals/tests/api/sats.test.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -217,8 +217,9 @@ describe('/sats', () => {
217217
value: '10000',
218218
curse_type: 'p2wsh',
219219
recursive: false,
220-
recursion_refs: null,
220+
recursion_refs: [],
221221
parent: null,
222+
parent_refs: [],
222223
metadata: null,
223224
meta_protocol: null,
224225
delegate: null,
@@ -249,8 +250,9 @@ describe('/sats', () => {
249250
value: '10000',
250251
curse_type: 'p2wsh',
251252
recursive: false,
252-
recursion_refs: null,
253+
recursion_refs: [],
253254
parent: null,
255+
parent_refs: [],
254256
metadata: null,
255257
meta_protocol: null,
256258
delegate: null,

0 commit comments

Comments
 (0)