This commit is contained in:
2026-04-30 12:37:01 +02:00
parent 37d54887d6
commit b3b0e882b2
14 changed files with 1324 additions and 9 deletions

View File

@@ -334,6 +334,14 @@ pub(crate) async fn ensure_schema(database: &crate::KbDatabase) -> Result<(), cr
if let Err(error) = result {
return Err(error);
}
let result = create_kb_pair_analytic_signals_table(pool).await;
if let Err(error) = result {
return Err(error);
}
let result = create_kb_idx_pair_analytic_signals_pair_id(pool).await;
if let Err(error) = result {
return Err(error);
}
Ok(())
}
}
@@ -1858,3 +1866,47 @@ ON kb_pair_candles(bucket_start_unix)
)
.await
}
async fn create_kb_pair_analytic_signals_table(
pool: &sqlx::SqlitePool,
) -> Result<(), crate::KbError> {
execute_sqlite_schema_statement(
pool,
"create_kb_pair_analytic_signals_table",
r#"
CREATE TABLE IF NOT EXISTS kb_pair_analytic_signals (
id INTEGER PRIMARY KEY AUTOINCREMENT,
pair_id INTEGER NOT NULL,
signal_kind TEXT NOT NULL,
severity INTEGER NOT NULL,
timeframe_seconds INTEGER NOT NULL,
bucket_start_unix INTEGER NOT NULL,
score REAL NULL,
signal_value_json TEXT NOT NULL,
first_transaction_id INTEGER NULL,
last_transaction_id INTEGER NULL,
created_at TEXT NOT NULL,
updated_at TEXT NOT NULL,
UNIQUE(pair_id, signal_kind, timeframe_seconds, bucket_start_unix),
FOREIGN KEY(pair_id) REFERENCES kb_pairs(id) ON DELETE CASCADE,
FOREIGN KEY(first_transaction_id) REFERENCES kb_chain_transactions(id) ON DELETE SET NULL,
FOREIGN KEY(last_transaction_id) REFERENCES kb_chain_transactions(id) ON DELETE SET NULL
)
"#,
)
.await
}
async fn create_kb_idx_pair_analytic_signals_pair_id(
pool: &sqlx::SqlitePool,
) -> Result<(), crate::KbError> {
execute_sqlite_schema_statement(
pool,
"create_kb_idx_pair_analytic_signals_pair_id",
r#"
CREATE INDEX IF NOT EXISTS kb_idx_pair_analytic_signals_pair_id
ON kb_pair_analytic_signals(pair_id)
"#,
)
.await
}