0xPlaygrounds / 0xPlaygrounds/kg-node

feat: Neo4j passthrough queries

Open
#8 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
10
Forks
5
PR merge metrics
No merged PRs in 30d

Description

### Description
Add an additional endpoint to the API to forward queries to the Neo4j database.

### Motivation
Although the GRC20 indexer stack now uses a GraphQL API to serve KG data, there are still uses cases that would benefit from direct access to the underlying Neo4j database (e.g.: GraphRag).

### Implementation
Add an additional route `POST /neo4j` which expects the request bodies of the following form:
```json
{
"query": "MATCH (n) WHERE n.foo = $foo RETURN n",
"params": {
"foo": "bar"
}
}
```
where `"query"` is the cypher query to execute and `"params"` are optional query parameters.

The response body would contain the data returned by Neo4j serialized to JSON without any transformations.

### Alternatives
An alternative would be to add this "passthrough" route to the GraphQL API, however it's unclear what the return type would be (i.e.: how the Neo4j data could be converted to GraphQL entities)

Contributor guide

No contributing guide indexed for this repository

Research direction

Look for the existing API routes in the codebase, likely in a module like src/api or src/routes. Understand how the current GraphQL endpoint is set up. The new POST /neo4j route needs to be added, which will involve parsing the JSON request, executing the Cypher query against a Neo4j driver (check for existing database connection setup), and returning the raw Neo4j response as JSON. Testing will require a running Neo4j instance or a mock.

Written by the indexing model from the issue text.

Assessment

Tech stack
neo4j, rust
Domain
api, backend, databases
Issue type
Feature
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.