1
1
import { ChicmozL2BlockFinalizationUpdateEvent } from "@chicmoz-pkg/message-registry" ;
2
2
import { getDb as db } from "@chicmoz-pkg/postgres-helper" ;
3
- import { HexString , type ChicmozL2Block } from "@chicmoz-pkg/types" ;
3
+ import {
4
+ ChicmozL2BlockFinalizationStatus ,
5
+ HexString ,
6
+ type ChicmozL2Block ,
7
+ } from "@chicmoz-pkg/types" ;
4
8
import { v4 as uuidv4 } from "uuid" ;
5
9
import {
6
10
archive ,
@@ -21,10 +25,10 @@ import {
21
25
txEffect ,
22
26
} from "../../../database/schema/l2block/index.js" ;
23
27
import { l2BlockFinalizationStatusTable } from "../../schema/l2block/finalization-status.js" ;
24
- import { ensureFinalizationStatusStored } from "./add_l1_data.js" ;
28
+ import { ensureL1FinalizationIsStored } from "./add_l1_data.js" ;
25
29
26
30
export const store = async (
27
- block : ChicmozL2Block
31
+ block : ChicmozL2Block ,
28
32
) : Promise < {
29
33
finalizationUpdate : ChicmozL2BlockFinalizationUpdateEvent | null ;
30
34
} > => {
@@ -155,7 +159,7 @@ export const store = async (
155
159
156
160
// Insert txEffects and create junction entries
157
161
for ( const [ i , txEff ] of Object . entries ( block . body . txEffects ) ) {
158
- if ( isNaN ( Number ( i ) ) ) throw new Error ( "Invalid txEffect index" ) ;
162
+ if ( isNaN ( Number ( i ) ) ) { throw new Error ( "Invalid txEffect index" ) ; }
159
163
await dbTx . insert ( txEffect ) . values ( {
160
164
txHash : txEff . txHash ,
161
165
bodyId,
@@ -182,22 +186,34 @@ export const store = async (
182
186
value : pdw . value ,
183
187
} ) ;
184
188
}
185
- if ( block . finalizationStatus . valueOf ( ) >= 0 ) {
186
- await db ( ) // NOTE: purposly not using dbTx, it should always be stored
187
- . insert ( l2BlockFinalizationStatusTable )
188
- . values ( {
189
- l2BlockHash : block . hash ,
190
- l2BlockNumber : block . height ,
191
- status : block . finalizationStatus ,
192
- } )
193
- . onConflictDoNothing ( ) ;
194
- }
189
+ await ensureFinalizationStatusStored (
190
+ block . hash ,
191
+ block . height ,
192
+ block . finalizationStatus ,
193
+ ) ;
195
194
}
196
- const finalizationUpdate = await ensureFinalizationStatusStored (
195
+ const finalizationUpdate = await ensureL1FinalizationIsStored (
197
196
block . hash ,
198
197
block . height ,
199
- block . archive . root
198
+ block . archive . root ,
200
199
) ;
201
200
return { finalizationUpdate } ;
202
201
} ) ;
203
202
} ;
203
+
204
+ export const ensureFinalizationStatusStored = async (
205
+ l2BlockHash : HexString ,
206
+ l2BlockNumber : bigint ,
207
+ status : ChicmozL2BlockFinalizationStatus ,
208
+ ) : Promise < void > => {
209
+ if ( status . valueOf ( ) >= 0 ) {
210
+ await db ( )
211
+ . insert ( l2BlockFinalizationStatusTable )
212
+ . values ( {
213
+ l2BlockHash,
214
+ l2BlockNumber,
215
+ status,
216
+ } )
217
+ . onConflictDoNothing ( ) ;
218
+ }
219
+ } ;
0 commit comments