FVS::DBIC::Schema::Unique
さっき見かけたらSchemaベースのがないぽいので、
ざっくりつくってみた。
いまいち><
package FormValidator::Simple::Plugin::DBIC::Schema::Unique; use strict; use warnings; use UNIVERSAL; use UNIVERSAL::require; use Scalar::Util qw/blessed/; use FormValidator::Simple::Exception; use FormValidator::Simple::Constants; our $VERSION = '0.01'; sub DBIC_SCHEMA_UNIQUE { my ($class, $params, $args) = @_; unless ( scalar(@$args) >= 1 ) { FormValidator::Simple::Exception->throw( qq/Validation DBIC_SCHEMA_UNIQUE needs one arguments at least. / ); } my $rs = pop @$args; unless ( ref $rs eq 'DBIx::Class::ResultSet' ) { FormValidator::Simple::Exception->throw( qq/Validation DBIC_SCHEMA_UNIQUE: Last parameter need DBIx::Class::ResultSet's object./ ); } unless ( scalar(@$params) == scalar(@$args) ) { FormValidator::Simple::Exception->throw( qq/Validation DBIC_SCHEMA_UNIQUE: number of keys and validation arguments aren't same/ ); } my %criteria = (); for ( my $i = 0; $i < scalar(@$args); $i++ ) { my $key = $args->[$i]; my $value = $params->[$i]; if ( $key =~ /^!(.+)$/ ) { $criteria{$1} = { '!=' => $value }; } else { $criteria{$key} = $value || ''; } } my $count = $rs->count(\%criteria); return $count > 0 ? FALSE : TRUE; } 1;
FVSをおいらがつかってないからてけとうです。