package Daje::Plugin::Perl::Generate::Class;
use Mojo::Base 'Daje::Plugin::Perl::Base::Common', -base, -signatures;

use String::CamelCase qw(camelize);

our $VERSION = '0.01';

has 'methods';
has 'fields';
has 'config';

sub generate($self) {
    my $tpl = $self->template->get_data_section('class');
    my $table_name = $self->json->{table_name};
    my $name_space = $self->config->{CLASS}->{name_space};
    my $base_name_space = $self->config->{CLASS}->{base_name_space};
    my $class_name = camelize($table_name);
    my $base_class_name = "Base";

    my $select_fields = $self->methods->select_fields();
    my $pkey = $self->methods->pkey();
    my $fkey = $self->methods->fkey();
    my $insert = $self->methods->insert();
    my $update = $self->methods->update();
    my $select_method = $self->methods->select_method();
    my $date = localtime();

    $tpl =~ s/<<date>>/$date/ig;
    $tpl =~ s/<<fields>>/$select_fields/ig;
    $tpl =~ s/<<name_space>>/$name_space/ig;
    $tpl =~ s/<<classname>>/$class_name/ig;
    $tpl =~ s/<<base_name_space>>/$base_name_space/ig;
    $tpl =~ s/<<base_class_name>>/$base_class_name/ig;

    $tpl =~ s/<<pkey>>/$pkey/ig;
    $tpl =~ s/<<fkey>>/$fkey/ig;
    $tpl =~ s/<<insert>>/$insert/ig;
    $tpl =~ s/<<update>>/$update/ig;

    $tpl =~ s/<<select>>/$select_method/ig;
    $tpl =~ s/<<methods>>//ig;

    return $tpl;
}


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

=head1 NAME

Daje::Plugin::Perl::Generate::Class


=head1 REQUIRES

L<String::CamelCase> 

L<Mojo::Base> 


=head1 METHODS

=head2 generate($self)

 generate($self)();


=cut

