App-idxdb

 view release on metacpan or  search on metacpan

Changes  view on Meta::CPAN


	- [ux] Add shortcut alias -g for --graph.

	- [dox] Update example in Synopsis.


0.006   2021-06-17  Released-By: PERLANCAR; Urgency: medium

	- Add subcommand: stocks-by-foreign-ownership.

	- [ux] Replace usage of DateTime outside of functions with
	  Time::Local::More, to reduce startup overhead for tab completion.

	- [ux] [subcommand daily] Add option --fields-price-and-afnb (Close
	  and AccumForeignNetBuy).


0.005   2021-06-16  Released-By: PERLANCAR; Urgency: medium

	- [ux] [subcommand daily] Use secondary y axes for fields 2, 3, ...
	  so we can plot different scales e.g. closing price (3000-5000) vs

META.json  view on Meta::CPAN

            "Data::Sah::Coerce::perl::To_date::From_obj::time_moment" : "0",
            "Data::Sah::Coerce::perl::To_date::From_str::iso8601" : "0",
            "Data::Sah::Coerce::perl::To_date::From_str::natural" : "0",
            "Data::Sah::Compiler::perl::TH::array" : "0.907",
            "Data::Sah::Compiler::perl::TH::bool" : "0.907",
            "Data::Sah::Compiler::perl::TH::date" : "0.907",
            "Data::Sah::Compiler::perl::TH::str" : "0.907",
            "Data::Sah::Filter::perl::Finance::SE::IDX::check_stock_code_listed" : "0",
            "Data::Sah::Filter::perl::Path::expand_tilde_when_on_unix" : "0",
            "Data::Sah::Filter::perl::Path::strip_slashes_when_on_unix" : "0",
            "DateTime" : "0",
            "File::HomeDir" : "0",
            "File::Temp" : "0.2307",
            "File::chdir" : "0",
            "JSON::MaybeXS" : "0",
            "Log::ger" : "0.038",
            "Perinci::CmdLine::Any" : "0",
            "Sah::Schema::dirname" : "0",
            "Sah::Schema::idx::listed_stock_code" : "0",
            "Time::Local::More" : "0",
            "perl" : "5.010001",

META.yml  view on Meta::CPAN

  Data::Sah::Coerce::perl::To_date::From_obj::time_moment: '0'
  Data::Sah::Coerce::perl::To_date::From_str::iso8601: '0'
  Data::Sah::Coerce::perl::To_date::From_str::natural: '0'
  Data::Sah::Compiler::perl::TH::array: '0.907'
  Data::Sah::Compiler::perl::TH::bool: '0.907'
  Data::Sah::Compiler::perl::TH::date: '0.907'
  Data::Sah::Compiler::perl::TH::str: '0.907'
  Data::Sah::Filter::perl::Finance::SE::IDX::check_stock_code_listed: '0'
  Data::Sah::Filter::perl::Path::expand_tilde_when_on_unix: '0'
  Data::Sah::Filter::perl::Path::strip_slashes_when_on_unix: '0'
  DateTime: '0'
  File::HomeDir: '0'
  File::Temp: '0.2307'
  File::chdir: '0'
  JSON::MaybeXS: '0'
  Log::ger: '0.038'
  Perinci::CmdLine::Any: '0'
  Sah::Schema::dirname: '0'
  Sah::Schema::idx::listed_stock_code: '0'
  Time::Local::More: '0'
  perl: '5.010001'

Makefile.PL  view on Meta::CPAN

    "Data::Sah::Coerce::perl::To_date::From_obj::time_moment" => 0,
    "Data::Sah::Coerce::perl::To_date::From_str::iso8601" => 0,
    "Data::Sah::Coerce::perl::To_date::From_str::natural" => 0,
    "Data::Sah::Compiler::perl::TH::array" => "0.907",
    "Data::Sah::Compiler::perl::TH::bool" => "0.907",
    "Data::Sah::Compiler::perl::TH::date" => "0.907",
    "Data::Sah::Compiler::perl::TH::str" => "0.907",
    "Data::Sah::Filter::perl::Finance::SE::IDX::check_stock_code_listed" => 0,
    "Data::Sah::Filter::perl::Path::expand_tilde_when_on_unix" => 0,
    "Data::Sah::Filter::perl::Path::strip_slashes_when_on_unix" => 0,
    "DateTime" => 0,
    "File::HomeDir" => 0,
    "File::Temp" => "0.2307",
    "File::chdir" => 0,
    "JSON::MaybeXS" => 0,
    "Log::ger" => "0.038",
    "Perinci::CmdLine::Any" => 0,
    "Sah::Schema::dirname" => 0,
    "Sah::Schema::idx::listed_stock_code" => 0,
    "Time::Local::More" => 0,
    "strict" => 0,

