use App::Class; class App::Model { use App::DB; use Path::Tiny; use Git::Wrapper; use Crypt::PBKDF2; use Data::Printer; # use Time::HiRes qw(gettimeofday tv_interval); # use vars qw($t0); field $cfg :reader :param; # required param field $git :reader = Git::Wrapper->new( $cfg->{appname} ); field $db :reader = App::DB->new( cfg => $cfg ); method find_user ($username) { $db->find_user($username) } method verify_password ($pwd, $hash) { Crypt::PBKDF2->new->validate($hash, $pwd); # using defaults for new() } method total_count { $self->db->total_count } method version { 1 # won't work until at least 1 commit #return $git->log; # size of log } =begin sub enable_sql_trace { $ENV{SQL_TRACE} = 1 } sub set_timer { $t0 = [gettimeofday]; } sub run_timer { 1000 * tv_interval $t0, [gettimeofday]; } =cut method gitlog { # using Git::Wrapper; my $n = $git->log; # say $n; # log() as scalar returns no. of log entries my @args = qw( --no-merges --date=relative ); my @dates = $git->RUN( qw/log --pretty=format:%ad/, @args); # p @dates; my @msgs = $git->RUN( qw/log --pretty=format:%s/, $args[0]); # p @msgs; my @log = map { date => $dates[$_], msg => $msgs[$_] }, 0 .. $n - 1; # p @log; return \@log; } }