renamed DBIx -> App::DBIx; removed unnecesary select() as parent select method always calls query() which does the required re-bless function im our over-ridden query() method; provided additional methods row() and value(), as documented [unused in this app]
used alternative re-bless method inside DBIx query() and select() methods to provide new DBIx::Simple::Result::column() method, avoids using Module::Runtime
used Module::Runtime to get App::DB::Result::column() working, but only with conventional 'package' syntax, does not work via Feature::Compat::Class and maybe Perl 5.34 due to inability to find DBIx::Simple::Result despite multiple BEGIN blocks; login.tt still needs 'main' layout
moved App::DBIx dump_query code block into new App::Utils class, and moved the App::DBIx query() & dump_query() methods into new DBIx class, in same file as App::DB
implemented Local::Utils dump_query function, and a package (App::DB::Result) to overload DBIx::Simple::Result, but its functions are not available to App::DBIx, possibly due to Feature::Compat::Class limitations
major rewrite - combined separate docs-lib and moongate apps into single app using prefixes with multiple route files; merged DB functions into model which is now a D2 plugin, providing encapsulated model domains (infolib, moongate & dpw); uses route names to allow tt to call uri_for_route, but some caveats: * route names must be unique across all route files * uri_for_route cannot be used in any template loaded after a forward since the data required in request.uri_for_route($name) is deleted during the forwarding process leading to fatal error when tt calls the uri_for_route function; META function no longer works since tt WRAPPER function disabled to allow routes to define layout
changed $cols to $fields in App::DB to disambiguate from @cols; cosmetic change to gitlog() method for brevity; root ('/') route needs to capture query_param when forwarded; tests need cookie_headers for routes recently protected by authentication