DoctorKarma/lib/DoctorKarma/Model/User.pm

80 lines
1.7 KiB
Perl

package DoctorKarma::Model::User;
use v5.30.0;
use strict;
use warnings;
use Types::Standard qw/Str Int InstanceOf/;
use Params::ValidationCompiler qw(validation_for);
{
my $validator = validation_for(
params => {
id_user => { type => Int },
username => { type => Str, optional => 1 },
first_name => { type => Str, optional => 1 },
karma => { type => Int },
last_karma_given_date => { type => InstanceOf ['DateTime'], optional => 1 },
}
);
sub new {
my $class = shift;
my %params = $validator->(@_);
my $self = bless \%params, $class;
return $self;
}
}
sub first_name {
my $self = shift;
if (exists $self->{first_name}) {
return $self->{first_name};
}
return;
}
sub id_user {
my $self = shift;
return $self->{id_user};
}
{
my $validator =
validation_for( params => [ { type => Str, optional => 1 } ] );
sub username {
my $self = shift;
my ($new_username) = $validator->(@_);
if ( defined $new_username ) {
$self->{username} = $new_username;
}
if ( exists $self->{username} ) {
return $self->{username};
}
return;
}
}
sub last_karma_given_date {
my $self = shift;
return $self->{last_karma_given_date};
}
{
my $validator =
validation_for( params => [ { type => Int, optional => 1 } ] );
sub karma {
my $self = shift;
my ($new_karma) = $validator->(@_);
if ( defined $new_karma ) {
$self->{karma} = $new_karma;
}
return $self->{karma};
}
}
1;