Makefile.PL  view on Meta::CPAN

  "Data::Sah::Coerce::perl::To_date::From_obj::time_moment" => 0,
  "Data::Sah::Coerce::perl::To_date::From_str::iso8601" => 0,
  "Data::Sah::Coerce::perl::To_date::From_str::natural" => 0,
  "Data::Sah::Compiler::perl::TH::array" => "0.907",
  "Data::Sah::Compiler::perl::TH::bool" => "0.907",
  "Data::Sah::Compiler::perl::TH::date" => "0.907",
  "Data::Sah::Compiler::perl::TH::str" => "0.907",
  "Data::Sah::Filter::perl::Finance::SE::IDX::check_stock_code_listed" => 0,
  "Data::Sah::Filter::perl::Path::expand_tilde_when_on_unix" => 0,
  "Data::Sah::Filter::perl::Path::strip_slashes_when_on_unix" => 0,
  "DateTime" => 0,
  "File::HomeDir" => 0,
  "File::Spec" => 0,
  "File::Temp" => "0.2307",
  "File::chdir" => 0,
  "IO::Handle" => 0,
  "IPC::Open3" => 0,
  "JSON::MaybeXS" => 0,
  "Log::ger" => "0.038",
  "Perinci::CmdLine::Any" => 0,
  "Sah::Schema::dirname" => 0,

dist.ini  view on Meta::CPAN

:version=0.604

[Prereqs]
perl=5.010001
strict=0
warnings=0
Browser::Open=0
Chart::Gnuplot=0
Color::RGB::Util=0.600
ColorTheme::Distinct::WhiteBG=0
DateTime=0
;!lint_prereqs assume-used "undetected"
DBD::SQLite=0
DBI=0
DBIx::Util::Schema=0
File::chdir=0
File::HomeDir=0
File::Temp=0.2307
JSON::MaybeXS=0
Log::ger=0.038
Perinci::CmdLine::Any=0

lib/App/idxdb.pm  view on Meta::CPAN

        'x.name.singular' => 'stock',
        schema => ['array*', of=>'idx::listed_stock_code*', min_len=>1], # XXX allow unlisted ones too in the future
        req => 1,
        pos => 0,
        slurpy => 1,
    },
);

our %argsopt_filter_date = (
    date_start => {
        schema => ['date*', 'x.perl.coerce_to' => 'DateTime', 'x.perl.coerce_rules'=>['From_str::natural']],
        tags => ['category:filtering'],
        default => ($today - 30*86400),
        cmdline_aliases => {
            'week'   => {is_flag=>1, code=>sub {$_[0]{date_start} = $today-     7*86400; $_[0]{date_end} = $today}},
            '1week'  => {is_flag=>1, code=>sub {$_[0]{date_start} = $today-     7*86400; $_[0]{date_end} = $today}},
            'month'  => {is_flag=>1, code=>sub {$_[0]{date_start} = $today-    30*86400; $_[0]{date_end} = $today}},
            '1month' => {is_flag=>1, code=>sub {$_[0]{date_start} = $today-    30*86400; $_[0]{date_end} = $today}},
            '2month' => {is_flag=>1, code=>sub {$_[0]{date_start} = $today-    60*86400; $_[0]{date_end} = $today}},
            '3month' => {is_flag=>1, code=>sub {$_[0]{date_start} = $today-    90*86400; $_[0]{date_end} = $today}},
            '6month' => {is_flag=>1, code=>sub {$_[0]{date_start} = $today-   180*86400; $_[0]{date_end} = $today}},
            'ytd'    => {is_flag=>1, code=>sub {$_[0]{date_start} = $startofyear;        $_[0]{date_end} = $today}},
            'year'   => {is_flag=>1, code=>sub {$_[0]{date_start} = $today-   365*86400; $_[0]{date_end} = $today}},
            '1year'  => {is_flag=>1, code=>sub {$_[0]{date_start} = $today-   365*86400; $_[0]{date_end} = $today}},
            '2year'  => {is_flag=>1, code=>sub {$_[0]{date_start} = $today- 2*365*86400; $_[0]{date_end} = $today}},
            '3year'  => {is_flag=>1, code=>sub {$_[0]{date_start} = $today- 3*365*86400; $_[0]{date_end} = $today}},
            '5year'  => {is_flag=>1, code=>sub {$_[0]{date_start} = $today- 5*365*86400; $_[0]{date_end} = $today}},
            '10year' => {is_flag=>1, code=>sub {$_[0]{date_start} = $today-10*365*86400; $_[0]{date_end} = $today}},
        },
    },
    date_end => {
        schema => ['date*', 'x.perl.coerce_to' => 'DateTime', 'x.perl.coerce_rules'=>['From_str::natural']],
        tags => ['category:filtering'],
        default => $today,
    },
);

my $sch_ownership_field = ['str*'=>{in=>\@ownership_fields, 'x.in.summaries'=>[map {$ownership_fields{$_}} @ownership_fields]}];
my $sch_daily_field     = ['str*'=>{in=>\@daily_fields}];

our %argopt_field_ownership = (
    field => {

lib/App/idxdb.pm  view on Meta::CPAN

_
    args => {
        %args_common,
        gudangdata_path => {
            schema => 'dirname*',
            req => 1,
        },
    },
};
sub update {
    require DateTime;
    require DBIx::Util::Schema;
    require JSON::MaybeXS;

    my %args = @_;

    my $gd_path = $args{gudangdata_path};

    my $state = _init(\%args, 'rw');
    my $dbh = $state->{dbh};
    my $now = DateTime->now;

  UPDATE_META:
    {
        my $table_exists = DBIx::Util::Schema::table_exists($dbh, 'meta');
        last if $table_exists;
        log_info "Creating meta table ...";
        $dbh->do("CREATE TABLE meta (name TEXT PRIMARY KEY, value TEXT)");
    }

    my $sth_sel_meta = $dbh->prepare("SELECT value FROM meta WHERE name=?");



( run in 0.368 second using v1.01-cache-2.11-cpan-05444aca049 )