Skip to content

Conversation

@paule96
Copy link

@paule96 paule96 commented Nov 17, 2025

fixes #53

I open this to discuss better what is needed to bring Postgres Age support.
The intention is not to merge it ever. (still an extra package would be nicer)

Key points that maybe should be merged step by step into the main repository that could be issues by themselves.

0. Developer Story

I added a devcontainer setup to have a simple start. That can probably just be moved to the main without a problem.
The only thing that needs to be reviewed there is if it is okay to use Neo4j for development with that version. (We need the creation of multiple graphs, which is disabled in the free version)

1. Add a new semi Shared Library for Cypher

As you can see, I moved a lot of the cypher-related things into the shared library Graph.Model.Cypher.
The key point of that lib is to provide a common abstraction layer for Cypher based datasources. Because I started with trying to reuse the parts from the neo4j implementation, most parts of that are still builder based.
If it should be merged to main, it should be rewritten to a visitor pattern, which is common in LINQ-based systems.
neo4j is partly moved to an expression visitor pattern.

2. Added Age support

The open questions here are how to handle the tests that will never be successful on Postgres Age. Should we just override the interface methods and skip them, or is there another plan/way to do that?
Also still open question is where to put it. Maybe as this lib grows, it makes sense to create a GitHub org for it, with different repos for different providers.

Summary

Most of the things are still works in progress. It works, but is probably not in a state of creating a shippable thing.
So I hope we can find a way to discuss these quite big changes and find good solutions for all the problems.
I hope the code helps to understand some of the challenges.

Signed-off-by: Paul Jeschke <pjeschke@hmp-solutions.online>
Signed-off-by: Paul Jeschke <pjeschke@hmp-solutions.online>
Signed-off-by: Paul Jeschke <pjeschke@hmp-solutions.online>
Signed-off-by: Paul Jeschke <pjeschke@hmp-solutions.online>
Signed-off-by: Paul Jeschke <pjeschke@hmp-solutions.online>
adjust neo4j implementation to use the general cypher package

Signed-off-by: Paul Jeschke <pjeschke@hmp-solutions.online>
Signed-off-by: Paul Jeschke <pjeschke@hmp-solutions.online>
Signed-off-by: Paul Jeschke <pjeschke@hmp-solutions.online>
Signed-off-by: Paul Jeschke <pjeschke@hmp-solutions.online>
Signed-off-by: Paul Jeschke <pjeschke@hmp-solutions.online>
- use now visitor pattern
- try to support multi travers logic
- currently missing materialization, that's why the tests are broken

Signed-off-by: Paul Jeschke <pjeschke@hmp-solutions.online>
…ization class

Signed-off-by: Paul Jeschke <pjeschke@hmp-solutions.online>
Signed-off-by: Paul Jeschke <pjeschke@hmp-solutions.online>
Signed-off-by: Paul Jeschke <pjeschke@hmp-solutions.online>
Signed-off-by: Paul Jeschke <pjeschke@hmp-solutions.online>
Signed-off-by: Paul Jeschke <pjeschke@hmp-solutions.online>
Signed-off-by: Paul Jeschke <pjeschke@hmp-solutions.online>
Signed-off-by: Paul Jeschke <pjeschke@hmp-solutions.online>
Signed-off-by: Paul Jeschke <pjeschke@hmp-solutions.online>
Signed-off-by: Paul Jeschke <pjeschke@hmp-solutions.online>
Signed-off-by: Paul Jeschke <pjeschke@hmp-solutions.online>
Signed-off-by: Paul Jeschke <pjeschke@hmp-solutions.online>
Signed-off-by: Paul Jeschke <pjeschke@hmp-solutions.online>
Signed-off-by: Paul Jeschke <pjeschke@hmp-solutions.online>
Signed-off-by: Paul Jeschke <pjeschke@hmp-solutions.online>
Signed-off-by: Paul Jeschke <pjeschke@hmp-solutions.online>
Signed-off-by: Paul Jeschke <pjeschke@hmp-solutions.online>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature]: Postgres AGE Support

1 participant