Skip to content

Conversation

nester-neo4j
Copy link
Contributor

This pull request introduces a new tool, neo4j-schema, for extracting and processing comprehensive schema information from Neo4j databases. It includes updates to the documentation, implementation of caching mechanisms, helper utilities for schema transformation, and corresponding unit tests. The most important changes are grouped by theme below:

Tool Integration:

  • cmd/root.go: Added import for the new neo4j-schema tool to integrate it into the application.

Documentation:

  • docs/en/resources/tools/neo4j/neo4j-schema.md: Added detailed documentation for the neo4j-schema tool, describing its functionality, caching behavior, and usage examples.

Caching Implementation:

  • internal/tools/neo4j/neo4jschema/cache/cache.go: Implemented a thread-safe, in-memory cache with expiration and optional janitor for cleaning expired items.

Unit Tests:

  • internal/tools/neo4j/neo4jschema/cache/cache_test.go: Added comprehensive tests for the caching system, including functionality for setting, retrieving, expiration, janitor cleanup, and concurrent access.

Helper Utilities:

  • internal/tools/neo4j/neo4jschema/helpers/helpers.go: Added utility functions for processing schema data, including support for APOC and native Cypher queries, and converting raw query results into structured formats.

@nester-neo4j nester-neo4j requested a review from a team as a code owner July 24, 2025 00:25
@kurtisvg kurtisvg changed the title feat: Neo4j tools enhancements - neo4j-schema feat: add neo4j-schema tool Jul 24, 2025
@Yuan325
Copy link
Contributor

Yuan325 commented Jul 24, 2025

/gcbrun

@Yuan325 Yuan325 added tests: run Label to trigger Github Action tests. docs: deploy-preview Label to trigger Github Action docs preview. labels Jul 24, 2025
@github-actions github-actions bot removed the tests: run Label to trigger Github Action tests. label Jul 24, 2025
Copy link
Contributor

Copy link
Contributor

@Yuan325 Yuan325 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM with a small nit. Thank you!

@nester-neo4j
Copy link
Contributor Author

LGTM with a small nit. Thank you!

@Yuan325 Thank you very much for looking at it. I accepted proposed changes and it should be ready to go. Please merge when have time

@Yuan325
Copy link
Contributor

Yuan325 commented Jul 24, 2025

/gcbrun

@Yuan325 Yuan325 added the tests: run Label to trigger Github Action tests. label Jul 24, 2025
@github-actions github-actions bot removed the tests: run Label to trigger Github Action tests. label Jul 24, 2025
@nester-neo4j
Copy link
Contributor Author

nester-neo4j commented Jul 24, 2025

@Yuan325 there was failing unit test, I fixed it already. Sorry was a last minute change. Please run /gcbrun again

@Yuan325
Copy link
Contributor

Yuan325 commented Jul 24, 2025

/gcbrun

@Yuan325 Yuan325 added the tests: run Label to trigger Github Action tests. label Jul 24, 2025
@github-actions github-actions bot removed the tests: run Label to trigger Github Action tests. label Jul 24, 2025
@Yuan325
Copy link
Contributor

Yuan325 commented Jul 24, 2025

Hi @nester-neo4j, we require integration test coverage of at least 50%, the integration tests is failing because of that --> currently at 47.4%.

@nester-neo4j
Copy link
Contributor Author

@Yuan325 very interesting. The cache test is failing with race condition and I can not reproduce it on my local environment. Looking into that

@nester-neo4j
Copy link
Contributor Author

Hi @nester-neo4j, we require integration test coverage of at least 50%, the integration tests is failing because of that --> currently at 47.4%.

I will add more tests there

@nester-neo4j
Copy link
Contributor Author

@Yuan325 I fixed race condition and added more integration tests to increase coverage. Can you run /gcbrun again ?

@Yuan325
Copy link
Contributor

Yuan325 commented Jul 25, 2025

/gcbrun

@Yuan325 Yuan325 added the tests: run Label to trigger Github Action tests. label Jul 25, 2025
@github-actions github-actions bot removed the tests: run Label to trigger Github Action tests. label Jul 25, 2025
@Yuan325
Copy link
Contributor

Yuan325 commented Jul 25, 2025

@nester-neo4j seems like we just need a final linting

