On Mar 18, 2007, at 6:05 AM, [EMAIL PROTECTED] wrote:
Author: sterling Date: Sun Mar 18 06:04:30 2007 New Revision: 3016 Modified: Jifty-DBI/trunk/ (props changed) Jifty-DBI/trunk/Makefile.PL Jifty-DBI/trunk/lib/Jifty/DBI/Column.pm Jifty-DBI/trunk/lib/Jifty/DBI/Record.pm Jifty-DBI/trunk/lib/Jifty/DBI/Schema.pm Jifty-DBI/trunk/t/testmodels.pl Log: [EMAIL PROTECTED]: andrew | 2007-02-23 14:22:11 -0600 * Added better handling of schema versioning* Added _init_methods_for_columns to explicitly handle accessor/ mutatorcreation for all columns attached to a record* Applications employing JDBI can specify schema_version() in a sub-class of record to add better handling of "since" and "till" in both schema and codegeneration * Modified columns() on records to only return active columns* Added all_columns() to retrieve all columns on a record, even inactive ones * Added the active() method to columns to test to see if a column is active forthe current schema version * Added/updated tests for the above Modified: Jifty-DBI/trunk/Makefile.PL====================================================================== ========--- Jifty-DBI/trunk/Makefile.PL (original) +++ Jifty-DBI/trunk/Makefile.PL Sun Mar 18 06:04:30 2007 @@ -19,9 +19,7 @@ requires('Lingua::EN::Inflect'); requires('Object::Declare' => 0.22); requires('UNIVERSAL::require'); -requires('Scalar::Defer' => 0.10); requires('version'); -#requires('Class::Trigger'); build_requires('Test::More' => 0.52); build_requires('DBD::SQLite'); no_index directory => 'ex'; Modified: Jifty-DBI/trunk/lib/Jifty/DBI/Column.pm====================================================================== ========--- Jifty-DBI/trunk/lib/Jifty/DBI/Column.pm (original) +++ Jifty-DBI/trunk/lib/Jifty/DBI/Column.pm Sun Mar 18 06:04:30 2007 @@ -123,4 +123,47 @@ return 1; } +=head2 active ++Returns the a true value if the column method exists for the current application +version. The current application version is determined by checking the L<Jifty::DBI::Record/schema_version> of the column's L</ record_class>. This method returns a false value if the column is not yet been added or has been dropped.+ +This method returns a false value under these circumstances: + +=over + +=item * ++Both the C<since> trait and C<schema_version> method are defined and C<schema_version> is less than the version set on C<since>.+ +=item * ++Both the C<till> trait and C<schema_version> method are defined and C<schema_version> is greater than or equal to the version set on C<till>.+ +=back + +Otherwise, this method returns true. + +=cut + +sub active { + my $self = shift; + + return 1 unless $self->record_class->can('schema_version'); + return 1 unless defined $self->record_class->schema_version; + + my $version = version->new($self->record_class->schema_version); + + # The application hasn't yet started using this column + return 0 if defined $self->since + and $version < version->new($self->since); + + # The application stopped using this column + return 0 if defined $self->till + and $version >= version->new($self->till); + + # The application currently uses this column + return 1; +} + 1; Modified: Jifty-DBI/trunk/lib/Jifty/DBI/Record.pm====================================================================== ========--- Jifty-DBI/trunk/lib/Jifty/DBI/Record.pm (original) +++ Jifty-DBI/trunk/lib/Jifty/DBI/Record.pm Sun Mar 18 06:04:30 2007 @@ -468,7 +468,7 @@ <=> ( ( $a->type || '' ) eq 'serial' ) ) or ( ($a->sort_order || 0) <=> ($b->sort_order || 0)) or ( $a->name cmp $b->name ) - } grep { $_->active } values %{ $self->_columns_hashref } + } grep { $_->active } values %{ $self->COLUMNS || {} } ])} } @@ -490,7 +490,7 @@ <=> ( ( $a->type || '' ) eq 'serial' ) ) or ( ($a->sort_order || 0) <=> ($b->sort_order || 0)) or ( $a->name cmp $b->name ) - } values %{ $self->_columns_hashref || {} } + } values %{ $self->COLUMNS || {} } } sub _columns_hashref { Modified: Jifty-DBI/trunk/lib/Jifty/DBI/Schema.pm====================================================================== ========--- Jifty-DBI/trunk/lib/Jifty/DBI/Schema.pm (original) +++ Jifty-DBI/trunk/lib/Jifty/DBI/Schema.pm Sun Mar 18 06:04:30 2007 @@ -200,21 +200,6 @@ my @columns = &declare($code); - # Unimport all our symbols from the calling package, - # except for "lazy" and "defer". - foreach my $sym (@EXPORT) { - next if $sym eq 'lazy' or $sym eq 'defer'; - - no strict 'refs'; - undef *{"$from\::$sym"} - if \&{"$from\::$sym"} == \&$sym; - } - - foreach my $column (@columns) { - next if !ref($column); - _init_column($column); - } - $from->_init_methods_for_columns; }; Modified: Jifty-DBI/trunk/t/testmodels.pl====================================================================== ========_______________________________________________ Jifty-commit mailing list [EMAIL PROTECTED] http://lists.jifty.org/cgi-bin/mailman/listinfo/jifty-commit
PGP.sig
Description: This is a digitally signed message part
_______________________________________________ jifty-devel mailing list [email protected] http://lists.jifty.org/cgi-bin/mailman/listinfo/jifty-devel
