0.3.2
This commit is contained in:
@@ -107,9 +107,11 @@ CREATE TABLE IF NOT EXISTS listener_sessions (
|
||||
CREATE TABLE IF NOT EXISTS raw_http_rpc_messages (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
listener_session_id INTEGER NOT NULL,
|
||||
request_id INTEGER NOT NULL,
|
||||
method TEXT NOT NULL,
|
||||
request_body TEXT NOT NULL,
|
||||
response_body TEXT NOT NULL,
|
||||
status TEXT NOT NULL,
|
||||
created_at TEXT NOT NULL,
|
||||
FOREIGN KEY(listener_session_id) REFERENCES listener_sessions(id)
|
||||
);
|
||||
@@ -279,8 +281,52 @@ WHERE id = ?2;
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) async fn insert_raw_http_rpc_message(
|
||||
pool: &sqlx::SqlitePool,
|
||||
session_id: i64,
|
||||
request_id: i64,
|
||||
method: &str,
|
||||
request_body: &str,
|
||||
response_body: &str,
|
||||
status: &str,
|
||||
) -> core::result::Result<(), crate::KhbbError> {
|
||||
let now = chrono::Utc::now().to_rfc3339();
|
||||
let query_result = sqlx::query(
|
||||
r#"
|
||||
INSERT INTO raw_http_rpc_messages (
|
||||
listener_session_id,
|
||||
request_id,
|
||||
method,
|
||||
request_body,
|
||||
response_body,
|
||||
status,
|
||||
created_at
|
||||
)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?)
|
||||
"#,
|
||||
)
|
||||
.bind(session_id)
|
||||
.bind(request_id)
|
||||
.bind(method)
|
||||
.bind(request_body)
|
||||
.bind(response_body)
|
||||
.bind(status)
|
||||
.bind(now)
|
||||
.execute(pool)
|
||||
.await;
|
||||
match query_result {
|
||||
Ok(_) => Ok(()),
|
||||
Err(error) => Err(crate::KhbbError::Database {
|
||||
context: "insert raw http rpc message",
|
||||
message: error.to_string(),
|
||||
}),
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
fn build_test_config(database_url: std::string::String) -> crate::KhbbAppConfig {
|
||||
crate::KhbbAppConfig {
|
||||
database_url,
|
||||
@@ -404,4 +450,27 @@ WHERE id = ?1;
|
||||
let status = fetch_result.expect("fetch updated status");
|
||||
assert_eq!(status, "stopped");
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn insert_raw_http_rpc_message_inserts_row() {
|
||||
let pool = create_sqlite_pool("sqlite::memory:").await.expect("pool");
|
||||
ensure_sqlite_schema(&pool).await.expect("schema");
|
||||
let session = insert_listener_session(
|
||||
&pool,
|
||||
&crate::KhbbAppConfig {
|
||||
database_url: "sqlite::memory:".into(),
|
||||
solana_http_rpc_url: "http://localhost".into(),
|
||||
solana_ws_rpc_url: "ws://localhost".into(),
|
||||
yellowstone_grpc_url: None,
|
||||
log_filter: "info".into(),
|
||||
bootstrap_database: false,
|
||||
listener_poll_interval_ms: 1000,
|
||||
},
|
||||
)
|
||||
.await
|
||||
.expect("session");
|
||||
let result =
|
||||
insert_raw_http_rpc_message(&pool, session.id, 1, "getSlot", "{}", "{}", "ok").await;
|
||||
assert!(result.is_ok());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user