LasTres/lib/LasTres/PJ.pm

138 lines
2.4 KiB
Perl

package LasTres::PJ;
use v5.36.0;
use strict;
use warnings;
use feature 'signatures';
use Scalar::Util qw/blessed/;
use LasTres::DAO::PJs;
my $result_set = LasTres::DAO::PJs->ResultSet;
use Moo;
has uuid => (
is => 'rw',
required => 1,
);
has owner => (
is => 'rw',
required => 1,
);
has full_name => (
is => 'rw',
required => 1,
);
has short_name => (
is => 'rw',
required => 1,
);
has nick => (
is => 'rw',
required => 1,
);
has race => (
is => 'rw',
required => 1,
);
has team => (
is => 'rw',
required => 1,
);
has creation_date => (
is => 'rw',
required => 1,
);
has last_activity => (
is => 'rw',
required => 1,
);
has experience => (
is => 'rw',
required => 1,
);
has equipment => (
is => 'rw',
required => 1,
);
sub _coerce_stats($attr) {
if (blessed($attr) eq 'LasTres::Schema::Result::Stats') {
return $attr->model;
}
}
has born_stats => (
is => 'rw',
required => 1,
coerce => \&_coerce_stats,
);
has training_stats => (
is => 'rw',
required => 1,
coerce => \&_coerce_stats,
);
sub _coerce_skills($attr) {
if (blessed($attr) eq 'LasTres::Schema::Result::SkillLikeList') {
return $attr->model;
}
}
has skills => (
is => 'rw',
required => 1,
coerce => \&_coerce_skills,
);
has spells => (
is => 'rw',
required => 1,
coerce => \&_coerce_skills,
);
has inventory => (
is => 'rw',
required => 1,
);
sub hash ($self) {
return {
uuid => $self->uuid,
owner => $self->owner,
full_name => $self->full_name,
short_name => $self->short_name,
nick => $self->nick,
race => $self->race,
team => $self->team,
creation_date => $self->creation_date,
last_activity => $self->last_activity,
experience => $self->experience,
equipment => $self->equipment,
born_stats => $self->born_stats,
training_stats => $self->training_stats,
skills => $self->skills,
spells => $self->spells,
inventory => $self->inventory,
};
}
sub result_set ($self) {
return $result_set->new( %{ $self->hash } );
}
1;