Revision history for DBIx-NinjaORM
v2.1.0 11/22/2012
* Refactored retrieve_list() and new() to use a hashref as first
argument, like insert() and update().
* Reorganized methods alphabetically.
v2.0.0 11/19/2012
* Generalized code, added more tests and documentation.
* First public release.
v1.9.1 10/24/2012
* Added 'not_null' operator.
v1.9.0 10/18/2012
* Updated to use two separate cache times, one for the translation from
arguments to IDs (list cache) and one for the objects (object cache).
v1.8.4 10/02/2012
* Added get_object_cache_keys().
v1.8.3 10/01/2012
* Added "set" parameter to update() to allow specifying complex set
clauses.
v1.8.2 09/07/2012
* Added option to trace cache operations.
v1.8.1 09/06/2012
* Adjusted the order of when we invalidate the object cache in update().
* Forced the cache keys and values to be lower case, to account for
case-insensitive collations.
v1.8.0 08/30/2012
* Implemented cache of the translation from arguments to IDs in
retrieve_list().
v1.7.7 05/22/2012
* Modified parse_filtering_criteria() to return whether filtering fields
were detected in the arguments passed to retrieve_list(),
independently of whether filtering clauses are generated or not.
* Tweaked retrieve_list() to warn about missing filtering fields only
when none was passed to retrieve_list(), and ignore the case when all
of them are undef or empty arrays.
v1.7.6 05/08/2012
* Improved get() to prevent retrieving private properties and to error
on non-existent properties only when the object comes from
retrieve_list() which is guaranteed to populate the object correctly.
v1.7.5 03/20/2012
* Fixed trying to invalidate the cached object for keys with undefined
values.
v1.7.4 03/20/2012
* Added unitary operator 'null'.
v1.7.3 02/24/2012
* Added get().
v1.7.2 08/08/2011
* Added operator 'between' for retrieve_list(), reengineered the return
values of build_filtering_clause() to allow for more than one bind
variable to be returned.
v1.7.1 06/10/2011
* Added more trace information for cache operations.
* Modified update() to invalidate cached versions of objects.
* Added meta information 'cache_key_field' to allow specifying a
different cache key field than the primary key.
* Added get_object_cache_key(), to allow subclassing to create complex
cache keys.
v1.7.0 06/07/2011
* Refactored filtering operators to use (?:=|not|<=|>=|<|>).
* Added code to detect parameters that cannot be handled by
retrieve_list(). This helps the calling code to detect typos, missing
filtering fields in the static class declaration or obsolete argument
names.
* Set up a list of reserved arguments for retrieve_list().
* Fixed retrieve_list( id => [ 1, 2 ] ) that was converting to
WHERE id = 1 AND id = 2 instead of WHERE id IN ( 1, 2 ).
v1.6.1 05/17/2011
* Added last insert ID value to the object upon successful insert.
v1.6.0 03/29/2011
* Refactored reload().
v1.5.4 03/04/2011
* Added 'show_queries' argument to retrieve_list().
v1.5.3 01/31/2011
* Added dump().
v1.5.2 01/27/2011
* Added function to flatten an object based on a list of fields.
v1.5.1 01/24/2011
* Changed retrieve_list() to return pagination info in addition to the
results only when pagination was requested to begin with.
* Added option to set "pagination => 1" in retrieve_list(), as a
shortcut to get all the defaults.
v1.5.0 01/10/2011
* Implemented delete().
v1.4.1 01/06/2011
* Simplified 'order_by', removed option to pass a data structure in
favor of raw SQL.
* Fixed retrieve_list() to handle the case when the query has joins but
we need to lock the rows.
v1.4.0 12/21/2010
* Split validation from setting properties.
* Added concept of read-only fields.
* Added cached_static_class_info(), which is ~6x faster than
static_class_info().
v1.3.0 12/16/2010
* Added 'unique_fields' to the meta object information and created a
method to access it.
* Simplified caching of objects.
* Expanded parse_filtering_criteria() to allow filtering on the opposite
of a criteria.
* Implemented pagination for retrieve_list().
* Refactored how cache keys are generated.
* Added invalidate_cached_object() to remove all the cached versions of
a given object.
* Added 'lock' and 'allow_all' arguments to retrieve_list().
* Added option to specify pre-generated primary keys in insert().
* Added warnings to prevent hash/hashref confusion in the first argument
of insert() and update()
* Fixed insert() to work with tables that don't have a primary key.
* Added unique fields to the list of available filtering criteria in
retrieve_list().
* Improved 'order_by' parsing and defaults in retrieve_list(), allowed
raw SQL in 'order_by'.
* Modified update() to accept restrictions on the where clause.
v1.2.0 02/10/2010
* Changed insert() to allow calling it directly on a class, if no
object is needed afterwards.
* Added static_class_info() and accessors for its configurable options.
* Added object-level cache.
* Added 'force' argument to set(), to optionally disable validation.
v1.1.0 12/08/2010
* Added insert(), update(), and new().
* Fixed set() to remove primary key fields and fields starting with an
underscore.
* Added id().
* Refactored retrieve_list() to allow subclassing.
* Added table prefix for the fields not specifing one explicitely when
creating filtering criteria.
v1.0.2 10/28/2010
* Added reload().
v1.0.1 02/01/2010
* Added clone().
v1.0.0 12/17/2009
* First version.