MCPcopy Create free account
hub / github.com/douglance/devsql / detect_tables

Function detect_tables

crates/devsql/src/engine.rs:764–822  ·  view source on GitHub ↗

Detect which tables are needed from a SQL query. Returns a 3-tuple: (claude_tables, git_tables, code_tables).

(query: &str)

Source from the content-addressed store, hash-verified

762///
763/// Returns a 3-tuple: (claude_tables, git_tables, code_tables).
764pub fn detect_tables(query: &str) -> (Vec<String>, Vec<String>, Vec<String>) {
765 let query_upper = query.to_uppercase();
766
767 let claude_tables = [
768 "history",
769 "jhistory",
770 "codex_history",
771 "transcripts",
772 "sessions",
773 "todos",
774 "stats",
775 ];
776 let git_tables = [
777 "commits",
778 "commit_parents",
779 "branches",
780 "tags",
781 "refs",
782 "stashes",
783 "reflog",
784 "diffs",
785 "diff_files",
786 "blame",
787 "config",
788 "remotes",
789 "submodules",
790 "status",
791 "worktrees",
792 "hooks",
793 "notes",
794 ];
795 let code_tables = [
796 "source_files",
797 "source_lines",
798 "symbols",
799 "imports",
800 "ast_nodes",
801 ];
802
803 let needed_claude: Vec<String> = claude_tables
804 .iter()
805 .filter(|t| query_mentions_table(&query_upper, t))
806 .map(|s| s.to_string())
807 .collect();
808
809 let needed_git: Vec<String> = git_tables
810 .iter()
811 .filter(|t| query_mentions_table(&query_upper, t))
812 .map(|s| s.to_string())
813 .collect();
814
815 let needed_code: Vec<String> = code_tables
816 .iter()
817 .filter(|t| query_mentions_table(&query_upper, t))
818 .map(|s| s.to_string())
819 .collect();
820
821 (needed_claude, needed_git, needed_code)

Calls 1

query_mentions_tableFunction · 0.85