Skip to content

Commit fa50584

Browse files
author
Ludo Galabru
committed
feat: complete migration to lazy blocks
1 parent e8ee3ab commit fa50584

File tree

3 files changed

+151
-303
lines changed

3 files changed

+151
-303
lines changed

components/chainhook-cli/src/cli/mod.rs

+5-104
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,9 @@ use chainhook_event_observer::chainhooks::types::{
1313
StacksPrintEventBasedPredicate,
1414
};
1515
use chainhook_event_observer::hord::db::{
16-
delete_blocks_in_block_range_sqlite, delete_data_in_hord_db, fetch_and_cache_blocks_in_hord_db,
17-
find_block_at_block_height, find_block_at_block_height_sqlite, find_last_block_inserted,
18-
find_watched_satpoint_for_inscription, initialize_hord_db, insert_entry_in_blocks,
19-
insert_entry_in_blocks_lazy_block, open_readonly_hord_db_conn,
16+
delete_data_in_hord_db, fetch_and_cache_blocks_in_hord_db,
17+
find_block_at_block_height, find_last_block_inserted, find_watched_satpoint_for_inscription,
18+
initialize_hord_db, insert_entry_in_blocks, open_readonly_hord_db_conn,
2019
open_readonly_hord_db_conn_rocks_db, open_readwrite_hord_db_conn,
2120
open_readwrite_hord_db_conn_rocks_db, retrieve_satoshi_point_using_lazy_storage, LazyBlock,
2221
};
@@ -214,9 +213,6 @@ enum DbCommand {
214213
/// Check integrity
215214
#[clap(name = "check", bin_name = "check")]
216215
Check(CheckHordDbCommand),
217-
/// Legacy command
218-
#[clap(name = "init", bin_name = "init")]
219-
Init(InitHordDbCommand),
220216
/// Patch DB
221217
#[clap(name = "patch", bin_name = "patch")]
222218
Patch(PatchHordDbCommand),
@@ -741,84 +737,6 @@ async fn handle_command(opts: Opts, ctx: Context) -> Result<(), String> {
741737
}
742738
},
743739
Command::Hord(HordCommand::Db(subcmd)) => match subcmd {
744-
DbCommand::Init(cmd) => {
745-
let config = Config::default(false, false, false, &cmd.config_path)?;
746-
747-
let sqlite_db_conn_rw =
748-
open_readwrite_hord_db_conn(&config.expected_cache_path(), &ctx)?;
749-
750-
// Migrate if required
751-
if find_block_at_block_height_sqlite(1, &sqlite_db_conn_rw).is_some() {
752-
let blocks_db =
753-
open_readwrite_hord_db_conn_rocks_db(&config.expected_cache_path(), &ctx)?;
754-
755-
for i in 0..=300000 {
756-
match find_block_at_block_height_sqlite(i, &sqlite_db_conn_rw) {
757-
Some(block) => {
758-
insert_entry_in_blocks(i, &block, &blocks_db, &ctx);
759-
info!(ctx.expect_logger(), "Block #{} inserted", i);
760-
}
761-
None => {
762-
error!(ctx.expect_logger(), "Block #{} missing", i);
763-
}
764-
}
765-
}
766-
let _ = blocks_db.flush();
767-
delete_blocks_in_block_range_sqlite(0, 300000, &sqlite_db_conn_rw, &ctx);
768-
769-
for i in 300001..=500000 {
770-
match find_block_at_block_height_sqlite(i, &sqlite_db_conn_rw) {
771-
Some(block) => {
772-
insert_entry_in_blocks(i, &block, &blocks_db, &ctx);
773-
info!(ctx.expect_logger(), "Block #{} inserted", i);
774-
}
775-
None => {
776-
info!(ctx.expect_logger(), "Block #{} missing", i);
777-
}
778-
}
779-
}
780-
let _ = blocks_db.flush();
781-
delete_blocks_in_block_range_sqlite(300001, 500000, &sqlite_db_conn_rw, &ctx);
782-
783-
for i in 500001..=783986 {
784-
match find_block_at_block_height_sqlite(i, &sqlite_db_conn_rw) {
785-
Some(block) => {
786-
insert_entry_in_blocks(i, &block, &blocks_db, &ctx);
787-
info!(ctx.expect_logger(), "Block #{} inserted", i);
788-
}
789-
None => {
790-
info!(ctx.expect_logger(), "Block #{} missing", i);
791-
}
792-
}
793-
}
794-
let _ = blocks_db.flush();
795-
delete_blocks_in_block_range_sqlite(500001, 783986, &sqlite_db_conn_rw, &ctx);
796-
}
797-
798-
// Sync
799-
for _ in 0..5 {
800-
if let Some((start_block, end_block)) = should_sync_hord_db(&config, &ctx)? {
801-
if start_block == 0 {
802-
info!(
803-
ctx.expect_logger(),
804-
"Initializing hord indexing from block #{}", start_block
805-
);
806-
} else {
807-
info!(
808-
ctx.expect_logger(),
809-
"Resuming hord indexing from block #{}", start_block
810-
);
811-
}
812-
perform_hord_db_update(start_block, end_block, 10, &config, &ctx).await?;
813-
} else {
814-
info!(ctx.expect_logger(), "Database hord up to date");
815-
}
816-
}
817-
818-
// Start node
819-
let mut service = Service::new(config, ctx);
820-
return service.run(vec![]).await;
821-
}
822740
DbCommand::Sync(cmd) => {
823741
let config = Config::default(false, false, false, &cmd.config_path)?;
824742
if let Some((start_block, end_block)) = should_sync_hord_db(&config, &ctx)? {
@@ -910,24 +828,7 @@ async fn handle_command(opts: Opts, ctx: Context) -> Result<(), String> {
910828
);
911829
}
912830
DbCommand::Patch(cmd) => {
913-
let config = Config::default(false, false, false, &cmd.config_path)?;
914-
let sqlite_db_conn =
915-
open_readonly_hord_db_conn(&config.expected_cache_path(), &ctx)?;
916-
917-
let blocks_db =
918-
open_readwrite_hord_db_conn_rocks_db(&config.expected_cache_path(), &ctx)?;
919-
920-
for i in 0..774940 {
921-
match find_block_at_block_height_sqlite(i, &sqlite_db_conn) {
922-
Some(block) => {
923-
insert_entry_in_blocks(i, &block, &blocks_db, &ctx);
924-
println!("Block #{} inserted", i);
925-
}
926-
None => {
927-
println!("Block #{} missing", i)
928-
}
929-
}
930-
}
831+
unimplemented!()
931832
}
932833
DbCommand::Migrate(cmd) => {
933834
let config = Config::default(false, false, false, &cmd.config_path)?;
@@ -945,7 +846,7 @@ async fn handle_command(opts: Opts, ctx: Context) -> Result<(), String> {
945846
.serialize_to_lazy_format(&mut bytes)
946847
.expect("unable to convert to lazy block");
947848
let lazy_block = LazyBlock::new(bytes);
948-
insert_entry_in_blocks_lazy_block(i, &lazy_block, &blocks_db_rw, &ctx);
849+
insert_entry_in_blocks(i, &lazy_block, &blocks_db_rw, &ctx);
949850
println!("Block #{} migrated to lazy block", i);
950851
}
951852
None => {

0 commit comments

Comments
 (0)