[Jifty-commit] r3016 - in Jifty-DBI/trunk: . lib/Jifty/DBI
jifty-commit at lists.jifty.org
jifty-commit at lists.jifty.org
Sun Mar 18 06:05:12 EDT 2007
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:
r2956 at riddle: andrew | 2007-02-23 14:22:11 -0600
* Added better handling of schema versioning
* Added _init_methods_for_columns to explicitly handle accessor/mutator
creation 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 code
generation
* 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 for
the 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
==============================================================================
More information about the Jifty-commit
mailing list