@Yuan325
Copy link
Contributor

Yuan325 commented Jul 25, 2025

/gcbrun

@Yuan325 Yuan325 added the tests: run Label to trigger Github Action tests. label Jul 25, 2025
@github-actions github-actions bot removed the tests: run Label to trigger Github Action tests. label Jul 25, 2025
@nester-neo4j
Copy link
Contributor Author

@nester-neo4j seems like we just need a final linting

@Yuan325 yep, just removed unused functions, we should be good to go

@Yuan325
Copy link
Contributor

Yuan325 commented Jul 25, 2025

Thank you @nester-neo4j We'll include this to our today's release! :)

@Yuan325 Yuan325 enabled auto-merge (squash) July 25, 2025 00:37
@Yuan325 Yuan325 disabled auto-merge July 25, 2025 00:37
@Yuan325 Yuan325 changed the title feat: add neo4j-schema tool feat(tools/neo4j-schema): add neo4j-schema tool Jul 25, 2025
@Yuan325 Yuan325 enabled auto-merge (squash) July 25, 2025 00:38
@nester-neo4j
Copy link
Contributor Author

nester-neo4j commented Jul 25, 2025

@Yuan325 This is awesome. Thank you for the patience

@Yuan325 Yuan325 merged commit be7db3d into googleapis:main Jul 25, 2025
12 checks passed
github-actions bot pushed a commit that referenced this pull request Jul 25, 2025
This pull request introduces a new tool, `neo4j-schema`, for extracting
and processing comprehensive schema information from Neo4j databases. It
includes updates to the documentation, implementation of caching
mechanisms, helper utilities for schema transformation, and
corresponding unit tests. The most important changes are grouped by
theme below:

### Tool Integration:
- **`cmd/root.go`**: Added import for the new `neo4j-schema` tool to
integrate it into the application.

### Documentation:
- **`docs/en/resources/tools/neo4j/neo4j-schema.md`**: Added detailed
documentation for the `neo4j-schema` tool, describing its functionality,
caching behavior, and usage examples.

### Caching Implementation:
- **`internal/tools/neo4j/neo4jschema/cache/cache.go`**: Implemented a
thread-safe, in-memory cache with expiration and optional janitor for
cleaning expired items.

### Unit Tests:
- **`internal/tools/neo4j/neo4jschema/cache/cache_test.go`**: Added
comprehensive tests for the caching system, including functionality for
setting, retrieving, expiration, janitor cleanup, and concurrent access.

### Helper Utilities:
- **`internal/tools/neo4j/neo4jschema/helpers/helpers.go`**: Added
utility functions for processing schema data, including support for APOC
and native Cypher queries, and converting raw query results into
structured formats.

---------

Co-authored-by: Yuan Teoh <45984206+Yuan325@users.noreply.github.com> be7db3d
github-actions bot pushed a commit to renovate-bot/googleapis-_-genai-toolbox that referenced this pull request Jul 25, 2025
This pull request introduces a new tool, `neo4j-schema`, for extracting
and processing comprehensive schema information from Neo4j databases. It
includes updates to the documentation, implementation of caching
mechanisms, helper utilities for schema transformation, and
corresponding unit tests. The most important changes are grouped by
theme below:

### Tool Integration:
- **`cmd/root.go`**: Added import for the new `neo4j-schema` tool to
integrate it into the application.

### Documentation:
- **`docs/en/resources/tools/neo4j/neo4j-schema.md`**: Added detailed
documentation for the `neo4j-schema` tool, describing its functionality,
caching behavior, and usage examples.

### Caching Implementation:
- **`internal/tools/neo4j/neo4jschema/cache/cache.go`**: Implemented a
thread-safe, in-memory cache with expiration and optional janitor for
cleaning expired items.

### Unit Tests:
- **`internal/tools/neo4j/neo4jschema/cache/cache_test.go`**: Added
comprehensive tests for the caching system, including functionality for
setting, retrieving, expiration, janitor cleanup, and concurrent access.

### Helper Utilities:
- **`internal/tools/neo4j/neo4jschema/helpers/helpers.go`**: Added
utility functions for processing schema data, including support for APOC
and native Cypher queries, and converting raw query results into
structured formats.

---------

