diff options
Diffstat (limited to 'extensions/PhabBugz/lib/Project.pm')
-rw-r--r-- | extensions/PhabBugz/lib/Project.pm | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/extensions/PhabBugz/lib/Project.pm b/extensions/PhabBugz/lib/Project.pm index b93a6eb9e..c18708887 100644 --- a/extensions/PhabBugz/lib/Project.pm +++ b/extensions/PhabBugz/lib/Project.pm @@ -12,10 +12,12 @@ use Moo; use Scalar::Util qw(blessed); use Types::Standard -all; use Type::Utils; +use Type::Params qw( compile ); use Bugzilla::Error; use Bugzilla::Util qw(trim); use Bugzilla::Extension::PhabBugz::User; +use Bugzilla::Extension::PhabBugz::Types qw(:types); use Bugzilla::Extension::PhabBugz::Util qw(request); ######################### @@ -33,7 +35,9 @@ has view_policy => ( is => 'ro', isa => Str ); has edit_policy => ( is => 'ro', isa => Str ); has join_policy => ( is => 'ro', isa => Str ); has members_raw => ( is => 'ro', isa => ArrayRef [ Dict [ phid => Str ] ] ); -has members => ( is => 'lazy', isa => ArrayRef [Object] ); +has members => ( is => 'lazy', isa => ArrayRef[PhabUser] ); + +my $Invocant = class_type { class => __PACKAGE__ }; sub new_from_query { my ( $class, $params ) = @_; @@ -142,12 +146,20 @@ sub BUILDARGS { ######################### sub create { - my ( $class, $params ) = @_; - - my $name = trim( $params->{name} ); - $name || ThrowCodeError( 'param_required', { param => 'name' } ); + state $check = compile( + $Invocant | ClassName, + Dict[ + name => Str, + description => Str, + view_policy => Str, + edit_policy => Str, + join_policy => Str, + ] + ); + my ( $class, $params ) = $check->(@_); - my $description = $params->{description} || 'Need description'; + my $name = trim($params->{name}); + my $description = $params->{description}; my $view_policy = $params->{view_policy}; my $edit_policy = $params->{edit_policy}; my $join_policy = $params->{join_policy}; @@ -324,5 +336,4 @@ sub _build_members { ); } -1; - +1;
\ No newline at end of file |