Group
Extension

Daje-Generate/lib/Daje/GenerateSchema.pm

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

our $VERSION = '0.01';

class Daje::GenerateSchema :isa(Daje::Generate::Base::Common) {
    use Mojo::JSON qw{to_json};
    use Daje::Generate::Perl::CreateSchema;
    use Mojo::Pg;

    method process () {
        $self->_load_config();
        my $schema = $self->_load_db_schema();
        my $json = $self->_build_json($schema);
        $self->_save_json($json);

        return 1;
    }

    method _load_db_schema() {
        my $connection = $self->config->{DATABASE}->{connection};
        my $pg = Mojo::Pg->new->dsn($connection);

        my $dbschema = Daje::Generate::Perl::CreateSchema->new(
            db => $pg->db
        )->get_db_schema('public');

        return $dbschema;
    }

    method _build_json($schema) {
        my $json = to_json($schema);

        return $json;
    }

    method _save_json($json) {

        my $path = $self->config->{DATABASE}->{output_dir};
        open(my $fh, ">", $path . 'schema.json')
            or die "could not open $path . 'schema.json";
        print $fh $json;
        close $fh;

    }
}
1;

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

=head1 NAME

lib::Daje::GenerateSchema - lib::Daje::GenerateSchema


=head1 DESCRIPTION

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


=head1 REQUIRES

L<Daje::Generate::Perl::CreateSchema> 

L<Mojo::JSON> 

L<Mojo::Pg> 

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.