Co-authored-by: Yuan Teoh <45984206+Yuan325@users.noreply.github.com> be7db3d
Yuan325 added a commit that referenced this pull request Jul 25, 2025
🤖 I have created a release *beep* *boop*
---


##
[0.10.0](v0.9.0...v0.10.0)
(2025-07-25)


### Features

* Add `Map` parameters support
([#928](#928))
([4468bc9](4468bc9))
* Add Dataplex source and tool
([#847](#847))
([30c16a5](30c16a5))
* Add Looker source and tool
([#923](#923))
([c67e01b](c67e01b))
* Add support for null optional parameter
([#802](#802))
([a817b12](a817b12)),
closes [#736](#736)
* **prebuilt/alloydb-admin-config:** Add alloydb control plane as a
prebuilt config
([#937](#937))
([0b28b72](0b28b72))
* **prebuilt/mysql,prebuilt/mssql:** Add generic mysql and mssql
prebuilt tools
([#983](#983))
([c600c30](c600c30))
* **server/mcp:** Support MCP version 2025-06-18
([#898](#898))
([313d3ca](313d3ca))
* **sources/mssql:** Add support for encrypt connection parameter
([#874](#874))
([14a868f](14a868f))
* **sources/firestore:** Add Firestore as Source
([#786](#786))
([2bb790e](2bb790e))
* **sources/mongodb:** Add MongoDB Source
([#969](#969))
([74dbd61](74dbd61))
* **tools/alloydb-wait-for-operation:** Add wait for operation tool with
exponential backoff
([#920](#920))
([3f6ec29](3f6ec29))
* **tools/mongodb-aggregate:** Add MongoDB `aggregate` Tools
([#977](#977))
([bd399bb](bd399bb))
* **tools/mongodb-delete:** Add MongoDB `delete` Tools
([#974](#974))
([78e9752](78e9752))
* **tools/mongodb-find:** Add MongoDB `find` Tools
([#970](#970))
([a747475](a747475))
* **tools/mongodb-insert:** Add MongoDB `insert` Tools
([#975](#975))
([4c63f0c](4c63f0c))
* **tools/mongodb-update:** Add MongoDB `update` Tools
([#972](#972))
([dfde52c](dfde52c))
* **tools/neo4j-execute-cypher:** Add neo4j-execute-cypher for Neo4j
sources ([#946](#946))
([81d0505](81d0505))
* **tools/neo4j-schema:** Add neo4j-schema tool
([#978](#978))
([be7db3d](be7db3d))
* **tools/wait:** Create wait for tool
([#885](#885))
([ed5ef4c](ed5ef4c))


### Bug Fixes

* Fix document preview pipeline for forked PRs
([#950](#950))
([481cc60](481cc60))
* **prebuilt/firestore:** Mark database field as required in the
firestore prebuilt tools
([#959](#959))
([15417d4](15417d4))
* **prebuilt/cloud-sql-mssql:** Correct source reference for execute_sql
tool in cloud-sql-mssql.yaml prebuilt config
([#938](#938))
([d16728e](d16728e))
* **prebuilt/cloud-sql-mysql:** Update list_table tool
([#924](#924))
([2083ba5](2083ba5))
* Replace 'float' with 'number' in McpManifest
([#985](#985))
([59e23e1](59e23e1))
* **server/api:** Add logger to context in tool invoke handler
([#891](#891))
([8ce311f](8ce311f))
* **sources/looker:** Add agent tag to Looker API calls.
([#966](#966))
([f55dd6f](f55dd6f))
* **tools/bigquery-execute-sql:** Ensure invoke always returns a
non-null value
([#925](#925))
([9a55b80](9a55b80))
* **tools/mysqlsql:** Unmarshal json data from database during invoke
([#979](#979))
([ccc3498](ccc3498)),
closes [#840](#840)

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

---------

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Co-authored-by: Yuan Teoh <45984206+Yuan325@users.noreply.github.com>
github-actions bot pushed a commit that referenced this pull request Jul 25, 2025
🤖 I have created a release *beep* *boop*
---

##
[0.10.0](v0.9.0...v0.10.0)
(2025-07-25)

### Features

* Add `Map` parameters support
([#928](#928))
([4468bc9](4468bc9))
* Add Dataplex source and tool
([#847](#847))
([30c16a5](30c16a5))
* Add Looker source and tool
([#923](#923))
([c67e01b](c67e01b))
* Add support for null optional parameter
([#802](#802))
([a817b12](a817b12)),
closes [#736](#736)
* **prebuilt/alloydb-admin-config:** Add alloydb control plane as a
prebuilt config
([#937](#937))
([0b28b72](0b28b72))
* **prebuilt/mysql,prebuilt/mssql:** Add generic mysql and mssql
prebuilt tools
([#983](#983))
([c600c30](c600c30))
* **server/mcp:** Support MCP version 2025-06-18
([#898](#898))
([313d3ca](313d3ca))
* **sources/mssql:** Add support for encrypt connection parameter
([#874](#874))
([14a868f](14a868f))
* **sources/firestore:** Add Firestore as Source
([#786](#786))
([2bb790e](2bb790e))
* **sources/mongodb:** Add MongoDB Source
([#969](#969))
([74dbd61](74dbd61))
* **tools/alloydb-wait-for-operation:** Add wait for operation tool with
exponential backoff
([#920](#920))
([3f6ec29](3f6ec29))
* **tools/mongodb-aggregate:** Add MongoDB `aggregate` Tools
([#977](#977))
([bd399bb](bd399bb))
* **tools/mongodb-delete:** Add MongoDB `delete` Tools
([#974](#974))
([78e9752](78e9752))
* **tools/mongodb-find:** Add MongoDB `find` Tools
([#970](#970))
([a747475](a747475))
* **tools/mongodb-insert:** Add MongoDB `insert` Tools
([#975](#975))
([4c63f0c](4c63f0c))
* **tools/mongodb-update:** Add MongoDB `update` Tools
([#972](#972))
([dfde52c](dfde52c))
* **tools/neo4j-execute-cypher:** Add neo4j-execute-cypher for Neo4j
sources ([#946](#946))
([81d0505](81d0505))
* **tools/neo4j-schema:** Add neo4j-schema tool
([#978](#978))
([be7db3d](be7db3d))
* **tools/wait:** Create wait for tool
([#885](#885))
([ed5ef4c](ed5ef4c))

### Bug Fixes

* Fix document preview pipeline for forked PRs
([#950](#950))
([481cc60](481cc60))
* **prebuilt/firestore:** Mark database field as required in the
firestore prebuilt tools
([#959](#959))
([15417d4](15417d4))
* **prebuilt/cloud-sql-mssql:** Correct source reference for execute_sql
tool in cloud-sql-mssql.yaml prebuilt config
([#938](#938))
([d16728e](d16728e))
* **prebuilt/cloud-sql-mysql:** Update list_table tool
([#924](#924))
([2083ba5](2083ba5))
* Replace 'float' with 'number' in McpManifest
([#985](#985))
([59e23e1](59e23e1))
* **server/api:** Add logger to context in tool invoke handler
([#891](#891))
([8ce311f](8ce311f))
* **sources/looker:** Add agent tag to Looker API calls.
([#966](#966))
([f55dd6f](f55dd6f))
* **tools/bigquery-execute-sql:** Ensure invoke always returns a
non-null value
([#925](#925))
([9a55b80](9a55b80))
* **tools/mysqlsql:** Unmarshal json data from database during invoke
([#979](#979))
([ccc3498](ccc3498)),
closes [#840](#840)

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

---------

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Co-authored-by: Yuan Teoh <45984206+Yuan325@users.noreply.github.com> c45390e
github-actions bot pushed a commit to renovate-bot/googleapis-_-genai-toolbox that referenced this pull request Jul 25, 2025
🤖 I have created a release *beep* *boop*
---

##
[0.10.0](googleapis/genai-toolbox@v0.9.0...v0.10.0)
(2025-07-25)

### Features

* Add `Map` parameters support
([googleapis#928](googleapis#928))
([4468bc9](googleapis@4468bc9))
* Add Dataplex source and tool
([googleapis#847](googleapis#847))
([30c16a5](googleapis@30c16a5))
* Add Looker source and tool
([googleapis#923](googleapis#923))
([c67e01b](googleapis@c67e01b))
* Add support for null optional parameter
([googleapis#802](googleapis#802))
([a817b12](googleapis@a817b12)),
closes [googleapis#736](googleapis#736)
* **prebuilt/alloydb-admin-config:** Add alloydb control plane as a
prebuilt config
([googleapis#937](googleapis#937))
([0b28b72](googleapis@0b28b72))
* **prebuilt/mysql,prebuilt/mssql:** Add generic mysql and mssql
prebuilt tools
([googleapis#983](googleapis#983))
([c600c30](googleapis@c600c30))
* **server/mcp:** Support MCP version 2025-06-18
([googleapis#898](googleapis#898))
([313d3ca](googleapis@313d3ca))
* **sources/mssql:** Add support for encrypt connection parameter
([googleapis#874](googleapis#874))
([14a868f](googleapis@14a868f))
* **sources/firestore:** Add Firestore as Source
([googleapis#786](googleapis#786))
([2bb790e](googleapis@2bb790e))
* **sources/mongodb:** Add MongoDB Source
([googleapis#969](googleapis#969))
([74dbd61](googleapis@74dbd61))
* **tools/alloydb-wait-for-operation:** Add wait for operation tool with
exponential backoff
([googleapis#920](googleapis#920))
([3f6ec29](googleapis@3f6ec29))
* **tools/mongodb-aggregate:** Add MongoDB `aggregate` Tools
([googleapis#977](googleapis#977))
([bd399bb](googleapis@bd399bb))
* **tools/mongodb-delete:** Add MongoDB `delete` Tools
([googleapis#974](googleapis#974))
([78e9752](googleapis@78e9752))
* **tools/mongodb-find:** Add MongoDB `find` Tools
([googleapis#970](googleapis#970))
([a747475](googleapis@a747475))
* **tools/mongodb-insert:** Add MongoDB `insert` Tools
([googleapis#975](googleapis#975))
([4c63f0c](googleapis@4c63f0c))
* **tools/mongodb-update:** Add MongoDB `update` Tools
([googleapis#972](googleapis#972))
([dfde52c](googleapis@dfde52c))
* **tools/neo4j-execute-cypher:** Add neo4j-execute-cypher for Neo4j
sources ([googleapis#946](googleapis#946))
([81d0505](googleapis@81d0505))
* **tools/neo4j-schema:** Add neo4j-schema tool
([googleapis#978](googleapis#978))
([be7db3d](googleapis@be7db3d))
* **tools/wait:** Create wait for tool
([googleapis#885](googleapis#885))
([ed5ef4c](googleapis@ed5ef4c))

### Bug Fixes

* Fix document preview pipeline for forked PRs
([googleapis#950](googleapis#950))
([481cc60](googleapis@481cc60))
* **prebuilt/firestore:** Mark database field as required in the
firestore prebuilt tools
([googleapis#959](googleapis#959))
([15417d4](googleapis@15417d4))
* **prebuilt/cloud-sql-mssql:** Correct source reference for execute_sql
tool in cloud-sql-mssql.yaml prebuilt config
([googleapis#938](googleapis#938))
([d16728e](googleapis@d16728e))
* **prebuilt/cloud-sql-mysql:** Update list_table tool
([googleapis#924](googleapis#924))
([2083ba5](googleapis@2083ba5))
* Replace 'float' with 'number' in McpManifest
([googleapis#985](googleapis#985))
([59e23e1](googleapis@59e23e1))
* **server/api:** Add logger to context in tool invoke handler
([googleapis#891](googleapis#891))
([8ce311f](googleapis@8ce311f))
* **sources/looker:** Add agent tag to Looker API calls.
([googleapis#966](googleapis#966))
([f55dd6f](googleapis@f55dd6f))
* **tools/bigquery-execute-sql:** Ensure invoke always returns a
non-null value
([googleapis#925](googleapis#925))
([9a55b80](googleapis@9a55b80))
* **tools/mysqlsql:** Unmarshal json data from database during invoke
([googleapis#979](googleapis#979))
([ccc3498](googleapis@ccc3498)),
closes [googleapis#840](googleapis#840)

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

---------

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Co-authored-by: Yuan Teoh <45984206+Yuan325@users.noreply.github.com> c45390e
@nester-neo4j nester-neo4j mentioned this pull request Jul 29, 2025
1 task
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
docs: deploy-preview Label to trigger Github Action docs preview.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants