App-dbinfo

 view release on metacpan or  search on metacpan

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

sub list_tables {
    require DBIx::Util::Schema;

    my %args = @_;

    my $dbh = _connect(\%args);

    return [200, "OK", [
            DBIx::Util::Schema::list_tables($dbh)]];
}

$SPEC{list_sqlite_tables} = {
    v => 1.1,
    summary => 'List tables in the SQLite database',
    args => {
        %args_common_sqlite,
    },
    args_rels => {
    },
};
sub list_sqlite_tables {
    my %args = @_;
    my $dsn; $dsn = "dbi:SQLite:dbname=".delete($args{dbpath}) if defined $args{dbpath};
    list_tables(
        dsn => $dsn,
        %args
    );
}

$SPEC{list_columns} = {
    v => 1.1,
    summary => 'List columns of a table',
    args => {
        %args_common_dbi,
        %arg_table,
        %arg_detail,
    },
    args_rels => {
        %args_rels_common,
    },
    examples => [
        {
            args => {dsn=>'dbi:SQLite:database=/tmp/test.db', table=>'main.table1'},
            test => 0,
            'x.doc.show_result' => 0,
        },
    ],
};
sub list_columns {
    require DBIx::Util::Schema;

    my %args = @_;

    my $dbh = _connect(\%args);

    my $ltres = list_tables(%args);
    return [500, "Can't list tables: $ltres->[0] - $ltres->[1]"]
        unless $ltres->[0] == 200;
    my $tables = $ltres->[2];
    #my $tables_wo_schema = [map {my $n=$_; $n=~s/.+\.//; $n} @$tables];
    #return [404, "No such table '$args{table}'"]
    #    unless grep { $args{table} eq $_ } (@$tables, @$tables_wo_schema);
    return [404, "No such table '$args{table}'"]
        unless grep { $args{table} eq $_ } @$tables;

    my @cols = DBIx::Util::Schema::list_columns($dbh, $args{table});
    @cols = map { $_->{COLUMN_NAME} } @cols unless $args{detail};
    return [200, "OK", \@cols];
}

$SPEC{list_sqlite_columns} = {
    v => 1.1,
    summary => 'List columns of a SQLite database table',
    args => {
        %args_common_sqlite,
        %arg_table,
        %arg_detail,
    },
    args_rels => {
    },
    examples => [
        {
            args => {dbpath=>'/tmp/test.db', table=>'main.table1'},
            test => 0,
            'x.doc.show_result' => 0,
        },
    ],
};
sub list_sqlite_columns {
    my %args = @_;
    my $dsn; $dsn = "dbi:SQLite:dbname=".delete($args{dbpath}) if defined $args{dbpath};
    list_columns(
        dsn => $dsn,
        %args
    );
}

our %args_dump_table = (
    row_format => {
        schema => ['str*', in=>['array', 'hash']],
        default => 'hash',
        cmdline_aliases => {
            array => { summary => 'Shortcut for --row-format=array', is_flag=>1, code => sub { $_[0]{row_format} = 'array' } },
            a     => { summary => 'Shortcut for --row-format=array', is_flag=>1, code => sub { $_[0]{row_format} = 'array' } },
        },
    },
    exclude_columns => {
        'x.name.is_plural' => 1,
        'x.name.singular' => 'exclude_column',
        schema => ['array*', {
            of=>'str*',
            #'x.perl.coerce_rules'=>['From_str::comma_sep'],
        }],
        cmdline_aliases => {C=>{}},
    },
    include_columns => {
        'x.name.is_plural' => 1,
        'x.name.singular' => 'include_column',
        schema => ['array*', {
            of=>'str*',
            #'x.perl.coerce_rules'=>['From_str::comma_sep'],
        }],
        cmdline_aliases => {c=>{}},



( run in 1.378 second using v1.01-cache-2.11-cpan-39bf76dae61 )