- 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>
88 lines
2.9 KiB
Python
88 lines
2.9 KiB
Python
"""
|
|
NoSQL Query Languages Paradigm - MongoDB, Cypher, etc.
|
|
"""
|
|
|
|
import time
|
|
from typing import Dict, Any, List, Optional
|
|
|
|
from ..base import BaseQueryParadigm, QueryResult
|
|
|
|
|
|
class NoSQLQueryParadigm(BaseQueryParadigm):
|
|
"""NoSQL query paradigm for document and graph databases."""
|
|
|
|
@property
|
|
def name(self) -> str:
|
|
return "NoSQL Queries"
|
|
|
|
@property
|
|
def description(self) -> str:
|
|
return "MongoDB-style queries, Cypher for graph traversal, and other NoSQL query languages"
|
|
|
|
@property
|
|
def category(self) -> str:
|
|
return "structural"
|
|
|
|
@property
|
|
def complexity(self) -> str:
|
|
return "advanced"
|
|
|
|
def execute(self, query: str, config: Dict[str, Any] = None) -> QueryResult:
|
|
"""Execute NoSQL query (not yet implemented)."""
|
|
start_time = time.time()
|
|
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": "NoSQL queries enable document and graph-based data access patterns"
|
|
},
|
|
success=False,
|
|
error_message="NoSQL Query paradigm not yet implemented."
|
|
)
|
|
|
|
def get_examples(self) -> List[Dict[str, str]]:
|
|
"""Get example NoSQL queries."""
|
|
return [
|
|
{
|
|
"name": "MongoDB-style find",
|
|
"description": "Find documents with specific criteria",
|
|
"query": "db.files.find({author: 'Alice', tags: {$in: ['tutorial']}})"
|
|
},
|
|
{
|
|
"name": "Cypher graph traversal",
|
|
"description": "Find related files through tags",
|
|
"query": "MATCH (f:File)-[:HAS_TAG]->(t:Tag)<-[:HAS_TAG]-(related:File) WHERE f.author = 'Alice' RETURN related"
|
|
},
|
|
{
|
|
"name": "Aggregation pipeline",
|
|
"description": "MongoDB aggregation for statistics",
|
|
"query": "db.files.aggregate([{$group: {_id: '$author', count: {$sum: 1}}}, {$sort: {count: -1}}])"
|
|
}
|
|
]
|
|
|
|
def validate_query(self, query: str) -> tuple[bool, Optional[str]]:
|
|
"""Validate NoSQL query syntax."""
|
|
if not query.strip():
|
|
return False, "NoSQL query cannot be empty"
|
|
return True, None
|
|
|
|
def get_syntax_help(self) -> str:
|
|
"""Get syntax help for NoSQL queries."""
|
|
return """NoSQL Query Syntax:
|
|
|
|
MongoDB-style:
|
|
db.collection.find({field: value})
|
|
db.collection.aggregate([{$match: {field: value}}])
|
|
|
|
Cypher (Neo4j):
|
|
MATCH (n:Label) WHERE n.property = 'value' RETURN n
|
|
|
|
Supported operations will include find, aggregate, graph traversal, and document manipulation.
|
|
""" |