refactor(ctx): remove dead code from ctx integration
This commit is contained in:
parent
f50811cfdb
commit
4f2b8b3183
6 changed files with 4 additions and 81 deletions
2
ctx
2
ctx
|
|
@ -8,9 +8,7 @@ Usage: ctx <command> [args]
|
||||||
|
|
||||||
import sqlite3
|
import sqlite3
|
||||||
import sys
|
import sys
|
||||||
import os
|
|
||||||
import json
|
import json
|
||||||
from datetime import datetime, timezone
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
DB_PATH = Path.home() / ".claude-context" / "context.db"
|
DB_PATH = Path.home() / ".claude-context" / "context.db"
|
||||||
|
|
|
||||||
|
|
@ -5,14 +5,6 @@ use rusqlite::{Connection, params};
|
||||||
use serde::Serialize;
|
use serde::Serialize;
|
||||||
use std::sync::Mutex;
|
use std::sync::Mutex;
|
||||||
|
|
||||||
#[derive(Debug, Clone, Serialize)]
|
|
||||||
pub struct CtxProject {
|
|
||||||
pub name: String,
|
|
||||||
pub description: String,
|
|
||||||
pub work_dir: Option<String>,
|
|
||||||
pub created_at: String,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Clone, Serialize)]
|
#[derive(Debug, Clone, Serialize)]
|
||||||
pub struct CtxEntry {
|
pub struct CtxEntry {
|
||||||
pub project: String,
|
pub project: String,
|
||||||
|
|
@ -142,14 +134,11 @@ impl CtxDb {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Register a project in the ctx database (creates if not exists).
|
/// Register a project in the ctx database (creates if not exists).
|
||||||
|
/// Opens a brief read-write connection; the main self.conn stays read-only.
|
||||||
pub fn register_project(&self, name: &str, description: &str, work_dir: Option<&str>) -> Result<(), String> {
|
pub fn register_project(&self, name: &str, description: &str, work_dir: Option<&str>) -> Result<(), String> {
|
||||||
let db_path = Self::db_path();
|
let db_path = Self::db_path();
|
||||||
if !db_path.exists() {
|
|
||||||
return Err("ctx database not found".to_string());
|
|
||||||
}
|
|
||||||
|
|
||||||
let conn = Connection::open(&db_path)
|
let conn = Connection::open(&db_path)
|
||||||
.map_err(|e| format!("Failed to open database: {e}"))?;
|
.map_err(|e| format!("ctx database not found: {e}"))?;
|
||||||
|
|
||||||
conn.execute(
|
conn.execute(
|
||||||
"INSERT OR IGNORE INTO sessions (name, description, work_dir) VALUES (?1, ?2, ?3)",
|
"INSERT OR IGNORE INTO sessions (name, description, work_dir) VALUES (?1, ?2, ?3)",
|
||||||
|
|
@ -159,30 +148,6 @@ impl CtxDb {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn list_projects(&self) -> Result<Vec<CtxProject>, String> {
|
|
||||||
let lock = self.conn.lock().unwrap();
|
|
||||||
let conn = lock.as_ref().ok_or("ctx database not found")?;
|
|
||||||
|
|
||||||
let mut stmt = conn
|
|
||||||
.prepare("SELECT name, description, work_dir, created_at FROM sessions ORDER BY name")
|
|
||||||
.map_err(|e| format!("ctx query failed: {e}"))?;
|
|
||||||
|
|
||||||
let projects = stmt
|
|
||||||
.query_map([], |row| {
|
|
||||||
Ok(CtxProject {
|
|
||||||
name: row.get(0)?,
|
|
||||||
description: row.get(1)?,
|
|
||||||
work_dir: row.get(2)?,
|
|
||||||
created_at: row.get(3)?,
|
|
||||||
})
|
|
||||||
})
|
|
||||||
.map_err(|e| format!("ctx query failed: {e}"))?
|
|
||||||
.collect::<Result<Vec<_>, _>>()
|
|
||||||
.map_err(|e| format!("ctx row read failed: {e}"))?;
|
|
||||||
|
|
||||||
Ok(projects)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn get_context(&self, project: &str) -> Result<Vec<CtxEntry>, String> {
|
pub fn get_context(&self, project: &str) -> Result<Vec<CtxEntry>, String> {
|
||||||
let lock = self.conn.lock().unwrap();
|
let lock = self.conn.lock().unwrap();
|
||||||
let conn = lock.as_ref().ok_or("ctx database not found")?;
|
let conn = lock.as_ref().ok_or("ctx database not found")?;
|
||||||
|
|
@ -268,7 +233,7 @@ impl CtxDb {
|
||||||
project: row.get(0)?,
|
project: row.get(0)?,
|
||||||
key: row.get(1)?,
|
key: row.get(1)?,
|
||||||
value: row.get(2)?,
|
value: row.get(2)?,
|
||||||
updated_at: String::new(),
|
updated_at: String::new(), // FTS5 virtual table doesn't store updated_at
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
.map_err(|e| format!("ctx search failed: {e}"))?
|
.map_err(|e| format!("ctx search failed: {e}"))?
|
||||||
|
|
@ -295,14 +260,6 @@ mod tests {
|
||||||
let _db = CtxDb::new();
|
let _db = CtxDb::new();
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn test_list_projects_missing_db_returns_error() {
|
|
||||||
let db = make_missing_db();
|
|
||||||
let result = db.list_projects();
|
|
||||||
assert!(result.is_err());
|
|
||||||
assert_eq!(result.unwrap_err(), "ctx database not found");
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_get_context_missing_db_returns_error() {
|
fn test_get_context_missing_db_returns_error() {
|
||||||
let db = make_missing_db();
|
let db = make_missing_db();
|
||||||
|
|
|
||||||
|
|
@ -192,11 +192,6 @@ fn ctx_register_project(state: State<'_, AppState>, name: String, description: S
|
||||||
state.ctx_db.register_project(&name, &description, work_dir.as_deref())
|
state.ctx_db.register_project(&name, &description, work_dir.as_deref())
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tauri::command]
|
|
||||||
fn ctx_list_projects(state: State<'_, AppState>) -> Result<Vec<ctx::CtxProject>, String> {
|
|
||||||
state.ctx_db.list_projects()
|
|
||||||
}
|
|
||||||
|
|
||||||
#[tauri::command]
|
#[tauri::command]
|
||||||
fn ctx_get_context(state: State<'_, AppState>, project: String) -> Result<Vec<ctx::CtxEntry>, String> {
|
fn ctx_get_context(state: State<'_, AppState>, project: String) -> Result<Vec<ctx::CtxEntry>, String> {
|
||||||
state.ctx_db.get_context(&project)
|
state.ctx_db.get_context(&project)
|
||||||
|
|
@ -551,7 +546,6 @@ pub fn run() {
|
||||||
ssh_session_delete,
|
ssh_session_delete,
|
||||||
ctx_init_db,
|
ctx_init_db,
|
||||||
ctx_register_project,
|
ctx_register_project,
|
||||||
ctx_list_projects,
|
|
||||||
ctx_get_context,
|
ctx_get_context,
|
||||||
ctx_get_shared,
|
ctx_get_shared,
|
||||||
ctx_get_summaries,
|
ctx_get_summaries,
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,5 @@
|
||||||
import { invoke } from '@tauri-apps/api/core';
|
import { invoke } from '@tauri-apps/api/core';
|
||||||
|
|
||||||
export interface CtxProject {
|
|
||||||
name: string;
|
|
||||||
description: string;
|
|
||||||
work_dir: string | null;
|
|
||||||
created_at: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface CtxEntry {
|
export interface CtxEntry {
|
||||||
project: string;
|
project: string;
|
||||||
key: string;
|
key: string;
|
||||||
|
|
@ -28,10 +21,6 @@ export async function ctxRegisterProject(name: string, description: string, work
|
||||||
return invoke('ctx_register_project', { name, description, workDir: workDir ?? null });
|
return invoke('ctx_register_project', { name, description, workDir: workDir ?? null });
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function ctxListProjects(): Promise<CtxProject[]> {
|
|
||||||
return invoke('ctx_list_projects');
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function ctxGetContext(project: string): Promise<CtxEntry[]> {
|
export async function ctxGetContext(project: string): Promise<CtxEntry[]> {
|
||||||
return invoke('ctx_get_context', { project });
|
return invoke('ctx_get_context', { project });
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -46,7 +46,7 @@
|
||||||
dbMissing = false;
|
dbMissing = false;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
error = `${e}`;
|
error = `${e}`;
|
||||||
dbMissing = error.includes('not found');
|
dbMissing = error.includes('not found'); // Coupled to Rust error text "ctx database not found"
|
||||||
} finally {
|
} finally {
|
||||||
loading = false;
|
loading = false;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,15 +0,0 @@
|
||||||
<script lang="ts">
|
|
||||||
import ContextPane from '../Context/ContextPane.svelte';
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<div class="context-tab">
|
|
||||||
<ContextPane onExit={() => {}} />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
.context-tab {
|
|
||||||
height: 100%;
|
|
||||||
overflow: hidden;
|
|
||||||
min-width: 22em;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue