Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for Neo4j based server entities. #11226

Merged
merged 1 commit into from Feb 20, 2020
Merged

Add support for Neo4j based server entities. #11226

merged 1 commit into from Feb 20, 2020

Conversation

michael-simons
Copy link
Contributor

This PR is a joint venture of @atomfrede and the Neo4j SDN-RX team. It brings a first work in progress of Neo4j integration with JHipster through Neo4j SDN-RX (Find the project here https://github.com/neo4j/sdn-rx and a description here https://medium.com/neo4j/spring-data-neo4j-rx-beta-iii-79573a773584).

The solution proposed in this PR stems directly from the discussion in #9967.

In the box is

  • support for Neo4j based entities and repositories
  • support for reactive repositories with Neo4j 4.0
  • Neo4j migrations (Flyway like db migration approach)
  • storage for the user and roles inside Neo4j if applicable

I missed the RFCs, so there's not a formal RFC, but I'm trying to recap this here:

Summary

This features adds support for Neo4j based on Spring Data Neo4j / RX.
The support includes Neo4j driver and client beans to access Neo4j without repositories as well as support for storing user information and entities through the common Spring Data repository abstraction.

Motivation

We are doing this to provide a different No-SQL solution for staring data, in form of Graphs. JHipster users will be able to benefit from a Graph database, Neo4j practitioners will be able to delegate all the CRUD cruft to the much appreciated and elegant solution of a generator like JHipster together with SDN/RX.

It doesn't add new concepts.

Documentation and support for JDL has been provided by these two PRs:

jhipster/jhipster.github.io#889

jhipster/jhipster-core#428

@atomfrede
Copy link
Member

Thanks @michael-simons for the work! As we have discussed it in the issue I think a RFC was not needed.

@atomfrede
Copy link
Member

Not sure why all mongo db tests are failing, seems unrelated 🤔

@atomfrede
Copy link
Member

Okay looks like breaking mongo builds are in fact related as they seem to work for other PRs from this morning. Will try to have look later or tomorrow on the 🚄

@atomfrede
Copy link
Member

🎉 Yeha, all tests are green!

@atomfrede
Copy link
Member

@jhipster/developers How should we proceed with the dependencies here? So we would need to update the jhipster bom to 3.4.0 here and streamline the generated pom (dependency versions). We need to merge and release jhipster/jhipster-core#428 to have jdl support. An open question is how to integrate neo into cour ci? Do we have some capacity left for github actions? How to integrate it into our nightly/daily builds? I think it can be done after we have it released, right?

@pascalgrimaud
Copy link
Member

@atomfrede :

@MathieuAA
Copy link
Member

I can do one tomorrow, no problem.

@pascalgrimaud
Copy link
Member

There are some conflicts, can you resolve it plz ?

@MathieuAA
Copy link
Member

By the way, feel free to merge your PR in JCore @atomfrede. I can do it tomorrow too if you give me the go

@atomfrede
Copy link
Member

There are some conflicts, can you resolve it plz ?

Sure, will have a look this evening.

I would say let's do it like this:

  • Merge and release JHCore
  • Merge this PR
  • Update main generator with latest JHCore (and bom)
  • Replace react + mysql with neo4j + angular
  • Add it to daily builds (already prepared a PR)

What can come later:

  • Update documentation (WIP PR is there)
  • Integrate into kotlin blueprint

what do you think?

@MathieuAA
Copy link
Member

JCore's V7 is released

@atomfrede
Copy link
Member

@MathieuAA thanks!

This commit brings in

* A couple of new dependencies:
  - SDN/RX (Next gen Spring Data Neo4j support, including reactive
  repositories)
  - Neo4j Migrations (Flyway style migrations for Neo4j)
  - Testcontainers (in scope test)

* Support for Neo4j repositories in server and entity server
* Health endpoint for Neo4j including translations
* Required tests (expected files, integrations tests etc.)

Co-authored-by: Michael Simons <michael.simons@neo4j.com>
@atomfrede atomfrede merged commit 5d64b6c into jhipster:master Feb 20, 2020
@michael-simons
Copy link
Contributor Author

michael-simons commented Feb 22, 2020

Awesome and so far, thank's to everyone involved. Again, hat-tip to @atomfrede for working his way through our new Spring Data integration! Your feedback and test was super valuable.

We are currently writing the manual, should be finished by the end of the month, early March:
https://github.com/neo4j/sdn-rx

@pascalgrimaud pascalgrimaud added this to the 6.8.0 milestone Mar 3, 2020
@atomfrede
Copy link
Member

@pascalgrimaud
Copy link
Member

@atomfrede : just approuved

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants