mirror of
https://github.com/alexgo-io/bitcoin-indexer.git
synced 2026-04-30 04:35:04 +08:00
fix: improve rewrite block command
This commit is contained in:
@@ -74,6 +74,13 @@ pub fn initialize_hord_db(path: &PathBuf, ctx: &Context) -> Connection {
|
||||
) {
|
||||
ctx.try_log(|logger| slog::error!(logger, "{}", e.to_string()));
|
||||
}
|
||||
if let Err(e) = conn.execute(
|
||||
"CREATE INDEX IF NOT EXISTS index_inscriptions_on_block_height ON inscriptions(block_height);",
|
||||
[],
|
||||
) {
|
||||
ctx.try_log(|logger| slog::error!(logger, "{}", e.to_string()));
|
||||
}
|
||||
|
||||
|
||||
conn
|
||||
}
|
||||
@@ -512,6 +519,25 @@ pub fn find_latest_inscription_block_height(
|
||||
Ok(None)
|
||||
}
|
||||
|
||||
pub fn find_latest_inscription_number_at_block_height(
|
||||
block_height: &u64,
|
||||
inscriptions_db_conn: &Connection,
|
||||
_ctx: &Context,
|
||||
) -> Result<Option<u64>, String> {
|
||||
let args: &[&dyn ToSql] = &[&block_height.to_sql().unwrap()];
|
||||
let mut stmt = inscriptions_db_conn
|
||||
.prepare(
|
||||
"SELECT inscription_number FROM inscriptions WHERE block_height < ? ORDER BY inscription_number DESC LIMIT 1",
|
||||
)
|
||||
.unwrap();
|
||||
let mut rows = stmt.query(args).unwrap();
|
||||
while let Ok(Some(row)) = rows.next() {
|
||||
let inscription_number: u64 = row.get(0).unwrap();
|
||||
return Ok(Some(inscription_number));
|
||||
}
|
||||
Ok(None)
|
||||
}
|
||||
|
||||
pub fn find_latest_inscription_number(
|
||||
inscriptions_db_conn: &Connection,
|
||||
_ctx: &Context,
|
||||
|
||||
@@ -20,7 +20,7 @@ use crate::{
|
||||
hord::{
|
||||
db::{
|
||||
find_inscription_with_ordinal_number, find_inscriptions_at_wached_outpoint,
|
||||
find_latest_inscription_number, insert_entry_in_blocks,
|
||||
insert_entry_in_blocks,
|
||||
retrieve_satoshi_point_using_local_storage, store_new_inscription,
|
||||
update_transfered_inscription, CompactedBlock,
|
||||
},
|
||||
@@ -31,7 +31,7 @@ use crate::{
|
||||
|
||||
use self::db::{
|
||||
find_inscription_with_id, open_readonly_hord_db_conn_rocks_db, remove_entry_from_blocks,
|
||||
remove_entry_from_inscriptions, TraversalResult, WatchedSatpoint,
|
||||
remove_entry_from_inscriptions, TraversalResult, WatchedSatpoint, find_latest_inscription_number_at_block_height,
|
||||
};
|
||||
|
||||
pub fn get_inscriptions_revealed_in_block(
|
||||
@@ -249,7 +249,7 @@ pub fn update_storage_and_augment_bitcoin_block_with_inscription_reveal_data(
|
||||
ordinals_events_indexes_to_discard.push_front(ordinal_event_index);
|
||||
} else {
|
||||
inscription.inscription_number =
|
||||
match find_latest_inscription_number(&inscription_db_conn, &ctx) {
|
||||
match find_latest_inscription_number_at_block_height(&block.block_identifier.index, &inscription_db_conn, &ctx) {
|
||||
Ok(None) => 0,
|
||||
Ok(Some(inscription_number)) => inscription_number + 1,
|
||||
Err(e) => {
|
||||
|
||||
Reference in New Issue
Block a user