1 package DBIx::Class::ResultSet::WithMetaData;
8 use MooseX::Method::Signatures;
9 extends 'DBIx::Class::ResultSet';
23 my $new = $self->next::method(@_);
24 foreach my $key (qw/_row_info/) {
25 alias $new->{$key} = $new->{attrs}{$key};
26 $new->{$key} = {} unless $new->{$key};
33 foreach my $row ($self->all) {
34 my $token = $self->tokenify($row->get_column($self->token_col));
35 $self->add_row_info(id => $row->id, info => { join('_', 'token', $self->token_col) => $token });
42 my $rs = $self->search({});
43 $rs->result_class('DBIx::Class::ResultClass::HashRefInflator');
45 foreach my $row ($rs->all) {
46 if (my $info = $self->row_info_for(id => $row->{id})) {
47 $row = { %{$row}, %{$info} };
52 return ($self->was_row) ? $rows[0] : \@rows;
55 method add_row_info (Int :$id, HashRef :$info) {
56 unless ($self->find($id)) {
58 die 'invalid id passed to add_row_info';
61 if (my $existing = $self->_row_info->{$id}) {
62 $info = { %{$existing}, %{$info} };
65 $self->_row_info->{$id} = $info;
68 method row_info_for (Int :$id) {
69 return $self->_row_info->{$id};
72 method order_by (Str :$col) {
73 $col = "me.$col" unless ($col =~ m/\./);
74 return $self->search({}, { order_by => $col });
77 method limit (Int :$count) {
78 return $self->search({}, { rows => $count });
82 my ($self, $string) = @_;
85 $string =~ s/[,\.\-\+]//g;
88 $string = lc($string);
95 return $self->result_source->resultset;