This commit is contained in:
2026-04-24 12:01:35 +02:00
parent 54778373b8
commit 0ad6145091
23 changed files with 1653 additions and 5 deletions

View File

@@ -148,7 +148,7 @@ CREATE TABLE IF NOT EXISTS kb_pools (
first_seen_at TEXT NOT NULL,
updated_at TEXT NOT NULL,
FOREIGN KEY(dex_id) REFERENCES kb_dexes(id)
)
)
"#,
r#"
CREATE INDEX IF NOT EXISTS kb_idx_pools_dex_id
@@ -168,7 +168,7 @@ CREATE TABLE IF NOT EXISTS kb_pairs (
FOREIGN KEY(pool_id) REFERENCES kb_pools(id),
FOREIGN KEY(base_token_id) REFERENCES kb_tokens(id),
FOREIGN KEY(quote_token_id) REFERENCES kb_tokens(id)
)
)
"#,
r#"
CREATE TABLE IF NOT EXISTS kb_pool_tokens (
@@ -183,7 +183,7 @@ CREATE TABLE IF NOT EXISTS kb_pool_tokens (
FOREIGN KEY(pool_id) REFERENCES kb_pools(id),
FOREIGN KEY(token_id) REFERENCES kb_tokens(id),
UNIQUE(pool_id, token_id, role)
)
)
"#,
r#"
CREATE TABLE IF NOT EXISTS kb_pool_listings (
@@ -201,12 +201,128 @@ CREATE TABLE IF NOT EXISTS kb_pool_listings (
FOREIGN KEY(dex_id) REFERENCES kb_dexes(id),
FOREIGN KEY(pool_id) REFERENCES kb_pools(id),
FOREIGN KEY(pair_id) REFERENCES kb_pairs(id)
)
)
"#,
r#"
CREATE INDEX IF NOT EXISTS kb_idx_pool_listings_detected_at
ON kb_pool_listings (detected_at)
"#,
r#"
CREATE TABLE IF NOT EXISTS kb_swaps (
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
dex_id INTEGER NOT NULL,
pool_id INTEGER NOT NULL,
pair_id INTEGER NULL,
signature TEXT NOT NULL,
instruction_index INTEGER NOT NULL,
slot INTEGER NULL,
trader_wallet TEXT NULL,
base_token_id INTEGER NOT NULL,
quote_token_id INTEGER NOT NULL,
base_amount TEXT NOT NULL,
quote_amount TEXT NOT NULL,
price_quote TEXT NULL,
trade_side INTEGER NOT NULL,
executed_at TEXT NOT NULL,
FOREIGN KEY(dex_id) REFERENCES kb_dexes(id),
FOREIGN KEY(pool_id) REFERENCES kb_pools(id),
FOREIGN KEY(pair_id) REFERENCES kb_pairs(id),
FOREIGN KEY(base_token_id) REFERENCES kb_tokens(id),
FOREIGN KEY(quote_token_id) REFERENCES kb_tokens(id),
UNIQUE(signature, instruction_index)
)
"#,
r#"
CREATE INDEX IF NOT EXISTS kb_idx_swaps_pool_id
ON kb_swaps (pool_id)
"#,
r#"
CREATE INDEX IF NOT EXISTS kb_idx_swaps_executed_at
ON kb_swaps (executed_at)
"#,
r#"
CREATE TABLE IF NOT EXISTS kb_liquidity_events (
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
dex_id INTEGER NOT NULL,
pool_id INTEGER NOT NULL,
pair_id INTEGER NULL,
signature TEXT NOT NULL,
instruction_index INTEGER NOT NULL,
slot INTEGER NULL,
event_kind INTEGER NOT NULL,
actor_wallet TEXT NULL,
base_token_id INTEGER NOT NULL,
quote_token_id INTEGER NOT NULL,
lp_token_id INTEGER NULL,
base_amount TEXT NOT NULL,
quote_amount TEXT NOT NULL,
lp_amount TEXT NULL,
executed_at TEXT NOT NULL,
FOREIGN KEY(dex_id) REFERENCES kb_dexes(id),
FOREIGN KEY(pool_id) REFERENCES kb_pools(id),
FOREIGN KEY(pair_id) REFERENCES kb_pairs(id),
FOREIGN KEY(base_token_id) REFERENCES kb_tokens(id),
FOREIGN KEY(quote_token_id) REFERENCES kb_tokens(id),
FOREIGN KEY(lp_token_id) REFERENCES kb_tokens(id),
UNIQUE(signature, instruction_index)
)
"#,
r#"
CREATE INDEX IF NOT EXISTS kb_idx_liquidity_events_pool_id
ON kb_liquidity_events (pool_id)
"#,
r#"
CREATE INDEX IF NOT EXISTS kb_idx_liquidity_events_executed_at
ON kb_liquidity_events (executed_at)
"#,
r#"
CREATE TABLE IF NOT EXISTS kb_token_mint_events (
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
token_id INTEGER NOT NULL,
signature TEXT NOT NULL,
instruction_index INTEGER NOT NULL,
slot INTEGER NULL,
authority_wallet TEXT NULL,
destination_wallet TEXT NULL,
amount TEXT NOT NULL,
supply_after TEXT NULL,
executed_at TEXT NOT NULL,
FOREIGN KEY(token_id) REFERENCES kb_tokens(id),
UNIQUE(signature, instruction_index)
)
"#,
r#"
CREATE INDEX IF NOT EXISTS kb_idx_token_mint_events_token_id
ON kb_token_mint_events (token_id)
"#,
r#"
CREATE INDEX IF NOT EXISTS kb_idx_token_mint_events_executed_at
ON kb_token_mint_events (executed_at)
"#,
r#"
CREATE TABLE IF NOT EXISTS kb_token_burn_events (
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
token_id INTEGER NOT NULL,
signature TEXT NOT NULL,
instruction_index INTEGER NOT NULL,
slot INTEGER NULL,
authority_wallet TEXT NULL,
source_wallet TEXT NULL,
amount TEXT NOT NULL,
supply_after TEXT NULL,
executed_at TEXT NOT NULL,
FOREIGN KEY(token_id) REFERENCES kb_tokens(id),
UNIQUE(signature, instruction_index)
)
"#,
r#"
CREATE INDEX IF NOT EXISTS kb_idx_token_burn_events_token_id
ON kb_token_burn_events (token_id)
"#,
r#"
CREATE INDEX IF NOT EXISTS kb_idx_token_burn_events_executed_at
ON kb_token_burn_events (executed_at)
"#,
];
for statement in statements {
let execute_result = sqlx::query(statement).execute(pool).await;