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 nopage 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 httpmethod 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 "httpmethod".
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 restcreate() : 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 makequery() 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
0.43 29 April 2009
- rid of ourselves of Class::Data::Inheritable because it clashes with Catalyst::Runtime 5.8.
Notably, it caused a strange bug in Rose::DBx::Garden::Catalyst where the MyApp->config
class hashref would get nuked after a call to Class::C3::initialize(). Yes. That fsked up.
0.44 23 May 2009
0.45 13 June 2009
- fix multi-column sort via cxc-order param (requires Sort::SQL 0.04)
0.46 20 Nov 2009
- tweek Model::File _find to avoid multiple loops over the same list of root dirs.
- tweek Model::File->search to read() each object like fetch() does.
- add dep on Sort::SQL 0.07 to avoid sql injection (RT#51777)
0.47 15 Jan 2009
- fix tutorial per RT#53396
- fix bug in base Controller->fetch() where multiple PKs where one value is null were slipping
through. Reported by Adam Mackler.
0.48 29 Jan 2009
- fix bug with create() introduced in 0.47.
- remove explicit dep on Class::C3 per RT54097
0.49 11 April 2010
- uri_for_view_on_single_result() will return uri for 'view' action,
regardless of value of can_write().
0.50 13 May 2010
- fix make_primary_key_string() to get rid of bad sprintf() call
0.51 19 May 2010
- added use_request_uri_for_path to test MyApp to fix
test failures with Catalyst::Runtime 5.80024