diff --git a/src-tauri/src/commands.rs b/src-tauri/src/commands.rs index a8f19fe..b405cd2 100644 --- a/src-tauri/src/commands.rs +++ b/src-tauri/src/commands.rs @@ -495,7 +495,7 @@ pub async fn stop_recording( .map_err(|e| WaError::new("storage", e.to_string()))?; let notes_md = crate::notes::MarkdownNotes.to_markdown(&segments, &speakers, None); - let _ = std::fs::write(meeting_dir(&meeting_id).join("notes.md"), notes_md); + let _ = state.store.update_notes(&meeting_id, ¬es_md).await; let _ = app.emit( "transcript://finalized", @@ -899,7 +899,7 @@ pub async fn reprocess_transcript( .map_err(|e| WaError::new("storage", e.to_string()))?; let notes_md = crate::notes::MarkdownNotes.to_markdown(&segments, &meeting.speakers, None); - let _ = std::fs::write(meeting_dir(&meeting_id).join("notes.md"), notes_md); + let _ = state.store.update_notes(&meeting_id, ¬es_md).await; let _ = app.emit( "transcript://finalized", @@ -981,7 +981,7 @@ pub async fn resume_transcription( .map_err(|e| WaError::new("storage", e.to_string()))?; let notes_md = crate::notes::MarkdownNotes.to_markdown(&segments, &speakers, None); - let _ = std::fs::write(meeting_dir(&meeting_id).join("notes.md"), notes_md); + let _ = state.store.update_notes(&meeting_id, ¬es_md).await; let _ = app.emit( "transcript://finalized", @@ -1004,6 +1004,18 @@ pub async fn list_meetings( .map_err(|e| WaError::new("storage", e.to_string())) } +/// Full-text search across transcripts + notes (Phase 8, FR-SEARCH-1) — +/// distinct from `list_meetings`' `query`, which only substring-matches the +/// title. +#[tauri::command] +pub async fn search(state: State<'_, AppState>, query: String) -> WaResult> { + state + .store + .search(&query) + .await + .map_err(|e| WaError::new("storage", e.to_string())) +} + #[tauri::command] pub async fn get_meeting(state: State<'_, AppState>, meeting_id: MeetingId) -> WaResult { state