package MyApp::Model::ProblemSolver;
use Moose;
use namespace::autoclean;
extends 'Catalyst::Model::Factory::PerRequest';
__PACKAGE__->config(
class => 'MyNonCatalyst::ProblemSolver',
);
# provide arguments as a list instead of hash-ref
sub mangle_arguments {
my ($self, $args) = @_;
return %$args;
}
####
override 'prepare_arguments' => sub {
my ($self, $c) = @_;
my $config_params = super();
my $passed_in_params = $c->stash->{problem_solver_args};
my %merged_args = ( %$config_params, %$passed_in_params );
return \%merged_args;
}; # prepare_arguments
####
$c->stash->{problem_solver_args}{some_param} = $user_input1 if $user_input1;
$c->stash->{problem_solver_args}{some_other_param} = $user_input2;
my $problem_solver = $c->model('ProblemSolver');
my $result = $problem_solver->solve_problem();
####
Model::ProblemSolver:
args:
database: a_database_of_solved_problems
some_param: SOME_DEFAULT_VALUE