Revision history for CatalystX-CRUD
0.01 3 October 2007
First version, released on an unsuspecting world.
0.02 22 October 2007
* Fixed Makefile.PL dependencies (added Catalyst::Component::ACCEPT_CONTEXT)
* Refactored Controller and Model to abstract a little more, notably
added the form_to_object() method in Controller.
* New File example implementation of the whole Model/Object/Iterator API.
0.03 22 October 2007
* add test for File implementation (and fix the bugs it revealed)
* fix AUTOLOAD to ignore DESTROY
0.04 25 October 2007
* rework view_on_single_result API in base Controller and tests for same
0.05 1 November 2007
* stash query in Controller results for View
* do_search() returns if no input
* Model reserved params now start with _
* some can/AUTOLOAD black magic to make Object/delegate stuff DWIM.
0.06 6 November 2007
* clean up temp files from make test [rt# 30425]
0.07 9 November 2007
* added count() method to base Controller
0.08 9 November 2007
* fix documentation for save() method.
0.09 10 November 2007
* fix missing precommit() default sub in Controller.pm
* fix AUTOLOAD hackery in Model.pm
0.10 12 Nov 2007
* simplify Iterator base class to hardcode 'delegate' method name
0.11 14 Nov 2007
* fix AUTOLOAD method to report correct object class on error
0.12 17 Nov 2007
* fix bug in Controller when determining whether do_search() should search.
0.13 19 Nov 2007
* fix bug in Controller when there is only one result in do_search().
0.14 23 Nov 2007
* add Tutorial
* fix bug (again) in Controller when there is only one result in do_search().
0.15 24 Nov 2007
* oops. actually include the tutorial pod in this release.
0.16 04 Dec 2007
* fix typo in Tutorial so it shows up in search.cpan.org
* fix Controller->do_search() to always include query for view's use,
even when there are no results.
0.17 19 Dec 2007
* add field_names() method to base Controller class. This is to aid development
of CatalystX::CRUD::View implementations.
0.18 20 Dec 2007
* added _no_page parameter support to the Model API.
* added ::Model::Utils to help with DRY
0.19 21 Dec 2007
* added Sort::SQL to Makefile.PL reqs.
0.20 31 Dec 2007
* fix view_on_single_result() to check can_write()
0.21 04 Jan 2008
* fix black magic can() in Model.pm
0.22 04 Jan 2008
* add treat_like_int() support to Model::Utils
0.23 20 Jan 2008
* added REST API
* added allow_GET_writes Controller config option, to prevent casual GET /save or /delete requests.
0.24 22 Jan 2008
* always fetch() in REST->default, to fix bug with no object being set for create()
* always uc() the req method for comparison purposes
* fix bug when checking the _http_method param to use params() instead of param() and use the first if multiple.
* refactor REST to provide backwards compat with Controller for easy @ISA swap (as advertised)
0.25 1 Feb 2008
* fix bug to clarify what happens when form_to_object() returns false.
0.26 06 May 2008
* fix bug in Iterator to test for !next() rather than !defined(next())
* re-set action in ::REST->default so that RPC-style template naming works
* use :Path instead of :Private on ::REST->default
* fix several bugs with action() set in ::REST
* ::Controller->form now calls NEXT::form. This is for REST compat and @INC oddness.
* added new ::ModelAdapter class and refactored base Controller to use it.
* moved make_pager() from base ::Model to ::Model::Utils
* added new ::Test classes to ease writing controller-agnostic tests.
* new, optional 'make_query' method in Controller.
* move AUTOLOAD() and can() hackery out of base Model into base Object where it belongs.
Now there is only 2 sins instead of the 3 in previous releases (where we no longer
monkey-patch the subs at run time).
* refactor tests to actually perform some CRUD.
* add ::ModelAdapter::File example.
* add envvar CXCRUD_TEST in base CX::CRUD to cluck() stack traces on exceptions. Mostly
useful during testing since the ::Test::Controller now returns only the error.
* renamed 'buffer' to 'content' in ::Object::File.
* ::Model::File->fetch() will now always return an object even if it does not yet
exist on the filesystem.
* change default create() method in Controller to call methods directly instead of forward()ing.
* add create() method to REST that just redirects to create_form().
* change from 'use NEXT' to 'use Class::C3'
* added support for "x-tunneled-method" param to REST controller in addition to "_http_method".
This is for compat with Catalyst::Request::REST::ForBrowsers.
0.27 12 June 2008
* fix Controller->rm() to check for model_adapter() and call its delete() method as advertised.
* check for length($oid) instead of defined($oid) in REST->default
* added CatalystX::CRUD::Results class
* added naked_results() config option to base Controller
* refactored base Controller to make all config options into accessors. added t/02-controller
* change Model::Utils to use req->params rather than param()
0.28 11 Aug 2008
* API for ModelAdapter changed to pass controller instance in do_model()
* add get_primary_key() and make_primary_key_string() methods to base Controller.
This allows for PKs composed of multiple columns.
0.29 23 Aug 2008
* fix typos in the Tutorial
* add relationship methods to Controller, ModelAdapter and Model core API.
* added sugary alias methods for read(), update() and delete() to match CRUD.
* refactored REST controller to support related methods and provide better
HTTP status checks and responses.
0.30 11 Sept 2008
* fix uninit value warning in Controller
* change REST create() : Local to _rest_create() : Path('create') to make it easier for
create_form() to call create() in superclass.
* clean up old style $self->config->{value} to instead use $self->value in Controller
* add app_class() and model_meta() accessors to ModelAdapter
* in base Controller, rename view_on_single_result() method to uri_for_view_on_single_result and make
accessor for the config value 'view_on_single_result'
* change all reserved param names in Model::Utils to use 'cxc-' prefix instead of '_'. Backwards compat
is preserved where possible.
* Model::Utils make_query() will uc() sort direction
* change behaviour of get_primary_key() in base Controller to not look in req->params for pk values.
This allows for changing the PK as part of an update.
* add new() in REST to call next::method. Works around (some) multiple inheritance issues.
* check for $c->res->location before redirecting in postcommit()
* Model::Utils was refactored to use Search::QueryParser::SQL. The following methods were affected:
* sql_query_as_string() -- removed
* params_to_sql_query() -- now returns hashref with 3 items:
- query isa Search::QueryParser::SQL::Query object
- query_hash (formerly query) is a simple param-name => [values] hashref
- sql is the output of S::QP::S::Query->rdbo
* make_sql_query() -- returned hash ref now has query_hash as plain_query value
and the stringify'd Query object as plain_query_str
0.31 16 Sept 2008
* add missing req to Makefile.PL
* force field_names to be an ARRAY ref in Utils make_sql_query()
0.32 21 Oct 2008
* use Class::Data::Inheritable to define delegate_class() class accessor in base Model
0.33 22 Nov 2008
* fix Tutorial wrt RT#40846
0.34 24 Nov 2008
* fix make_primary_key_string to return undef if multi-col PK has no values
0.35 24 Nov 2008
* call edit() after initializing object and form with passed in params, so that the init_form()
method can have all data already set.
0.36 4 Dec 2008
* add cxc-fuzzy2 feature and document both it and cxc-fuzzy.
0.37 8 Dec 2008
* support x-tunneled-method for DELETE in save() calls
0.38 12 Jan 2009
* use maybe::next::method
* fix view_on_single_result bug in Test::Controller
0.39 14 Jan 2009
* add missing file to MANIFEST that causes tests to fail in 0.38
0.40 16 April 2009
* change base Controller to call can_read() rather than can_write() in edit().
This is because the call to edit() does not actually write anything; it's just a GET
for a form.
0.41 21 April 2009
* remove Catalyst::Component::ACCEPT_CONTEXT as a dependency since it has not been
updated for Catalyst 5.8.
0.42 27 April 2009
* revert ACCEPT_CONTEXT changes; fixes pushed to new C::C::A_C on CPAN, and added no warnings
using Class::C3::Adopt::NEXT (thanks to t0m)
* change from 'use Class::C3' to 'use mro "c3"' with new dep on MRO::Compat
* added some debugging in tests