@bsv/overlay 0.1.8 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/dist/cjs/package.json +2 -2
  2. package/dist/cjs/src/Engine.js +152 -492
  3. package/dist/cjs/src/Engine.js.map +1 -1
  4. package/dist/cjs/src/GASP/OverlayGASPRemote.js +6 -4
  5. package/dist/cjs/src/GASP/OverlayGASPRemote.js.map +1 -1
  6. package/dist/cjs/src/GASP/OverlayGASPStorage.js +152 -77
  7. package/dist/cjs/src/GASP/OverlayGASPStorage.js.map +1 -1
  8. package/dist/cjs/src/storage/knex/KnexStorage.js +106 -38
  9. package/dist/cjs/src/storage/knex/KnexStorage.js.map +1 -1
  10. package/dist/cjs/src/storage/knex/all-migrations.js +5 -1
  11. package/dist/cjs/src/storage/knex/all-migrations.js.map +1 -1
  12. package/dist/cjs/src/storage/knex/migrations/2024-07-17-001-transactions.js +39 -0
  13. package/dist/cjs/src/storage/knex/migrations/2024-07-17-001-transactions.js.map +1 -0
  14. package/dist/cjs/src/storage/knex/migrations/2024-07-18-001-indexes.js +34 -0
  15. package/dist/cjs/src/storage/knex/migrations/2024-07-18-001-indexes.js.map +1 -0
  16. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  17. package/dist/esm/src/Engine.js +150 -491
  18. package/dist/esm/src/Engine.js.map +1 -1
  19. package/dist/esm/src/GASP/OverlayGASPRemote.js +7 -4
  20. package/dist/esm/src/GASP/OverlayGASPRemote.js.map +1 -1
  21. package/dist/esm/src/GASP/OverlayGASPStorage.js +151 -77
  22. package/dist/esm/src/GASP/OverlayGASPStorage.js.map +1 -1
  23. package/dist/esm/src/storage/knex/KnexStorage.js +106 -38
  24. package/dist/esm/src/storage/knex/KnexStorage.js.map +1 -1
  25. package/dist/esm/src/storage/knex/all-migrations.js +5 -1
  26. package/dist/esm/src/storage/knex/all-migrations.js.map +1 -1
  27. package/dist/esm/src/storage/knex/migrations/2024-07-17-001-transactions.js +34 -0
  28. package/dist/esm/src/storage/knex/migrations/2024-07-17-001-transactions.js.map +1 -0
  29. package/dist/esm/src/storage/knex/migrations/2024-07-18-001-indexes.js +29 -0
  30. package/dist/esm/src/storage/knex/migrations/2024-07-18-001-indexes.js.map +1 -0
  31. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  32. package/dist/types/src/Engine.d.ts +8 -115
  33. package/dist/types/src/Engine.d.ts.map +1 -1
  34. package/dist/types/src/GASP/OverlayGASPRemote.d.ts +3 -2
  35. package/dist/types/src/GASP/OverlayGASPRemote.d.ts.map +1 -1
  36. package/dist/types/src/GASP/OverlayGASPStorage.d.ts +29 -3
  37. package/dist/types/src/GASP/OverlayGASPStorage.d.ts.map +1 -1
  38. package/dist/types/src/Output.d.ts +2 -2
  39. package/dist/types/src/Output.d.ts.map +1 -1
  40. package/dist/types/src/storage/Storage.d.ts +6 -8
  41. package/dist/types/src/storage/Storage.d.ts.map +1 -1
  42. package/dist/types/src/storage/knex/KnexStorage.d.ts +4 -4
  43. package/dist/types/src/storage/knex/KnexStorage.d.ts.map +1 -1
  44. package/dist/types/src/storage/knex/all-migrations.d.ts.map +1 -1
  45. package/dist/types/src/storage/knex/migrations/2024-07-17-001-transactions.d.ts +4 -0
  46. package/dist/types/src/storage/knex/migrations/2024-07-17-001-transactions.d.ts.map +1 -0
  47. package/dist/types/src/storage/knex/migrations/2024-07-18-001-indexes.d.ts +4 -0
  48. package/dist/types/src/storage/knex/migrations/2024-07-18-001-indexes.d.ts.map +1 -0
  49. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  50. package/package.json +2 -2
  51. package/src/Engine.ts +158 -550
  52. package/src/GASP/OverlayGASPRemote.ts +107 -0
  53. package/src/GASP/OverlayGASPStorage.ts +331 -0
  54. package/src/Output.ts +2 -2
  55. package/src/__tests/Engine.test.ts +27 -26
  56. package/src/__tests/OverlayGASPRemote.test.ts +1 -1
  57. package/src/__tests/OverlayGASPStorage.test.ts +4 -3
  58. package/src/storage/Storage.ts +6 -8
  59. package/src/storage/knex/KnexStorage.ts +119 -41
  60. package/src/storage/knex/all-migrations.ts +10 -6
  61. package/src/storage/knex/migrations/2024-07-17-001-transactions.ts +40 -0
  62. package/src/storage/knex/migrations/2024-07-18-001-indexes.ts +30 -0
  63. package/dist/cjs/src/GASP.js +0 -275
  64. package/dist/cjs/src/GASP.js.map +0 -1
  65. package/dist/cjs/src/SHIPAdvertisement.js +0 -3
  66. package/dist/cjs/src/SHIPAdvertisement.js.map +0 -1
  67. package/dist/cjs/src/SLAPAdvertisement.js +0 -3
  68. package/dist/cjs/src/SLAPAdvertisement.js.map +0 -1
  69. package/dist/esm/src/GASP.js +0 -279
  70. package/dist/esm/src/GASP.js.map +0 -1
  71. package/dist/esm/src/SHIPAdvertisement.js +0 -2
  72. package/dist/esm/src/SHIPAdvertisement.js.map +0 -1
  73. package/dist/esm/src/SLAPAdvertisement.js +0 -2
  74. package/dist/esm/src/SLAPAdvertisement.js.map +0 -1
  75. package/dist/types/src/GASP.d.ts +0 -215
  76. package/dist/types/src/GASP.d.ts.map +0 -1
  77. package/dist/types/src/SHIPAdvertisement.d.ts +0 -9
  78. package/dist/types/src/SHIPAdvertisement.d.ts.map +0 -1
  79. package/dist/types/src/SLAPAdvertisement.d.ts +0 -9
  80. package/dist/types/src/SLAPAdvertisement.d.ts.map +0 -1
