RSS Git Download  Clone
Raw Blame History
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;
	}
}