Skip to content

Architectuur: Datatable controllers delen ~80% logica — extract shared handler #140

Description

@ginkelsoft-development

Probleem

BuildoraDataTableController en RelationDatatableController delen ~80% van hun logica:

  • Request parsing (search term, sort, page, filters)
  • Resource resolution
  • Datatable instantiatie + column building
  • JSON response shaping

Het enige reële verschil is dat de relation-variant eerst een parent-model resolved.

Voorstel

Extract een DatatableRequestHandler service:

class DatatableRequestHandler
{
    public function handle(Request \$request, BuildoraResource \$resource, ?Model \$parent = null): JsonResponse
    {
        // shared logic
    }
}

Beide controllers worden thin wrappers:

public function __invoke(Request \$request, string \$resource)
{
    return \$this->handler->handle(\$request, \$this->resolve(\$resource));
}

Acceptatiecriteria

  • DatatableRequestHandler service bestaat
  • Beide controllers < 30 regels
  • Geen duplicaat-code tussen de twee controllers
  • Regression test: bestaande datatable + relation datatable functionaliteit werkt

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions