RSS Git Download  Clone
Raw Blame History
package Reporter;

use Reporter::Model;
use Reporter::Validation;
use Reporter::Class; # provides Moo, Modern::Perl, Local::MooX::Types & Data::Printer::p

use FindBin qw($RealBin); # warn $RealBin;
use Path::Tiny;
use Git;

my $git = Git->repository(Directory => path($RealBin, '..', '.git')->realpath);
our $VERSION = version(); # warn $VERSION;
say sprintf('>> starting Reporter v%s', $VERSION); # unless $ENV{HARNESS_ACTIVE};

has dbname  => (
    is => 'ro',
    isa => String,
    builder => sub {
        return $ENV{HARNESS_VERSION} ? 'test' : 'hilis4';
  },
); # hilis4, test, etc
has config  => ( is => 'ro', isa => HashReference, required => 1 );
has model => (
    is => 'lazy',
    handles => [ 'check_db_connection' ], # to check db handle still connected
);
has validator => ( # Data::FormValidator:
    is => 'lazy',
    builder  => sub { Reporter::Validation->new( dbname => shift->dbname ) }
);

sub enable_sql_trace { $ENV{SQL_TRACE} = 1 }

sub symbolise { Local::Utils::symbolise($_[1]) }

sub version { $git->command_oneline('rev-list', 'HEAD', '--count') }

sub gitlog {
    my @args = (
        '--pretty=format:"%ad :: %s"', '--no-merges', '--date=relative' );
    my @log = $git->command( 'log', @args );
    return \@log;
};

sub _build_model {
    my $self = shift;
    my %args = (
        dbname  => $self->dbname,
        config  => $self->config,
    );
    Reporter::Model->new(%args);
}

1;