Group
Extension

Daje-Generate/lib/Daje/Generate/Input/Sql/ConfigManager.pm

use v5.40;
use feature 'class';
no warnings 'experimental::class';


class Daje::Generate::Input::Sql::ConfigManager {
    use Daje::Generate::Database::SqlLite;
    use Daje::Generate::Database::Operations;
    use Daje::Generate::Tools::FileChanged;

    use Mojo::File;
    use Mojo::JSON qw{from_json};

    field $source_path :param :reader = "";
    field $files :reader = {};
    field $filetype :param :reader = "";
    field $changed_files :reader;
    field $change;

    method save_new_hash($file) {
        my $path = Mojo::File->new($file);
        my $new_hash = $change->load_new_hash($path);
        my $dbh = Daje::Generate::Database::SqlLite->new(path => $path)->get_dbh();
        my $operations = Daje::Generate::Database::Operations->new(dbh => $dbh);
        $operations->save_hash($path->dirname . '/' . $path->basename, $new_hash);

        return 1;
    }

    method load_json($file) {
        my $context;
        try {
            $context =  Mojo::File->new($file)->slurp;
        } catch ($e) {
            die "load_json failed '$e";
        };

        return from_json($context);
    }

    method load_changed_files () {
        my ($dbh, $operations, $path) = $self->_load_objects();
        try {
            $files = $path->list();
        } catch ($e) {
            die "Files could not be loaded: $e";
        };

        my $length = scalar @{$files};
        for (my $i = 0; $i < $length; $i++) {
            my $old_hash = $operations->load_hash(@{$files}[$i]->dirname . '/' . @{$files}[$i]->basename);
            if ($change->is_file_changed( @{$files}[$i], $old_hash)) {
                push @{$changed_files}, @{$files}[$i]->dirname . '/' . @{$files}[$i]->basename;
            }
        }
        return;
    }

    method _load_objects() {
        my $path = Mojo::File->new($source_path);
        $change = Daje::Generate::Tools::FileChanged->new();
        my $dbh = Daje::Generate::Database::SqlLite->new(path => $path)->get_dbh();
        my $operations = Daje::Generate::Database::Operations->new(dbh => $dbh);

        return ($dbh, $operations, $path);
    }

};


1;



#################### pod generated by Pod::Autopod - keep this line to make pod updates possible ####################

=head1 NAME

lib::Daje::Generate::Input::Sql::ConfigManager - lib::Daje::Generate::Input::Sql::ConfigManager


=head1 DESCRIPTION

pod generated by Pod::Autopod - keep this line to make pod updates possible ####################


=head1 REQUIRES

L<Mojo::JSON> 

L<Mojo::File> 

L<Daje::Generate::Tools::FileChanged> 

L<Daje::Generate::Database::Operations> 

L<Daje::Generate::Database::SqlLite> 

L<feature> 

L<v5.40> 


=head1 METHODS


=cut



Powered by Groonga
Maintained by Kenichi Ishigaki <ishigaki@cpan.org>. If you find anything, submit it on GitHub.