The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Puzzle::Template::DBIxClassConverter;

our $VERSION = '0.17';

use base 'Class::Container';

sub resultset {
	my $self	= shift;
	my $rs		= shift;
	my $key		= shift || $rs->result_source->name;

	my @ret;

	while ($rec = $rs->next) {
		push @ret,$self->row($rec);
	}

	return {$key => \@ret};
}

sub row {
	my $self	= shift;
	my $rs		= shift;

	my $tblName	= $rs->result_source->name;

	my %ret		= $rs->get_columns;
	$ret{"$tblName.$_"} = $ret{$_} foreach(keys %ret);
	foreach (keys %{$rs->result_source->_relationships}) {
		my $rrow = $rs->$_;
		if (ref($rrow) eq 'DBIx::Class::ResultSet') {
			if ($rrow->count == 1) {
				my $single_row = $rrow->next;
				%ret = (%ret,%{$self->row($single_row)});
			} else {
				%ret = (%ret,%{$self->resultset($rrow)});
			}
		}
	}

	return \%ret;
}

1;