1 package App::IdiotBox::Bucket;
5 sub fields { return qw(slug name) }
7 with 'App::IdiotBox::Clonable';
9 sub name { shift->{name} }
10 sub slug { shift->{slug} }
11 sub videos { shift->{videos} }
12 #has 'name' => (is => 'rw');
13 #has 'slug' => (is => 'rw');
14 #has 'videos' => (is => 'rw');
15 has '_video_count' => (is => 'rw');
20 return $self->_video_count if defined $self->_video_count;
22 return $self->{video_count} if defined $self->{video_count};
24 return $self->videos->count;
28 my ($class, %args) = @_;
30 unless ($args{name} && $args{slug}) {
31 return (undef, "Please enter a name and a bucket");
33 if ($args{name} =~ /^\s+$/ || $args{slug} =~ /^\s+$/) {
34 return (undef, "Names/buckets must not be all whitespace");
37 $args{slug} =~ s/\s+/-/g;
39 return App::IdiotBox::Bucket->new(
46 my ($self, %args) = @_;
48 unless ($args{name}) {
49 return (undef, "Please enter a new name");
52 if ($args{name} =~ /^\s+$/) {
53 return (undef, "Names must not be all whitespace");
56 my $new = $self->clone;
58 $new->{name} = $args{name};