Skip to content

Commit d524771

Browse files
author
Ludo Galabru
committed
fix: improve rewrite block command
1 parent abf70e7 commit d524771

File tree

2 files changed

+29
-3
lines changed

2 files changed

+29
-3
lines changed

components/chainhook-event-observer/src/hord/db/mod.rs

+26
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,13 @@ pub fn initialize_hord_db(path: &PathBuf, ctx: &Context) -> Connection {
7474
) {
7575
ctx.try_log(|logger| slog::error!(logger, "{}", e.to_string()));
7676
}
77+
if let Err(e) = conn.execute(
78+
"CREATE INDEX IF NOT EXISTS index_inscriptions_on_block_height ON inscriptions(block_height);",
79+
[],
80+
) {
81+
ctx.try_log(|logger| slog::error!(logger, "{}", e.to_string()));
82+
}
83+
7784

7885
conn
7986
}
@@ -512,6 +519,25 @@ pub fn find_latest_inscription_block_height(
512519
Ok(None)
513520
}
514521

522+
pub fn find_latest_inscription_number_at_block_height(
523+
block_height: &u64,
524+
inscriptions_db_conn: &Connection,
525+
_ctx: &Context,
526+
) -> Result<Option<u64>, String> {
527+
let args: &[&dyn ToSql] = &[&block_height.to_sql().unwrap()];
528+
let mut stmt = inscriptions_db_conn
529+
.prepare(
530+
"SELECT inscription_number FROM inscriptions WHERE block_height < ? ORDER BY inscription_number DESC LIMIT 1",
531+
)
532+
.unwrap();
533+
let mut rows = stmt.query(args).unwrap();
534+
while let Ok(Some(row)) = rows.next() {
535+
let inscription_number: u64 = row.get(0).unwrap();
536+
return Ok(Some(inscription_number));
537+
}
538+
Ok(None)
539+
}
540+
515541
pub fn find_latest_inscription_number(
516542
inscriptions_db_conn: &Connection,
517543
_ctx: &Context,

components/chainhook-event-observer/src/hord/mod.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ use crate::{
2020
hord::{
2121
db::{
2222
find_inscription_with_ordinal_number, find_inscriptions_at_wached_outpoint,
23-
find_latest_inscription_number, insert_entry_in_blocks,
23+
insert_entry_in_blocks,
2424
retrieve_satoshi_point_using_local_storage, store_new_inscription,
2525
update_transfered_inscription, CompactedBlock,
2626
},
@@ -31,7 +31,7 @@ use crate::{
3131

3232
use self::db::{
3333
find_inscription_with_id, open_readonly_hord_db_conn_rocks_db, remove_entry_from_blocks,
34-
remove_entry_from_inscriptions, TraversalResult, WatchedSatpoint,
34+
remove_entry_from_inscriptions, TraversalResult, WatchedSatpoint, find_latest_inscription_number_at_block_height,
3535
};
3636

3737
pub fn get_inscriptions_revealed_in_block(
@@ -249,7 +249,7 @@ pub fn update_storage_and_augment_bitcoin_block_with_inscription_reveal_data(
249249
ordinals_events_indexes_to_discard.push_front(ordinal_event_index);
250250
} else {
251251
inscription.inscription_number =
252-
match find_latest_inscription_number(&inscription_db_conn, &ctx) {
252+
match find_latest_inscription_number_at_block_height(&block.block_identifier.index, &inscription_db_conn, &ctx) {
253253
Ok(None) => 0,
254254
Ok(Some(inscription_number)) => inscription_number + 1,
255255
Err(e) => {

0 commit comments

Comments
 (0)