Funding request: [Flow Light] Routing: Move ObjectPathMapping to a cache

This is one of 3 tasks in a combination to create a Flow Light

Since there is a direct dependency on the Doctrine persistence layer inside the DynamicRoutePartValue this funding request will only make sense if the Split Doctrine Dependency from Neos.Flow is accepted`

What is the purpose of this project?

To remove the need of a database table to store routing information and instead move this to a cache.

Moving this storage from a database to a cache is a step on the way to create a Flow Light where there is no database and can simplify the setup even more.

What does it take to get started?

We have the knowledge and concept at hand. I have a rough prototype at hand already.

What will you be doing

I will create a backward supported transition from database storage to a cache. The developer will not “feel” any difference, since the routing syntax is similar as always.

I will introduce a number of interfaces that can be overridden directly via Objects.yaml for other implementations to take over for the storage

Additional goals:

  • I will like to have the new route storing so take the “domain” of a request into account, so it doesn’t create “[slug]-1” when a request for both domain1.com and domain2.com has a similar objectpath.

When is it considered done?

It’s considered done when:

  • All tests passes
  • We can run a known Flow applications with the ObjectPathMappin stored in the cache

How long does it take?

Since there is a direct dependency on the Doctrine persistence layer inside the DynamicRoutePartValue this funding request will only make sense if the Split Doctrine Dependency from Neos.Flow is accepted`

I’m very cautious with this estimate. But somewhere between 15-20 hours. For the sake of this funding request I will go for the largest (worst case)

How mouch money are you asking for?

Not knowing the hourly rate this is calculated with a hourly rate of €100

20 hours * €100 = €2000

1 Like

I like the idea. Just a technical remarks/question:

Do you already have a plan on how to do this?
Within the route part handler you don’t have access to the request, so this should probably be done via Routing Parameters. But that would require a HTTP component that is probably not needed in 99%+ of cases.

The RouteContext already has the HTTP request, so I think this would be doable without another component even. But yes, needs probably a bit more thought, it’s not quite that trivial. The change to the RoutingParameters was a good start to make it more plausible though!

Right, but that’s not available to the route part handlers.
Also you’d have to take care of URLs pointing to a different domain than the current one…
Maybe this new feature should be skipped for v1 and/or implemented with a route part option (e.g. partition that is added to the cache entry identifier)

Sorry, another remark I forgot at first:

The idea of the “ObjectPathMapping” was to have stable URLs, so the corresponding cache should probably be “peristent” by default

1 Like