Thanks for the suggestion
MyLib.pm is
package MyLib;
use Mojo::Base 'Mojolicious';
use Mojo::mysql;
#my %connections;
# This method will run once at server start
sub startup {
my $self = shift;
# Router
my $r = $self->routes;
# Normal route to controller
$r->get('/')->to( template => 'index' );
$r->get('/libmap'); #->to(controller => 'libmap');
$r->get('/invtot')->to(
controller => 'invtot',
title => 'Paper journals from the library',
cb => sub { $self->connect_invtot() }
);
if ( exists $ENV{PAR_TEMP} && $^O eq "MSWin32" ) {
system qw(start http://localhost:3000/invtot);
}
$r->post('/invtot')->to( controller => 'Invtot', action => 'post'
+);
}
sub connect_invtot {
my $self = shift;
#return if $connections{db1};
# Load configuration from hash returned by config file
my $file;
if ( $ENV{PAR_TEMP} ) {
print $ENV{PAR_TEMP}, "\n";
$file = $ENV{PAR_TEMP} . "/inc/script/my_lib.conf";
}
else {
$file = 'my_lib.conf';
}
my $config = $self->plugin( 'Config', { file => $file } );
# Configure the application
$self->secrets( $config->{secrets} );
$self->log->debug("connecting...");
$self->helper(db1 => sub {state $db1 = Mojo::mysql->strict_mode('m
+ysql://'. $config->{username} . ':'. $config->{password} . '@my.../d
+okpe_i01' )});
$self->db1->options({
'pg_enable_utf8' => 1,
AutoCommit => 1,
PrintError => 0,
RaiseError => 1
});
}
1;
In my Invtot.pm controller the post method is
sub post {
my $c = shift;
#get data from the form and build sql in $sql{$key}
my $stm = $c->app->db1->db->prepare_cached( $sql{$key} )
or die $c->app->db1->db->errstr; # unless(exists $sql{$
+key});
$toFind = format_search_arg( $toFind, $mode );
$c->app->log->debug( $mode . " " . $toFind );
$stm->execute($toFind) or die $stm->errstr;
$c->stash( stm => $stm, for_abo => $for_abo );
}
But this failed with
Can't locate object method "db1" via package "MyLib" at ...
Thanks for any help