+__PACKAGE__->add_filter_specs(
+ active => sub {
+ my ($key, $value, $prefix) = @_;
+ # TODO add boolean context
+ return () if $value eq 'both';
+ return ($prefix . "active" => 1) if $value eq 'active';
+ return (or => [ $prefix . "active" => 0, $prefix . "active" => undef ]) if $value eq 'inactive';
+ },
+ valid => sub {
+ my ($key, $value, $prefix) = @_;
+ return () if $value eq 'both';
+ return ($prefix . "valid" => 1) if $value eq 'valid';
+ return (or => [ $prefix . "valid" => 0, $prefix . "valid" => undef ]) if $value eq 'invalid';
+ },
+ status => sub {
+ my ($key, $value, $prefix) = @_;
+ return () if $value ne 'orphaned';
+ return __PACKAGE__->is_not_used_filter($prefix);
+ },
+ all => sub {
+ my ($key, $value, $prefix) = @_;
+ return or => [ map { $prefix . $_ => $value } qw(projectnumber description customer.name) ]
+ }
+);