my $json_arr = $self->json;
my $length = scalar @{$json_arr};
for (my $i = 0; $i < $length; $i++) {
my $json = @{$json_arr}[$i];
if (exists($json->{versio
n})) {
if(exists($json->{version}->{tables})) {
my $tables = $json->{version}->{tables};
my $len = scalar @{$tables};
for(my
}
}
$sections .= $self->create_section($sql, $json->{version}->{number});
}
}
$self->set_sql($self->create_file($sectio
ass';
class Daje::Generate::Perl::Base::Common {
field $template :param :reader;
field $json :param :reader;
};
1;
#################### pod generated by Pod::Autopod - keep this line to
;
};
return 1;
}
method _load_table($file) {
my $json = $config_manager->load_json($file);
my $template = $self->_load_templates(
'Daje::Generate
aje::Generate::Sql::SqlManager->new(
template => $template,
json => $json,
);
} catch ($e) {
die "process_sql failed '$e";
}
source_path => $self->config->{PATH}->{sql_source_dir},
filetype => '*.json'
);
$config_manager->load_changed_files();
} catch ($e) {
Mojo::JSON qw{from_json};
use Mojo::File;
use Daje::Generate::Perl::PerlManager;
sub process($self) {
$self->_load_config();
my $json = $self->_get_json();
$self->_create_perl($json);
}
sub _create_perl($self, $json) {
my $template = $self->_load_templates(
'Daje::Generate::Templates::Perl',
"class,method,baseclass,interface,load_from_pkey,load_from_fkey,load_list
plate,
json => $json,
)->generate_classes();
return $manager->success()
}
sub _get_json($self) {
my $path = $self->config->{PATH}->{schema_dir};
my $json_txt = Mojo::F
";
my $json = $self->json->{sql};
my $length = scalar @{$json};
for (my $i = 0; $i < $length; $i++) {
my $type = $self->template->get_section(@{$json}[$i]->{type});
ablename/ig;
$template =~ s/<<fields>>/@{$json}[$i]->{fields}/ig;
$template =~ s/<<values>>/@{$json}[$i]->{values}/ig;
}
default
'class';
no warnings 'experimental::class';
class Daje::Generate::Sql::Base::Common {
field $json :param :reader;
field $template :param :reader;
field $sql :reader;
field $index = 0;
= "";
method create_index {
my $sql = "";
my $json = $self->json->{index};
my $length = scalar @{$json};
for (my $i = 0; $i < $length; $i++) {
my $tem
pe>>/@{$json}[$i]->{type}/ig;
$template =~ s/<<fields>>/@{$json}[$i]->{fields}/ig;
@{$json}[$i]->{fields} =~ s/,/_/ig;
$template =~ s/<<field_names>>/@{$json}[$i]->
ated SQL scripts from JSON file
#
# Synopsis
# ========
#
# use Daje::Generate::Sql::SqlManager;
#
# my $table = Daje::Generate::Sql::SqlManager->new(
# json => $json,
# template
my $json_arr = $self->json;
my $length = scalar @{$json_arr};
for (my $i = 0; $i < $length; $i++) {
my $json = @{$json_arr}[$i];
if (exists($json->{versio
n})) {
$sections .= $self->_version($json->{version});
}
}
$self->set_sql($self->create_file($sections));
return ;
}
method _version($versi
key} = "";
$templates->{template_ind} = "";
try {
my $fields = $self->json->{fields};
foreach my $key (sort keys %{$fields}) {
if (index($key,'_
Fields -- create the fields part of a create table script
#
# SYNOPSIS
# ========
# my $json = from_json( qq (
# {
# "fields": {
# "userid": "varchar",
#
plates'
# );
#
# my $fields = GenerateSQL::Sql::Table::Fields->new(
# json => $json,
# template => $template,
# );
#
# $fields->create_fields();
#
fields->sql;
#
# METHODS
# =======
# create_fields() Create the SQL for field creation from JSON
# get_defaults($datatype) Get defaults part for the sql datatype
#
#
#
class Daje::Generat
: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
return $dbschema;
}
method _build_json($schema) {
my $json = to_json($schema);
return $json;
}
method _save_json($json) {
my $path = $self->config->{DATAB
lf->json->{tables}};
for (my $i = 0; $i < $length; $i++) {
$self->_generate_table_class(@{$self->json->{tables}}[$i]);
$self->_generate_interface_class(@{$self->json->{
}
$length = scalar $self->json->{views};
for (my $i = 0; $i < $length; $i++) {
$self->_generate_view_class(@{$self->json->{views}}[$i]);
}
return 1
= $self->template();
my $class = Daje::Generate::Perl::Generate::Class->new(
json => $table->{table},
methods => $methods,
template => $template,
) {
my $tpl = $self->template->get_data_section('class');
my $table_name = $self->json->{table_name};
my $name_space = $config->{CLASS}->{name_space};
my $base_name_spa
elds->select();
my $p_key = $self->fields->primary_key();
my $table_name = $self->json->{table_name};
$tpl =~ s/<<select_fields>>/$select/ig;
$tpl =~ s/<<primary_key>>
my $tpl = $self->template->get_data_section('update_data');
my $table_name = $self->json->{table_name};
$tpl =~ s/<<table_name>>/$table_name/ig;
return $tpl;
}
m
my $tpl = $self->template->get_data_section('insert_data');
my $table_name = $self->json->{table_name};
$tpl =~ s/<<table_name>>/$table_name/ig;
return $tpl;
}
m
$self->_get_fields();
}
method _get_fields() {
my $column_names = $self->json->{column_names};
my $length = scalar @{$column_names};
for (my $i = 0; $i < $leng
";
my $json = $self->json->{sql};
my $length = scalar @{$json};
for (my $i = 0; $i < $length; $i++) {
my $type = $self->template->get_section(@{$json}[$i]->{type});
ablename/ig;
$template =~ s/<<fields>>/@{$json}[$i]->{fields}/ig;
$template =~ s/<<values>>/@{$json}[$i]->{values}/ig;
}
default
:Operations;
use Daje::Generate::Tools::FileChanged;
use Mojo::File;
use Mojo::JSON qw{from_json};
field $source_path :param :reader = "";
field $files :reader = {};
field $f
}
method load_json($file) {
my $context;
try {
$context = Mojo::File->new($file)->slurp;
} catch ($e) {
die "load_json failed '$e";
}
pod - 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
= "";
method create_index {
my $sql = "";
my $json = $self->json->{index};
my $length = scalar @{$json};
for (my $i = 0; $i < $length; $i++) {
my $tem
pe>>/@{$json}[$i]->{type}/ig;
$template =~ s/<<fields>>/@{$json}[$i]->{fields}/ig;
@{$json}[$i]->{fields} =~ s/,/_/ig;
$template =~ s/<<field_names>>/@{$json}[$i]->
config->{PATH}->{sql_target_dir} . Mojo::File->new($file)->basename();
$filename =~ s/json/sql/ig;
} catch ($e) {
die "create_new_filename failed '$e'";
};
key} = "";
$templates->{template_ind} = "";
try {
my $fields = $self->json->{fields};
foreach my $key (sort keys %{$fields}) {
if (index($key,'_