@@ -3,77 +3,147 @@ export class KnexStorage {
3
3
  constructor(knex) {
4
4
  this.knex = knex;
5
5
  }
6
- async findOutput(txid, outputIndex, topic, spent) {
6
+ async findOutput(txid, outputIndex, topic, spent, includeBEEF = false) {
7
7
  const search = {
8
- txid,
9
- outputIndex
8
+ 'outputs.txid': txid,
9
+ 'outputs.outputIndex': outputIndex
10
10
  };
11
11
  if (topic !== undefined)
12
- search.topic = topic;
12
+ search['outputs.topic'] = topic;
13
13
  if (spent !== undefined)
14
- search.spent = spent;
15
- const [output] = await this.knex('outputs').where(search).select('txid', 'outputIndex', 'outputScript', 'topic', 'satoshis', 'beef', 'outputsConsumed', 'spent', 'consumedBy');
14
+ search['outputs.spent'] = spent;
15
+ // Base query to get the output
16
+ const query = this.knex('outputs').where(search);
17
+ // Select necessary fields from outputs and conditionally include beef from transactions
18
+ const selectFields = [
19
+ 'outputs.txid',
20
+ 'outputs.outputIndex',
21
+ 'outputs.outputScript',
22
+ 'outputs.topic',
23
+ 'outputs.satoshis',
24
+ 'outputs.outputsConsumed',
25
+ 'outputs.spent',
26
+ 'outputs.consumedBy'
27
+ ];
28
+ if (includeBEEF) {
29
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
30
+ query.leftJoin('transactions', 'outputs.txid', 'transactions.txid');
31
+ selectFields.push('transactions.beef');
32
+ }
33
+ const output = await query.select(selectFields).first();
16
34
  if (output === undefined || output === null) {
17
35
  return null;
18
36
  }
19
37
  return {
20
38
  ...output,
21
39
  outputScript: [...output.outputScript],
22
- beef: [...output.beef],
40
+ beef: includeBEEF ? (output.beef !== undefined ? [...output.beef] : undefined) : undefined,
23
41
  spent: Boolean(output.spent),
24
42
  outputsConsumed: JSON.parse(output.outputsConsumed),
25
43
  consumedBy: JSON.parse(output.consumedBy)
26
44
  };
27
45
  }
28
- async findOutputsForTransaction(txid) {
29
- const outputs = await this.knex('outputs').where({ txid }).select('txid', 'outputIndex', 'outputScript', 'topic', 'satoshis', 'beef', 'outputsConsumed', 'spent', 'consumedBy');
46
+ async findOutputsForTransaction(txid, includeBEEF = false) {
47
+ // Base query to get outputs
48
+ const query = this.knex('outputs').where({ 'outputs.txid': txid });
49
+ // Select necessary fields from outputs and conditionally include beef from transactions
50
+ const selectFields = [
51
+ 'outputs.txid',
52
+ 'outputs.outputIndex',
53
+ 'outputs.outputScript',
54
+ 'outputs.topic',
55
+ 'outputs.satoshis',
56
+ 'outputs.outputsConsumed',
57
+ 'outputs.spent',
58
+ 'outputs.consumedBy'
59
+ ];
60
+ if (includeBEEF) {
61
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
62
+ query.leftJoin('transactions', 'outputs.txid', 'transactions.txid');
63
+ selectFields.push('transactions.beef');
64
+ }
65
+ const outputs = await query.select(selectFields);
30
66
  if (outputs === undefined || outputs.length === 0) {
31
67
  return [];
32
68
  }
33
69
  return outputs.map(output => ({
34
70
  ...output,
35
71
  outputScript: [...output.outputScript],
36
- beef: [...output.beef],
72
+ beef: includeBEEF ? (output.beef !== undefined ? [...output.beef] : undefined) : undefined,
37
73
  spent: Boolean(output.spent),
38
74
  outputsConsumed: JSON.parse(output.outputsConsumed),
39
75
  consumedBy: JSON.parse(output.consumedBy)
40
76
  }));
41
77
  }
42
- async findUTXOsForTopic(topic, since) {
43
- const query = this.knex('outputs').where({ topic, spent: false });
78
+ async findUTXOsForTopic(topic, since, includeBEEF = false) {
79
+ // Base query to get outputs
80
+ const query = this.knex('outputs').where({ 'outputs.topic': topic, 'outputs.spent': false });
44
81
  // If provided, additionally filters UTXOs by block height
45
82
  if (since !== undefined && since > 0) {
46
- await query.andWhere('blockHeight', '>=', since);
83
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
84
+ query.andWhere('outputs.blockHeight', '>=', since);
85
+ }
86
+ // Select necessary fields from outputs and conditionally include beef from transactions
87
+ const selectFields = [
88
+ 'outputs.txid',
89
+ 'outputs.outputIndex',
90
+ 'outputs.outputScript',
91
+ 'outputs.topic',
92
+ 'outputs.satoshis',
93
+ 'outputs.outputsConsumed',
94
+ 'outputs.spent',
95
+ 'outputs.consumedBy'
96
+ ];
97
+ if (includeBEEF) {
98
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
99
+ query.leftJoin('transactions', 'outputs.txid', 'transactions.txid');
100
+ selectFields.push('transactions.beef');
47
101
  }
48
- const outputs = await query.select('txid', 'outputIndex', 'outputScript', 'topic', 'satoshis', 'beef', 'outputsConsumed', 'spent', 'consumedBy');
102
+ const outputs = await query.select(selectFields);
49
103
  if (outputs === undefined || outputs.length === 0) {
50
104
  return [];
51
105
  }
52
106
  return outputs.map(output => ({
53
107
  ...output,
54
108
  outputScript: [...output.outputScript],
55
- beef: [...output.beef],
109
+ beef: includeBEEF ? (output.beef !== undefined ? [...output.beef] : undefined) : undefined,
56
110
  spent: Boolean(output.spent),
57
111
  outputsConsumed: JSON.parse(output.outputsConsumed),
58
112
  consumedBy: JSON.parse(output.consumedBy)
59
113
  }));
60
114
  }
61
115
  async deleteOutput(txid, outputIndex, topic) {
62
- await this.knex('outputs').where({
63
- txid, outputIndex, topic
64
- }).del();
116
+ await this.knex.transaction(async (trx) => {
117
+ // Delete the specific output
118
+ await trx('outputs').where({ txid, outputIndex }).del();
119
+ // Check how many outputs reference the same transaction
120
+ const remainingOutputs = await trx('outputs').where({ txid }).count('* as count').first();
121
+ if (remainingOutputs !== undefined && Number(remainingOutputs.count) === 0) {
122
+ // If no more outputs reference the transaction, delete the beef
123
+ await trx('transactions').where({ txid }).del();
124
+ }
125
+ });
65
126
  }
66
127
  async insertOutput(output) {
67
- await this.knex('outputs').insert({
68
- txid: output.txid,
69
- outputIndex: Number(output.outputIndex),
70
- outputScript: Buffer.from(output.outputScript),
71
- topic: output.topic,
72
- satoshis: Number(output.satoshis),
73
- beef: Buffer.from(output.beef),
74
- outputsConsumed: JSON.stringify(output.outputsConsumed),
75
- consumedBy: JSON.stringify(output.consumedBy),
76
- spent: output.spent
128
+ const insertPromises = [this.knex('outputs').insert({
129
+ txid: output.txid,
130
+ outputIndex: Number(output.outputIndex),
131
+ outputScript: Buffer.from(output.outputScript),
132
+ topic: output.topic,
133
+ satoshis: Number(output.satoshis),
134
+ outputsConsumed: JSON.stringify(output.outputsConsumed),
135
+ consumedBy: JSON.stringify(output.consumedBy),
136
+ spent: output.spent
137
+ })];
138
+ if (output.beef !== undefined) {
139
+ const insertTransactionPromise = this.knex('transactions').insert({
140
+ txid: output.txid,
141
+ beef: Buffer.from(output.beef)
142
+ }).onConflict('txid').ignore();
143
+ insertPromises.push(insertTransactionPromise);
144
+ }
145
+ await this.knex.transaction(async (trx) => {
146
+ await Promise.all(insertPromises.map(promise => promise.transacting(trx)));
77
147
  });
78
148
  }
79
149
  async markUTXOAsSpent(txid, outputIndex, topic) {
@@ -90,11 +160,9 @@ export class KnexStorage {
90
160
  topic
91
161
  }).update('consumedBy', consumedBy);
92
162
  }
93
- async updateOutputBeef(txid, outputIndex, topic, beef) {
94
- await this.knex('outputs').where({
95
- txid,
96
- outputIndex,
97
- topic
163
+ async updateTransactionBEEF(txid, beef) {
164
+ await this.knex('transactions').where({
165
+ txid
98
166
  }).update('beef', Buffer.from(beef));
99
167
  }
100
168
  async updateOutputBlockHeight(txid, outputIndex, topic, blockHeight) {
@@ -111,11 +179,11 @@ export class KnexStorage {
111
179
  });
112
180
  }
113
181
  async doesAppliedTransactionExist(tx) {
114
- const appliedTransactions = await this.knex('applied_transactions').where({
115
- txid: tx.txid,
116
- topic: tx.topic
117
- }).select('txid', 'topic');
118
- return appliedTransactions.length > 0;
182
+ const result = await this.knex('applied_transactions')
183
+ .where({ txid: tx.txid, topic: tx.topic })
184
+ .select(this.knex.raw('1'))
185
+ .first();
186
+ return !!result;
119
187
  }
120
188
  }
121
189
  //# sourceMappingURL=KnexStorage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"KnexStorage.js","sourceRoot":"","sources":["../../../../../src/storage/knex/KnexStorage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"KnexStorage.js","sourceRoot":"","sources":["../../../../../src/storage/knex/KnexStorage.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,WAAW;IACtB,IAAI,CAAM;IAEV,YAAY,IAAU;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAY,EAAE,WAAmB,EAAE,KAAc,EAAE,KAAe,EAAE,cAAuB,KAAK;QAC/G,MAAM,MAAM,GAKR;YACF,cAAc,EAAE,IAAI;YACpB,qBAAqB,EAAE,WAAW;SACnC,CAAA;QACD,IAAI,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,eAAe,CAAC,GAAG,KAAK,CAAA;QACxD,IAAI,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,eAAe,CAAC,GAAG,KAAK,CAAA;QAExD,+BAA+B;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAEhD,wFAAwF;QACxF,MAAM,YAAY,GAAG;YACnB,cAAc;YACd,qBAAqB;YACrB,sBAAsB;YACtB,eAAe;YACf,kBAAkB;YAClB,yBAAyB;YACzB,eAAe;YACf,oBAAoB;SACrB,CAAA;QAED,IAAI,WAAW,EAAE,CAAC;YAChB,mEAAmE;YACnE,KAAK,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAc,EAAE,mBAAmB,CAAC,CAAA;YACnE,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;QACxC,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,CAAA;QAEvD,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YAC5C,OAAO,IAAI,CAAA;QACb,CAAC;QAED,OAAO;YACL,GAAG,MAAM;YACT,YAAY,EAAE,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC;YACtC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;YAC1F,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;YAC5B,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC;YACnD,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC;SAC1C,CAAA;IACH,CAAC;IAED,KAAK,CAAC,yBAAyB,CAAC,IAAY,EAAE,cAAuB,KAAK;QACxE,4BAA4B;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAA;QAElE,wFAAwF;QACxF,MAAM,YAAY,GAAG;YACnB,cAAc;YACd,qBAAqB;YACrB,sBAAsB;YACtB,eAAe;YACf,kBAAkB;YAClB,yBAAyB;YACzB,eAAe;YACf,oBAAoB;SACrB,CAAA;QAED,IAAI,WAAW,EAAE,CAAC;YAChB,mEAAmE;YACnE,KAAK,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAc,EAAE,mBAAmB,CAAC,CAAA;YACnE,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;QACxC,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;QAEhD,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClD,OAAO,EAAE,CAAA;QACX,CAAC;QAED,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC5B,GAAG,MAAM;YACT,YAAY,EAAE,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC;YACtC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;YAC1F,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;YAC5B,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC;YACnD,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC;SAC1C,CAAC,CAAC,CAAA;IACL,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,KAAa,EAAE,KAAc,EAAE,cAAuB,KAAK;QACjF,4BAA4B;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAA;QAE5F,0DAA0D;QAC1D,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACrC,mEAAmE;YACnE,KAAK,CAAC,QAAQ,CAAC,qBAAqB,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;QACpD,CAAC;QAED,wFAAwF;QACxF,MAAM,YAAY,GAAG;YACnB,cAAc;YACd,qBAAqB;YACrB,sBAAsB;YACtB,eAAe;YACf,kBAAkB;YAClB,yBAAyB;YACzB,eAAe;YACf,oBAAoB;SACrB,CAAA;QAED,IAAI,WAAW,EAAE,CAAC;YAChB,mEAAmE;YACnE,KAAK,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAc,EAAE,mBAAmB,CAAC,CAAA;YACnE,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;QACxC,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;QAEhD,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClD,OAAO,EAAE,CAAA;QACX,CAAC;QAED,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC5B,GAAG,MAAM;YACT,YAAY,EAAE,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC;YACtC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;YAC1F,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;YAC5B,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC;YACnD,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC;SAC1C,CAAC,CAAC,CAAA;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,WAAmB,EAAE,KAAa;QACjE,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAC,GAAG,EAAC,EAAE;YACtC,6BAA6B;YAC7B,MAAM,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,GAAG,EAAE,CAAA;YAEvD,wDAAwD;YACxD,MAAM,gBAAgB,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,CAAA;YAEzF,IAAI,gBAAgB,KAAK,SAAS,IAAI,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3E,gEAAgE;gBAChE,MAAM,GAAG,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAA;YACjD,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAc;QAC/B,MAAM,cAAc,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;gBAClD,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;gBACvC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;gBAC9C,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;gBACjC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC;gBACvD,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC;gBAC7C,KAAK,EAAE,MAAM,CAAC,KAAK;aACpB,CAAC,CAAC,CAAA;QAEH,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,wBAAwB,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC;gBAChE,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;aAC/B,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAA;YAC9B,cAAc,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;QAC/C,CAAC;QAED,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAC,GAAG,EAAC,EAAE;YACtC,MAAM,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAC5E,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,IAAY,EAAE,WAAmB,EAAE,KAAc;QACrE,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC;YAC/B,IAAI;YACJ,WAAW;YACX,KAAK;SACN,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;IAC1B,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,IAAY,EAAE,WAAmB,EAAE,KAAa,EAAE,UAAwD;QAC/H,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC;YAC/B,IAAI;YACJ,WAAW;YACX,KAAK;SACN,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,CAAA;IACrC,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,IAAY,EAAE,IAAc;QACtD,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC;YACpC,IAAI;SACL,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IACtC,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,IAAY,EAAE,WAAmB,EAAE,KAAa,EAAE,WAAmB;QACjG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC;YAC/B,IAAI;YACJ,WAAW;YACX,KAAK;SACN,CAAC,CAAC,MAAM,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;IACvC,CAAC;IAED,KAAK,CAAC,wBAAwB,CAAC,EAAmC;QAChE,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,MAAM,CAAC;YAC7C,IAAI,EAAE,EAAE,CAAC,IAAI;YACb,KAAK,EAAE,EAAE,CAAC,KAAK;SAChB,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,2BAA2B,CAAC,EAAmC;QACnE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC;aACnD,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC;aACzC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;aAC1B,KAAK,EAAE,CAAA;QAEV,OAAO,CAAC,CAAC,MAAM,CAAA;IACjB,CAAC;CACF"}
@@ -1,8 +1,12 @@
1
1
  import { up as initialSchemaUp, down as initialSchemaDown } from './migrations/2024-05-18-001-initial.js';
2
2
  import { up as addBlockHeightColumnUp, down as addBlockHeightColumnDown } from './migrations/2024-07-10-001-block-height.js';
3
+ import { up as addTransactionsTableUp, down as addTransactionsTableDown } from './migrations/2024-07-17-001-transactions.js';
4
+ import { up as addedIndexesUp, down as addedIndexesDown } from './migrations/2024-07-18-001-indexes.js';
3
5
  const allMigrations = [
4
6
  { up: initialSchemaUp, down: initialSchemaDown },
5
- { up: addBlockHeightColumnUp, down: addBlockHeightColumnDown }
7
+ { up: addBlockHeightColumnUp, down: addBlockHeightColumnDown },
8
+ { up: addTransactionsTableUp, down: addTransactionsTableDown },
9
+ { up: addedIndexesUp, down: addedIndexesDown }
6
10
  ];
7
11
  export default allMigrations;
8
12
  //# sourceMappingURL=all-migrations.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"all-migrations.js","sourceRoot":"","sources":["../../../../../src/storage/knex/all-migrations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,IAAI,eAAe,EAAE,IAAI,IAAI,iBAAiB,EAAE,MAAM,wCAAwC,CAAA;AACzG,OAAO,EAAE,EAAE,IAAI,sBAAsB,EAAE,IAAI,IAAI,wBAAwB,EAAE,MAAM,6CAA6C,CAAA;AAU5H,MAAM,aAAa,GAAgB;IACjC,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,iBAAiB,EAAE;IAChD,EAAE,EAAE,EAAE,sBAAsB,EAAE,IAAI,EAAE,wBAAwB,EAAE;CAC/D,CAAC;AACF,eAAe,aAAa,CAAA"}
1
+ {"version":3,"file":"all-migrations.js","sourceRoot":"","sources":["../../../../../src/storage/knex/all-migrations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,IAAI,eAAe,EAAE,IAAI,IAAI,iBAAiB,EAAE,MAAM,wCAAwC,CAAA;AACzG,OAAO,EAAE,EAAE,IAAI,sBAAsB,EAAE,IAAI,IAAI,wBAAwB,EAAE,MAAM,6CAA6C,CAAA;AAC5H,OAAO,EAAE,EAAE,IAAI,sBAAsB,EAAE,IAAI,IAAI,wBAAwB,EAAE,MAAM,6CAA6C,CAAA;AAC5H,OAAO,EAAE,EAAE,IAAI,cAAc,EAAE,IAAI,IAAI,gBAAgB,EAAE,MAAM,wCAAwC,CAAA;AAUvG,MAAM,aAAa,GAAgB;IACjC,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,iBAAiB,EAAE;IAChD,EAAE,EAAE,EAAE,sBAAsB,EAAE,IAAI,EAAE,wBAAwB,EAAE;IAC9D,EAAE,EAAE,EAAE,sBAAsB,EAAE,IAAI,EAAE,wBAAwB,EAAE;IAC9D,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,gBAAgB,EAAE;CAC/C,CAAA;AACD,eAAe,aAAa,CAAA"}
@@ -0,0 +1,34 @@
1
+ export async function up(knex) {
2
+ // Create the new transactions table
3
+ await knex.schema.createTable('transactions', table => {
4
+ table.increments();
5
+ table.specificType('beef', 'longblob');
6
+ table.string('txid', 64).unique();
7
+ });
8
+ // Move data from outputs table to the new transactions table and ensure deduplication
9
+ await knex.raw(`
10
+ INSERT IGNORE INTO transactions (txid, beef)
11
+ SELECT txid, beef
12
+ FROM outputs
13
+ WHERE beef IS NOT NULL
14
+ `);
15
+ // Drop the beef column from the outputs table
16
+ await knex.schema.table('outputs', table => {
17
+ table.dropColumn('beef');
18
+ });
19
+ }
20
+ export async function down(knex) {
21
+ // Add the beef column back to the outputs table
22
+ await knex.schema.table('outputs', table => {
23
+ table.binary('beef');
24
+ });
25
+ // Move data back from the transactions table to the outputs table using a JOIN
26
+ await knex.raw(`
27
+ UPDATE outputs
28
+ JOIN transactions ON outputs.txid = transactions.txid
29
+ SET outputs.beef = transactions.beef
30
+ `);
31
+ // Drop the transactions table
32
+ await knex.schema.dropTable('transactions');
33
+ }
34
+ //# sourceMappingURL=2024-07-17-001-transactions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"2024-07-17-001-transactions.js","sourceRoot":"","sources":["../../../../../../src/storage/knex/migrations/2024-07-17-001-transactions.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC,IAAU;IACjC,oCAAoC;IACpC,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE;QACpD,KAAK,CAAC,UAAU,EAAE,CAAA;QAClB,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;QACtC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAA;IACnC,CAAC,CAAC,CAAA;IAEF,sFAAsF;IACtF,MAAM,IAAI,CAAC,GAAG,CAAC;;;;;GAKd,CAAC,CAAA;IAEF,8CAA8C;IAC9C,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE;QACzC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;IAC1B,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAU;IACnC,gDAAgD;IAChD,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE;QACzC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IACtB,CAAC,CAAC,CAAA;IAEF,+EAA+E;IAC/E,MAAM,IAAI,CAAC,GAAG,CAAC;;;;GAId,CAAC,CAAA;IAEF,8BAA8B;IAC9B,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA;AAC7C,CAAC"}
@@ -0,0 +1,29 @@
1
+ export async function up(knex) {
2
+ // Add index for applied_transactions table
3
+ await knex.schema.table('applied_transactions', function (table) {
4
+ table.index(['txid', 'topic'], 'idx_applied_transactions_txid_topic');
5
+ });
6
+ // Add index for transactions table
7
+ await knex.schema.table('transactions', function (table) {
8
+ table.index('txid', 'idx_transactions_txid');
9
+ });
10
+ // Add index for outputs table
11
+ await knex.schema.table('outputs', function (table) {
12
+ table.index(['txid', 'outputIndex', 'topic'], 'idx_outputs_txid_outputIndex_topic');
13
+ });
14
+ }
15
+ export async function down(knex) {
16
+ // Drop index for applied_transactions table
17
+ await knex.schema.table('applied_transactions', function (table) {
18
+ table.dropIndex(['txid', 'topic'], 'idx_applied_transactions_txid_topic');
19
+ });
20
+ // Drop index for transactions table
21
+ await knex.schema.table('transactions', function (table) {
22
+ table.dropIndex('txid', 'idx_transactions_txid');
23
+ });
24
+ // Drop index for outputs table
25
+ await knex.schema.table('outputs', function (table) {
26
+ table.dropIndex(['txid', 'outputIndex', 'topic'], 'idx_outputs_txid_outputIndex_topic');
27
+ });
28
+ }
29
+ //# sourceMappingURL=2024-07-18-001-indexes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"2024-07-18-001-indexes.js","sourceRoot":"","sources":["../../../../../../src/storage/knex/migrations/2024-07-18-001-indexes.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC,IAAU;IACjC,2CAA2C;IAC3C,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,UAAU,KAAK;QAC7D,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,qCAAqC,CAAC,CAAA;IACvE,CAAC,CAAC,CAAA;IACF,mCAAmC;IACnC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,UAAU,KAAK;QACrD,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAA;IAC9C,CAAC,CAAC,CAAA;IACF,8BAA8B;IAC9B,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,UAAU,KAAK;QAChD,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,oCAAoC,CAAC,CAAA;IACrF,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAU;IACnC,4CAA4C;IAC5C,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,UAAU,KAAK;QAC7D,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,qCAAqC,CAAC,CAAA;IAC3E,CAAC,CAAC,CAAA;IACF,oCAAoC;IACpC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,UAAU,KAAK;QACrD,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAA;IAClD,CAAC,CAAC,CAAA;IACF,+BAA+B;IAC/B,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,UAAU,KAAK;QAChD,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,oCAAoC,CAAC,CAAA;IACzF,CAAC,CAAC,CAAA;AACJ,CAAC"}