Class GraphStoreCatalogBusinessFacade


  • public class GraphStoreCatalogBusinessFacade
    extends java.lang.Object
    This layer is shared between Neo4j and other integrations. It is entry-point agnostic. "Business facade" to distinguish it from "procedure facade" and similar.

    Here we have just business logic: no Neo4j bits or other integration bits, just Java POJO things.

    By nature business logic is going to be bespoke, so one method per logical thing. Take graphExists(String, org.neo4j.gds.api.DatabaseId, String) for example: pure expressed business logic that layers above will use in multiple places, but! Any marshalling happens in those layers, not here.

    General validations could go here, think "graph exists" or "graph name not blank". Also, this is where you would put cross-cutting concerns, things that many pieces of business logic share. Generally though, a facade is really handy for others to pull in as a single dependency, not for hosting all teh codez. _Maybe_ you stick your business logic in here directly, if it is just one line or two; let's not be religious. Ideally though this is a facade over many individual pieces of business logic in separate classes, or behind other facades (oh gosh turtles, turtles everywhere :scream:).