App-DBBrowser
view release on metacpan or search on metacpan
lib/App/DBBrowser/GetContent/Source.pm view on Meta::CPAN
$#$aoa--;
next WHAT_NEXT;
}
}
elsif ( $choice eq $sf->{i}{ok} ) {
if ( ! @$aoa ) {
if ( $stmt_type eq 'Create_Table' ) {
next COL_BY_COL;
}
elsif ( $stmt_type eq 'Insert' ) {
return;
}
}
else {
$sql->{insert_args} = $aoa;
return 1;
}
}
elsif ( $choice eq $add ) {
my $info = $sf->__get_read_info( $aoa );
my $fields = [ map { [ $_, ] } @$col_names ];
# Fill_form
my $data = $tf->fill_form(
$fields,
{ info => $info, confirm => $confirm, back => $back . ' ', prompt => 'Enter Data:' }
);
$ax->print_sql_info( $info );
if ( ! defined $data ) {
if ( ! @$aoa ) {
next COL_BY_COL;
}
$default = 0;
}
else {
if ( $sf->{o}{insert}{empty_to_null_plain} ) {
push @{$aoa}, [ map { length( $_->[1] ) ? $_->[1] : undef } @$data ];
}
else {
push @{$aoa}, [ map { $_->[1] } @$data ];
}
$default = 2;
}
}
}
}
}
sub files_in_dir {
my ( $sf, $dir ) = @_;
my $ax = App::DBBrowser::Auxil->new( $sf->{i}, $sf->{o}, $sf->{d} );
if ( ! defined $dir ) {
return [];
}
if ( ! -d $dir ) {
my $message = "The directory '$dir' does not exist any more.";
$ax->print_error_message( $message );
$sf->__remove_from_history( $dir );
return [];
}
my $dir_fs = realpath( encode( 'locale_fs', $dir ) ) or die "$dir: $!";
my @tmp_files_fs;
if ( length $sf->{o}{insert}{file_filter} ) {
@tmp_files_fs = map { basename $_} grep { -e $_ } glob( catfile( $dir_fs, $sf->{o}{insert}{file_filter} ) );
}
else {
opendir( my $dh, $dir_fs ) or die "$dir_fs: $!";
@tmp_files_fs = readdir $dh;
closedir $dh;
}
my $files = [];
for my $file_fs ( sort @tmp_files_fs ) {
next if $file_fs =~ /^\./ && ! $sf->{o}{insert}{show_hidden_files};
next if -d catdir $dir_fs, $file_fs;
push @$files, decode( 'locale_fs', catfile $dir_fs, $file_fs );
}
return $files;
}
sub __avail_directories {
my ( $sf ) = @_;
my $ax = App::DBBrowser::Auxil->new( $sf->{i}, $sf->{o}, $sf->{d} );
my $h_ref = $ax->read_json( $sf->{i}{f_dir_history} ) // {};
my @dirs = @{$h_ref->{dirs}//[]};
if ( @dirs > $sf->{o}{insert}{history_dirs} ) {
$#dirs = $sf->{o}{insert}{history_dirs} - 1;
$h_ref->{dirs} = \@dirs;
$ax->write_json( $sf->{i}{f_dir_history}, $h_ref );
}
return [ sort @dirs ]; ##
}
sub __add_to_history {
my ( $sf, $dir ) = @_;
my $ax = App::DBBrowser::Auxil->new( $sf->{i}, $sf->{o}, $sf->{d} );
my $h_ref = $ax->read_json( $sf->{i}{f_dir_history} ) // {};
my @dirs = @{$h_ref->{dirs}//[]};
unshift @dirs, $dir;
@dirs = uniq @dirs;
if ( @dirs > $sf->{o}{insert}{history_dirs} ) {
$#dirs = $sf->{o}{insert}{history_dirs} - 1;
}
$h_ref->{dirs} = \@dirs;
$ax->write_json( $sf->{i}{f_dir_history}, $h_ref );
}
sub __remove_from_history {
my ( $sf, $dir ) = @_;
my $ax = App::DBBrowser::Auxil->new( $sf->{i}, $sf->{o}, $sf->{d} );
my $h_ref = $ax->read_json( $sf->{i}{f_dir_history} ) // {};
my @dirs = @{$h_ref->{dirs}//[]};
my $idx = firstidx { $_ eq $dir } @dirs;
splice( @dirs, $idx, 1 );
$h_ref->{dirs} = \@dirs;
$ax->write_json( $sf->{i}{f_dir_history}, $h_ref );
}
sub __new_search_dir {
my ( $sf ) = @_;
my $tu = Term::Choose::Util->new( $sf->{i}{tcu_default} );
my $default_dir = $sf->{d}{default_search_dir} // $sf->{i}{home_dir};
# Choose
my $dir = $tu->choose_a_directory(
{ init_dir => $default_dir, decoded => 1, clear_screen => 1, confirm => '-OK-', back => '<<' }
);
if ( $dir ) {
$sf->{d}{default_search_dir} = $dir;
}
return $dir;
}
( run in 1.849 second using v1.01-cache-2.11-cpan-ceb78f64989 )