feat: implement comprehensive query paradigm zoo system (issue #62)
- Created extensible BaseQueryParadigm interface with standardized QueryResult format - Implemented QueryParadigmRegistry for paradigm discovery and management - Added 5 working paradigms: SQL, FTS, GraphQL, JSONPath, Natural Language - Documented 9 additional paradigms: QBE, Batch Manipulation, Visual Query Builder, REST API, NoSQL, UNIX Pipeline, XPath/XQuery, RAG, Data Transformation - Integrated full CLI interface: list, search, show, exec, categories commands - Added comprehensive test suite with 23 test cases covering all components - Auto-registration system enables easy addition of new paradigms - Organized paradigms by category (structural, textual, semantic, visual, procedural, network) and complexity (beginner, intermediate, advanced) 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
120
markitect/query_paradigms/paradigms/batch_paradigm.py
Normal file
120
markitect/query_paradigms/paradigms/batch_paradigm.py
Normal file
@@ -0,0 +1,120 @@
|
||||
"""
|
||||
Batch Manipulation Paradigm - Export/Edit/Import workflows.
|
||||
"""
|
||||
|
||||
import time
|
||||
from typing import Dict, Any, List, Optional
|
||||
|
||||
from ..base import BaseQueryParadigm, QueryResult
|
||||
|
||||
|
||||
class BatchManipulationParadigm(BaseQueryParadigm):
|
||||
"""Batch manipulation paradigm for export/edit/import workflows."""
|
||||
|
||||
@property
|
||||
def name(self) -> str:
|
||||
return "Batch Manipulation"
|
||||
|
||||
@property
|
||||
def description(self) -> str:
|
||||
return "Export data to external formats (CSV/Excel), edit outside MarkiTect, then re-import with validation"
|
||||
|
||||
@property
|
||||
def category(self) -> str:
|
||||
return "procedural"
|
||||
|
||||
@property
|
||||
def complexity(self) -> str:
|
||||
return "intermediate"
|
||||
|
||||
def execute(self, query: str, config: Dict[str, Any] = None) -> QueryResult:
|
||||
"""Execute batch operation (not yet implemented)."""
|
||||
start_time = time.time()
|
||||
|
||||
# This is a documentation paradigm - not yet implemented
|
||||
execution_time = (time.time() - start_time) * 1000
|
||||
|
||||
return QueryResult(
|
||||
paradigm=self.name,
|
||||
query=query,
|
||||
execution_time_ms=execution_time,
|
||||
result_count=0,
|
||||
results=[],
|
||||
metadata={
|
||||
"status": "not_implemented",
|
||||
"implementation_issue": "TBD - to be created",
|
||||
"description": "Batch manipulation enables export to CSV/Excel, external editing, and validated re-import"
|
||||
},
|
||||
success=False,
|
||||
error_message="Batch Manipulation paradigm not yet implemented. This paradigm will enable export/edit/import workflows."
|
||||
)
|
||||
|
||||
def get_examples(self) -> List[Dict[str, str]]:
|
||||
"""Get example batch operations."""
|
||||
return [
|
||||
{
|
||||
"name": "Export to CSV",
|
||||
"description": "Export query results to CSV for external editing",
|
||||
"query": "export --format=csv --query='SELECT * FROM files WHERE type=\"markdown\"' --output=files.csv"
|
||||
},
|
||||
{
|
||||
"name": "Export to Excel",
|
||||
"description": "Export with multiple sheets for complex data",
|
||||
"query": "export --format=xlsx --sheets='files,tags,authors' --output=markitect_data.xlsx"
|
||||
},
|
||||
{
|
||||
"name": "Import from CSV",
|
||||
"description": "Import edited data with validation",
|
||||
"query": "import --format=csv --file=edited_files.csv --validate --dry-run"
|
||||
},
|
||||
{
|
||||
"name": "Batch tag update",
|
||||
"description": "Export tags, edit in Excel, re-import",
|
||||
"query": "export --format=xlsx --table=file_tags --output=tags.xlsx; import --file=tags_edited.xlsx --table=file_tags"
|
||||
}
|
||||
]
|
||||
|
||||
def validate_query(self, query: str) -> tuple[bool, Optional[str]]:
|
||||
"""Validate batch operation command."""
|
||||
if not query.strip():
|
||||
return False, "Batch operation command cannot be empty"
|
||||
|
||||
valid_commands = ['export', 'import', 'validate', 'transform']
|
||||
command = query.strip().split()[0]
|
||||
|
||||
if command not in valid_commands:
|
||||
return False, f"Command must be one of: {', '.join(valid_commands)}"
|
||||
|
||||
return True, None
|
||||
|
||||
def get_syntax_help(self) -> str:
|
||||
"""Get syntax help for batch operations."""
|
||||
return """Batch Manipulation Syntax:
|
||||
|
||||
Export Operations:
|
||||
export --format=<csv|xlsx|json> --query="<SQL>" --output=<filename>
|
||||
export --format=<csv|xlsx|json> --table=<table_name> --output=<filename>
|
||||
|
||||
Import Operations:
|
||||
import --format=<csv|xlsx|json> --file=<filename> [--table=<table>] [--validate] [--dry-run]
|
||||
|
||||
Transform Operations:
|
||||
transform --file=<input> --script=<transformation> --output=<output>
|
||||
|
||||
Export Options:
|
||||
--format: Output format (csv, xlsx, json)
|
||||
--query: SQL query to define export data
|
||||
--table: Specific table to export
|
||||
--output: Output filename
|
||||
|
||||
Import Options:
|
||||
--format: Input format (csv, xlsx, json)
|
||||
--file: Input filename
|
||||
--table: Target table (auto-detected if not specified)
|
||||
--validate: Validate data before import
|
||||
--dry-run: Show what would be imported without actually importing
|
||||
|
||||
Examples:
|
||||
export --format=csv --query="SELECT * FROM files WHERE author='Alice'" --output=alice_files.csv
|
||||
import --format=csv --file=edited_files.csv --validate --dry-run
|
||||
"""
|
||||
Reference in New Issue
Block a user