_dir, 'general_settings.json';
$sf->{i}{conf_file_fmt} = catfile $app_dir, 'config_%s.json';
$sf->{i}{f_attached_db} = catfile $app_dir, 'attached_DB.json';
$sf->{i}{f_dir_hi
p_dir, 'dir_history.json';
$sf->{i}{f_subqueries} = catfile $app_dir, 'subqueries.json';
$sf->{i}{f_search_and_replace} = catfile $app_dir, 'search_and_replace.json';
}
sub __options
f->{i}{f_attached_db} ) {
if ( ! eval {
my $h_ref = $ax->read_json( $sf->{i}{f_attached_db} ) // {};
my $attached_db = $h_ref->{$db} // {};
my $ax = App::DBBrowser::Auxil->new( $sf->{i}, $sf->{o}, $sf->{d} );
my $h_ref = $ax->read_json( $sf->{i}{f_subqueries} ) // {};
my $saved_subqueries = $h_ref->{ $sf->{i}{driver} }{ $sf->{d
my $top_lines = [ $sf->{d}{db_string}, 'Stored Subqueries:' ];
my $h_ref = $ax->read_json( $sf->{i}{f_subqueries} ) // {};
my $saved_subqueries = $h_ref->{$driver}{$db} // [];
else {
delete $h_ref->{$driver}{$db};
}
$ax->write_json( $sf->{i}{f_subqueries}, $h_ref );
$any_change++;
}
}
}
sub __add_subqu
'Firebird_databases.json';
my $ax = App::DBBrowser::Auxil->new( {}, {}, {} );
my $tc = Term::Choose->new( $sf->{i}{tc_default} );
my $saved_databases = $ax->read_json( $file_firebird_dbs
elsif ( $choice eq $confirm ) {
if ( $changed ) {
$ax->write_json( $file_firebird_dbs, $databases );
}
return $databases;
}
ir}, 'cache_SQLite_files.json';
my $ax = App::DBBrowser::Auxil->new( {}, {}, {} );
my $tc = Term::Choose->new( $sf->{i}{tc_default} );
my $db_cache = $ax->read_json( $cache_sqlite_files )
irs;
$databases = [ sort { $a cmp $b } @$databases ];
$db_cache->{databases} = $databases;
$ax->write_json( $cache_sqlite_files, $db_cache );
return $databases;
}
1;
__END__
use Scalar::Util qw( looks_like_number );
#use Storable qw(); # required
use JSON::MaybeXS qw( decode_json );
use List::MoreUtils qw( none uniq );
use Term::Choose qw();
use Term
[ 'Press ENTER to continue' ],
{ prompt => $message, info => $info }
);
}
sub write_json {
my ( $sf, $file_fs, $ref ) = @_;
if ( ! defined $ref ) {
open my $fh, '>', $fil
my $json = JSON::MaybeXS->new->utf8->pretty->canonical->encode( $ref );
open my $fh, '>', $file_fs or die "$file_fs: $!";
print $fh $json;
close $fh;
}
sub read_json {
my ( $sf,
lt} );
my $attached_db;
if ( -s $sf->{i}{f_attached_db} ) {
my $h_ref = $ax->read_json( $sf->{i}{f_attached_db} ) // {};
$attached_db = $h_ref->{$sf->{d}{db}} // {};
}
my $h_ref = $ax->read_json( $sf->{i}{f_attached_db} ) // {};
$h_ref->{$sf->{d}{db}} = $attached_db;
$ax->write_json( $sf->{i}{f_attached_db}, $h_ref );
lt} );
my $attached_db;
if ( -s $sf->{i}{f_attached_db} ) {
my $h_ref = $ax->read_json( $sf->{i}{f_attached_db} ) // {};
$attached_db = $h_ref->{$sf->{d}{db}} // {};
}
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}
$#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 $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;
{$opt};
}
}
my $ax = App::DBBrowser::Auxil->new( $sf->{i}, $sf->{o}, {} );
my $file_name_fs = $sf->{i}{f_settings};
$ax->write_json( $file_name_fs, $tmp );
}
1;
__END__
my $ax = App::DBBrowser::Auxil->new( $sf->{i}, $sf->{o}, $sf->{d} );
my $h_ref = $ax->read_json( $sf->{i}{f_subqueries} ) // {};
my $saved_subqueries = $h_ref->{ $sf->{i}{driver} }{ $sf->{d
my $top_lines = [ $sf->{d}{db_string}, 'Stored Subqueries:' ];
my $h_ref = $ax->read_json( $sf->{i}{f_subqueries} ) // {};
my $saved_subqueries = $h_ref->{$driver}{$db} // [];
else {
delete $h_ref->{$driver}{$db};
}
$ax->write_json( $sf->{i}{f_subqueries}, $h_ref );
$any_change++;
}
}
}
sub __add_subqu
}, $plugin );
my $db_opt;
if ( -f $file_fs && -s $file_fs ) {
$db_opt = $ax->read_json( $file_fs ) // {};
}
return $db_opt;
}
sub get_set_attributes {
my ( $sf, $db, $db_
ols( $aoa );
my $header = $cf->__prepare_header( $aoa, $is_empty );
my $saved = $ax->read_json( $sf->{i}{f_search_and_replace} ) // {};
my $all_sr_groups = [];
my $used_names = [];
oice eq $hidden ) {
$sf->__saved_search_and_replace();
$saved = $ax->read_json( $sf->{i}{f_search_and_replace} ) // {};
$available = [ sort { $a cmp $b } keys %$sav
my $ax = App::DBBrowser::Auxil->new( $sf->{i}, $sf->{o}, $sf->{d} );
my $saved = $ax->read_json( $sf->{i}{f_search_and_replace} ) // {};
my $save_data = 0;
my $old_idx_history = 0;
App::DBBrowser::DB:://;
my $file_fs = sprintf( $sf->{i}{conf_file_fmt}, $plugin );
if ( defined $db_opt && %$db_opt ) {
$ax->write_json( $file_fs, $db_opt );
}
}
1;
__END__
le_fs = $sf->{i}{f_settings};
if ( -f $file_fs && -s $file_fs ) {
my $tmp = $ax->read_json( $file_fs ) // {};
for my $section ( keys %$tmp ) {
for my $opt ( keys %{$tm
my $ax = App::DBBrowser::Auxil->new( $sf->{i}, $sf->{o}, $sf->{d} );
my $h_ref = $ax->read_json( $sf->{i}{f_subqueries} ) // {};
my $saved_subqueries = $h_ref->{ $sf->{i}{driver} }{ $sf->{d
my $top_lines = [ $sf->{d}{db_string}, 'Stored Subqueries:' ];
my $h_ref = $ax->read_json( $sf->{i}{f_subqueries} ) // {};
my $saved_subqueries = $h_ref->{$driver}{$db} // [];
else {
delete $h_ref->{$driver}{$db};
}
$ax->write_json( $sf->{i}{f_subqueries}, $h_ref );
$any_change++;
}
}
}
sub __add_subqu