53 lines
1.5 KiB
Rust
53 lines
1.5 KiB
Rust
// Integration of SQL module into RvLite
|
|
// This shows the minimal changes needed to lib.rs
|
|
|
|
use wasm_bindgen::prelude::*;
|
|
use serde::{Deserialize, Serialize};
|
|
use std::collections::HashMap;
|
|
|
|
// Import ruvector-core
|
|
use ruvector_core::{
|
|
VectorDB, VectorEntry, SearchQuery,
|
|
DistanceMetric,
|
|
};
|
|
use ruvector_core::types::DbOptions;
|
|
|
|
// SQL module
|
|
pub mod sql;
|
|
|
|
// RvLite struct needs to include sql_engine field:
|
|
// sql_engine: sql::SqlEngine,
|
|
|
|
// In RvLite::new(), initialize the SQL engine:
|
|
// sql_engine: sql::SqlEngine::new(),
|
|
|
|
// Replace the sql() method with this implementation:
|
|
/*
|
|
/// Execute SQL query
|
|
pub async fn sql(&self, query: String) -> Result<JsValue, JsValue> {
|
|
// Parse SQL
|
|
let mut parser = sql::SqlParser::new(&query)
|
|
.map_err(|e| RvLiteError {
|
|
message: format!("SQL parse error: {}", e),
|
|
kind: ErrorKind::SqlError,
|
|
})?;
|
|
|
|
let statement = parser.parse()
|
|
.map_err(|e| RvLiteError {
|
|
message: format!("SQL parse error: {}", e),
|
|
kind: ErrorKind::SqlError,
|
|
})?;
|
|
|
|
// Execute statement
|
|
let result = self.sql_engine.execute(statement)
|
|
.map_err(|e| JsValue::from(e))?;
|
|
|
|
// Serialize result
|
|
serde_wasm_bindgen::to_value(&result)
|
|
.map_err(|e| RvLiteError {
|
|
message: format!("Failed to serialize result: {}", e),
|
|
kind: ErrorKind::WasmError,
|
|
}.into())
|
|
}
|
|
*/
|