diff --git a/crates/semantic_index/src/db.rs b/crates/semantic_index/src/db.rs index a667ff877c2e02c65e669e10b7fdbc07e319653b..74e1021b152f4bdaf36e3b780d9288bed374466b 100644 --- a/crates/semantic_index/src/db.rs +++ b/crates/semantic_index/src/db.rs @@ -66,24 +66,28 @@ impl VectorDatabase { fn initialize_database(&self) -> Result<()> { rusqlite::vtab::array::load_module(&self.db)?; + // Delete existing tables, if SEMANTIC_INDEX_VERSION is bumped if self .get_existing_version() .map_or(false, |version| version == SEMANTIC_INDEX_VERSION as i64) { + log::trace!("vector database schema up to date"); return Ok(()); } + log::trace!("vector database schema out of date. updating..."); self.db - .execute( - " - DROP TABLE IF EXISTS documents; - DROP TABLE IF EXISTS files; - DROP TABLE IF EXISTS worktrees; - DROP TABLE IF EXISTS semantic_index_config; - ", - [], - ) - .context("failed to drop tables")?; + .execute("DROP TABLE IF EXISTS documents", []) + .context("failed to drop 'documents' table")?; + self.db + .execute("DROP TABLE IF EXISTS files", []) + .context("failed to drop 'files' table")?; + self.db + .execute("DROP TABLE IF EXISTS worktrees", []) + .context("failed to drop 'worktrees' table")?; + self.db + .execute("DROP TABLE IF EXISTS semantic_index_config", []) + .context("failed to drop 'semantic_index_config' table")?; // Initialize Vector Databasing Tables self.db.execute( @@ -133,6 +137,7 @@ impl VectorDatabase { [], )?; + log::trace!("vector database initialized with updated schema."); Ok(()) } diff --git a/crates/semantic_index/src/semantic_index.rs b/crates/semantic_index/src/semantic_index.rs index e6443870aa5312b4a7ea4ecfe72c134841923c66..f6575f6ad7188dbaf7ba56160d72cc12f678de10 100644 --- a/crates/semantic_index/src/semantic_index.rs +++ b/crates/semantic_index/src/semantic_index.rs @@ -33,7 +33,7 @@ use util::{ ResultExt, }; -const SEMANTIC_INDEX_VERSION: usize = 3; +const SEMANTIC_INDEX_VERSION: usize = 4; const EMBEDDINGS_BATCH_SIZE: usize = 150; pub fn init( @@ -344,14 +344,6 @@ impl SemanticIndex { } for (worktree_id, documents, path, mtime, job_handle) in embeddings_queue.into_iter() { - // for document in documents.iter() { - // // TODO: Update this so it doesn't panic - // assert!( - // document.embedding.len() > 0, - // "Document Embedding Not Complete" - // ); - // } - db_update_tx .send(DbOperation::InsertFile { worktree_id,