[Jifty-commit] r1158 - in Jifty-DBI/trunk: lib/Jifty/DBI
jifty-commit at lists.jifty.org
jifty-commit at lists.jifty.org
Mon Jun 5 11:49:46 EDT 2006
Author: seanmil
Date: Mon Jun 5 11:49:44 2006
New Revision: 1158
Modified:
Jifty-DBI/trunk/ (props changed)
Jifty-DBI/trunk/lib/Jifty/DBI/Record.pm
Jifty-DBI/trunk/lib/Jifty/DBI/Schema.pm
Log:
r351 at pc102: sean | 2006-06-05 11:49:28 -0400
* Implement support for 'distinct' column checks
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 Mon Jun 5 11:49:44 2006
@@ -589,6 +589,23 @@
return ( $ret->return_value );
}
+ # Implement 'is distinct' checking
+ if ( $column->distinct ) {
+ my $new_record = $self->new( $self->_handle );
+ $new_record->load_by_cols ( $column->name => $args{'value'} );
+ if( $new_record->id ) {
+ $ret->as_array( 0, 'Value already exists for distinct column ' .
+ $column->name );
+ $ret->as_error(
+ errno => 3,
+ do_backtrace => 0,
+ message => 'Value already exists for distinct column ' .
+ $column->name,
+ );
+ return ( $ret->return_value );
+ }
+ }
+
# The blob handling will destroy $args{'value'}. But we assign
# that back to the object at the end. this works around that
my $unmunged_value = $args{'value'};
@@ -860,6 +877,24 @@
value_ref => \$attribs{$column_name},
);
+ # Implement 'is distinct' checking
+ if ( $column->distinct ) {
+ my $new_record = $self->new( $self->_handle );
+ $new_record->load_by_cols ( $column_name => $attribs{$column_name} );
+ if( $new_record->id ) {
+ my $ret = Class::ReturnValue->new();
+ $ret->as_array( 0, 'Value already exists for distinct column ' .
+ $column->name );
+ $ret->as_error(
+ errno => 3,
+ do_backtrace => 0,
+ message => 'Value already exists for distinct column ' .
+ $column->name,
+ );
+ return ( $ret->return_value );
+ }
+ }
+
if ( $column->type =~ /^(text|longtext|clob|blob|lob|bytea)$/i ) {
my $bhash = $self->_handle->blob_params( $column_name, $column->type );
$bhash->{'value'} = $attribs{$column_name};
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 Mon Jun 5 11:49:44 2006
@@ -256,8 +256,11 @@
=head2 distinct
Declares that a column should only have distinct values. This
-currently does nothing, due to not being implemented in
-L<DBIx::DBSchema>. Correct usage is C<is distinct>.
+currently is implemented via database queries prior to updates
+and creates instead of constraints on the database columns
+themselves. This is because there is no support for distinct
+columns implemented in L<DBIx::DBSchema> at this time.
+Correct usage is C<is distinct>.
=cut
More information about the Jifty-commit
mailing list