Skip to content

Commit 2108d35

Browse files
authored
[bridge indexer alt 1/n] - extract bridge indexer schema to be reused in the new indexer (#21779)
## Description Describe the changes or additions included in this PR. ## Test plan How did you test the new or updated feature? --- ## Release notes Check each box that your changes affect. If none of the boxes relate to your changes, release notes aren't required. For each box you select, include information after the relevant heading that describes the impact of your changes that a user might notice and any actions they must take to implement updates. - [ ] Protocol: - [ ] Nodes (Validators and Full nodes): - [ ] gRPC: - [ ] JSON-RPC: - [ ] GraphQL: - [ ] CLI: - [ ] Rust SDK:
1 parent ed70303 commit 2108d35

File tree

22 files changed

+57
-21
lines changed

22 files changed

+57
-21
lines changed

Cargo.lock

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ members = [
9696
"crates/sui-bridge",
9797
"crates/sui-bridge-cli",
9898
"crates/sui-bridge-indexer",
99+
"crates/sui-bridge-schema",
99100
"crates/sui-cluster-test",
100101
"crates/sui-config",
101102
"crates/sui-core",
@@ -668,6 +669,7 @@ sui-analytics-indexer-derive = { path = "crates/sui-analytics-indexer-derive" }
668669
sui-authority-aggregation = { path = "crates/sui-authority-aggregation" }
669670
sui-benchmark = { path = "crates/sui-benchmark" }
670671
sui-bridge = { path = "crates/sui-bridge" }
672+
sui-bridge-schema = { path = "crates/sui-bridge-schema" }
671673
sui-cluster-test = { path = "crates/sui-cluster-test" }
672674
sui-config = { path = "crates/sui-config" }
673675
sui-core = { path = "crates/sui-core", features = ["rocksdb"] }

crates/sui-bridge-indexer/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ serde_yaml.workspace = true
2525
serde_json.workspace = true
2626
strum_macros.workspace = true
2727
sui-bridge.workspace = true
28+
sui-bridge-schema.workspace = true
2829
sui-sdk.workspace = true
2930
sui-json-rpc-types.workspace = true
3031
sui-data-ingestion-core.workspace = true

crates/sui-bridge-indexer/src/lib.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,6 @@ use crate::eth_bridge_indexer::{
66
EthDataMapper, EthFinalizedSyncDatasource, EthSubscriptionDatasource,
77
};
88
use crate::metrics::BridgeIndexerMetrics;
9-
use crate::models::GovernanceAction as DBGovernanceAction;
10-
use crate::models::TokenTransferData as DBTokenTransferData;
11-
use crate::models::{SuiErrorTransactions, TokenTransfer as DBTokenTransfer};
129
use crate::postgres_manager::PgPool;
1310
use crate::storage::PgBridgePersistent;
1411
use crate::sui_bridge_indexer::SuiBridgeDataMapper;
@@ -22,6 +19,9 @@ use sui_bridge::eth_client::EthClient;
2219
use sui_bridge::metered_eth_provider::MeteredEthHttpProvier;
2320
use sui_bridge::metrics::BridgeMetrics;
2421
use sui_bridge::utils::get_eth_contract_addresses;
22+
use sui_bridge_schema::models::GovernanceAction as DBGovernanceAction;
23+
use sui_bridge_schema::models::TokenTransferData as DBTokenTransferData;
24+
use sui_bridge_schema::models::{SuiErrorTransactions, TokenTransfer as DBTokenTransfer};
2525
use sui_data_ingestion_core::DataIngestionMetrics;
2626
use sui_indexer_builder::indexer_builder::{BackfillStrategy, Datasource, Indexer, IndexerBuilder};
2727
use sui_indexer_builder::metrics::IndexerMetricProvider;
@@ -34,9 +34,7 @@ use sui_types::base_types::{SuiAddress, TransactionDigest};
3434

3535
pub mod config;
3636
pub mod metrics;
37-
pub mod models;
3837
pub mod postgres_manager;
39-
pub mod schema;
4038
pub mod storage;
4139
pub mod sui_transaction_handler;
4240
pub mod sui_transaction_queries;

crates/sui-bridge-indexer/src/postgres_manager.rs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
11
// Copyright (c) Mysten Labs, Inc.
22
// SPDX-License-Identifier: Apache-2.0
33

4-
use crate::models::SuiProgressStore;
5-
use crate::schema::governance_actions;
6-
use crate::schema::sui_progress_store::txn_digest;
7-
use crate::schema::{sui_error_transactions, token_transfer_data};
8-
use crate::{schema, schema::token_transfer, ProcessedTxnData};
4+
use crate::ProcessedTxnData;
95
use diesel::query_dsl::methods::FilterDsl;
106
use diesel::upsert::excluded;
117
use diesel::{ExpressionMethods, OptionalExtension, QueryDsl, SelectableHelper};
@@ -15,6 +11,11 @@ use diesel_async::scoped_futures::ScopedFutureExt;
1511
use diesel_async::AsyncConnection;
1612
use diesel_async::AsyncPgConnection;
1713
use diesel_async::RunQueryDsl;
14+
use sui_bridge_schema::models::SuiProgressStore;
15+
use sui_bridge_schema::schema::governance_actions;
16+
use sui_bridge_schema::schema::sui_progress_store::txn_digest;
17+
use sui_bridge_schema::schema::{sui_error_transactions, token_transfer_data};
18+
use sui_bridge_schema::{schema, schema::token_transfer};
1819
use sui_types::digests::TransactionDigest;
1920

2021
pub(crate) type PgPool =
@@ -147,7 +148,7 @@ pub async fn update_sui_progress_store(
147148

148149
pub async fn read_sui_progress_store(pool: &PgPool) -> anyhow::Result<Option<TransactionDigest>> {
149150
let mut conn = pool.get().await?;
150-
let val: Option<SuiProgressStore> = crate::schema::sui_progress_store::dsl::sui_progress_store
151+
let val: Option<SuiProgressStore> = schema::sui_progress_store::dsl::sui_progress_store
151152
.select(SuiProgressStore::as_select())
152153
.first(&mut conn)
153154
.await

crates/sui-bridge-indexer/src/storage.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,12 @@ use diesel_async::scoped_futures::ScopedFutureExt;
1111
use diesel_async::AsyncConnection;
1212
use diesel_async::RunQueryDsl;
1313

14-
use crate::models::ProgressStore;
1514
use crate::postgres_manager::PgPool;
16-
use crate::schema::progress_store::{columns, dsl};
17-
use crate::schema::{sui_error_transactions, token_transfer, token_transfer_data};
18-
use crate::{schema, ProcessedTxnData};
15+
use crate::ProcessedTxnData;
16+
use sui_bridge_schema::models::ProgressStore;
17+
use sui_bridge_schema::schema;
18+
use sui_bridge_schema::schema::progress_store::{columns, dsl};
19+
use sui_bridge_schema::schema::{sui_error_transactions, token_transfer, token_transfer_data};
1920
use sui_indexer_builder::indexer_builder::{IndexerProgressStore, Persistent};
2021
use sui_indexer_builder::{
2122
progress::ProgressSavingPolicy, Task, Tasks, LIVE_TASK_TARGET_CHECKPOINT,

crates/sui-bridge-indexer/tests/indexer_tests.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,25 +4,23 @@
44
use diesel::associations::HasTable;
55
use diesel::QueryDsl;
66
use diesel_async::RunQueryDsl;
7-
use diesel_migrations::{embed_migrations, EmbeddedMigrations};
87
use prometheus::Registry;
98
use std::time::Duration;
109
use sui_bridge::e2e_tests::test_utils::{
1110
initiate_bridge_eth_to_sui, BridgeTestCluster, BridgeTestClusterBuilder,
1211
};
1312
use sui_bridge_indexer::config::IndexerConfig;
13+
use sui_bridge_indexer::create_sui_indexer;
1414
use sui_bridge_indexer::metrics::BridgeIndexerMetrics;
15-
use sui_bridge_indexer::models::{GovernanceAction, TokenTransfer};
1615
use sui_bridge_indexer::postgres_manager::get_connection_pool;
1716
use sui_bridge_indexer::storage::PgBridgePersistent;
18-
use sui_bridge_indexer::{create_sui_indexer, schema};
17+
use sui_bridge_schema::models::{GovernanceAction, TokenTransfer};
18+
use sui_bridge_schema::{schema, MIGRATIONS};
1919
use sui_data_ingestion_core::DataIngestionMetrics;
2020
use sui_indexer::database::Connection;
2121
use sui_indexer_builder::indexer_builder::IndexerProgressStore;
2222
use sui_pg_db::temp::TempDb;
2323

24-
const MIGRATIONS: EmbeddedMigrations = embed_migrations!("src/migrations");
25-
2624
#[tokio::test]
2725
async fn test_indexing_transfer() {
2826
let metrics = BridgeIndexerMetrics::new_for_testing();

crates/sui-bridge-schema/Cargo.toml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
[package]
2+
name = "sui-bridge-schema"
3+
version = "0.1.0"
4+
authors = ["Mysten Labs <build@mystenlabs.com>"]
5+
license = "Apache-2.0"
6+
publish = false
7+
edition = "2021"
8+
9+
[dependencies]
10+
diesel = { workspace = true, features = ["serde_json"] }
11+
diesel_migrations.workspace = true
12+
serde.workspace = true
13+
serde_json.workspace = true
14+
sui-indexer-builder.workspace = true

crates/sui-bridge-indexer/diesel.toml renamed to crates/sui-bridge-schema/diesel.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ file = "src/schema.rs"
66
#custom_type_derives = ["diesel::query_builder::QueryId"]
77

88
[migrations_directory]
9-
dir = "src/migrations"
9+
dir = "migrations"

0 commit comments

Comments
 (0)