DBIx-Class-Helper-ColumnNames

 view release on metacpan or  search on metacpan

lib/DBIx/Class/Helper/ColumnNames.pm  view on Meta::CPAN

package DBIx::Class::Helper::ColumnNames;

# ABSTRACT: Retrieve column names from a resultset

use v5.20;
use warnings;

use parent 'DBIx::Class';

use Ref::Util qw( is_plain_hashref is_ref );

# RECOMMEND PREREQ: Ref::Util::XS

use experimental qw( lexical_subs postderef signatures );

use namespace::clean;

our $VERSION = 'v0.1.3';


sub get_column_names ($self) {
    my @columns;

    state sub _get_name ($col) {
        if ( is_plain_hashref($col) ) {
            my (@names) = grep { $_ !~ /^\-/ } keys $col->%*;
            return @names;
        }
        else {
            die "Cannot determine column name from a reference" if is_ref($col);
            return $col =~ s/^\w+\.//r;
        }
    }

    $self->_normalize_selection( my $attrs = $self->{attrs} );

    for my $key (qw/ columns +columns as +as /) {
        next unless $attrs->{$key};
        push @columns, map { _get_name($_) } $attrs->{$key}->@*;
    }

    return $self->result_source->columns unless @columns;

    return @columns;
}


1;

__END__

=pod

=encoding UTF-8

=head1 NAME

DBIx::Class::Helper::ColumnNames - Retrieve column names from a resultset

=head1 VERSION

version v0.1.3

=head1 SYNOPSIS

In a resultset:

  package MyApp::Schema::ResultSet::Wobbles;

  use base qw/DBIx::Class::ResultSet/;

  __PACKAGE__->load_components( qw/



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