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をおいらがつかってないからてけとうです。