order_by => [qw/me.cdid artist.artistid/],
})->all ],
[
- {
- single_track => undef,
- year => 1981
- },
- {
- single_track => undef,
- year => 1976
- },
- {
- single_track => {
- cd => {
- artist => {
- name => "JMJ"
- }
- }
+ { year => 1981, single_track => undef },
+ { year => 1976, single_track => undef },
+ { year => 1978, single_track => {
+ cd => {
+ artist => { name => "JMJ" }
},
- year => 1978
- },
- {
- single_track => undef,
- year => 1977
- },
- {
- single_track => undef,
- year => 1977
- },
+ }},
+ { year => 1977, single_track => undef },
+ { year => 1977, single_track => undef },
+
],
'plain 1:1 descending chain ' . $rs->result_class
;
})->all ],
[
{
- artist => 1,
- single_track => undef,
- title => "Magnetic Fields",
- year => 1981
+ artist => 1, title => "Magnetic Fields", year => 1981, single_track => undef,
},
{
- artist => 1,
- single_track => undef,
- title => "Oxygene",
- year => 1976
+ artist => 1, title => "Oxygene", year => 1976, single_track => undef,
},
{
- artist => 1,
- single_track => {
+ artist => 1, title => "Equinoxe", year => 1978, single_track => {
cd => {
artist => {
- artistid => 1,
- cds => {
- cdid => 1,
- tracks => {
+ artistid => 1, cds => {
+ cdid => 1, tracks => {
title => "m1"
}
}
}
}
},
- title => "Equinoxe",
- year => 1978
},
{
- artist => 1,
- single_track => {
+ artist => 1, title => "Equinoxe", year => 1978, single_track => {
cd => {
artist => {
- artistid => 1,
- cds => {
- cdid => 1,
- tracks => {
+ artistid => 1, cds => {
+ cdid => 1, tracks => {
title => "m2"
}
}
}
}
},
- title => "Equinoxe",
- year => 1978
},
{
- artist => 1,
- single_track => {
+ artist => 1, title => "Equinoxe", year => 1978, single_track => {
cd => {
artist => {
- artistid => 1,
- cds => {
- cdid => 1,
- tracks => {
+ artistid => 1, cds => {
+ cdid => 1, tracks => {
title => "m3"
}
}
}
}
},
- title => "Equinoxe",
- year => 1978
},
{
- artist => 1,
- single_track => {
+ artist => 1, title => "Equinoxe", year => 1978, single_track => {
cd => {
artist => {
- artistid => 1,
- cds => {
- cdid => 1,
- tracks => {
+ artistid => 1, cds => {
+ cdid => 1, tracks => {
title => "m4"
}
}
}
}
},
- title => "Equinoxe",
- year => 1978
},
{
- artist => 1,
- single_track => {
+ artist => 1, title => "Equinoxe", year => 1978, single_track => {
cd => {
artist => {
- artistid => 1,
- cds => {
- cdid => 2,
- tracks => {
+ artistid => 1, cds => {
+ cdid => 2, tracks => {
title => "o2"
}
}
}
}
},
- title => "Equinoxe",
- year => 1978
},
{
- artist => 1,
- single_track => {
+ artist => 1, title => "Equinoxe", year => 1978, single_track => {
cd => {
artist => {
- artistid => 1,
- cds => {
- cdid => 2,
- tracks => {
+ artistid => 1, cds => {
+ cdid => 2, tracks => {
title => "o1"
}
}
}
}
},
- title => "Equinoxe",
- year => 1978
},
{
- artist => 1,
- single_track => {
+ artist => 1, title => "Equinoxe", year => 1978, single_track => {
cd => {
artist => {
- artistid => 1,
- cds => {
- cdid => 3,
- tracks => {
+ artistid => 1, cds => {
+ cdid => 3, tracks => {
title => "e1"
}
}
}
}
},
- title => "Equinoxe",
- year => 1978
},
{
- artist => 1,
- single_track => {
+ artist => 1, title => "Equinoxe", year => 1978, single_track => {
cd => {
artist => {
- artistid => 1,
- cds => {
- cdid => 3,
- tracks => {
+ artistid => 1, cds => {
+ cdid => 3, tracks => {
title => "e2"
}
}
}
}
},
- title => "Equinoxe",
- year => 1978
},
{
- artist => 1,
- single_track => {
+ artist => 1, title => "Equinoxe", year => 1978, single_track => {
cd => {
artist => {
- artistid => 1,
- cds => {
- cdid => 3,
- tracks => {
+ artistid => 1, cds => {
+ cdid => 3, tracks => {
title => "e3"
}
}
}
}
},
- title => "Equinoxe",
- year => 1978
},
{
- artist => 1,
- single_track => {
+ artist => 1, title => "Equinoxe", year => 1978, single_track => {
cd => {
artist => {
- artistid => 1,
- cds => {
- cdid => 4,
- tracks => undef
+ artistid => 1, cds => {
+ cdid => 4, tracks => undef
}
}
}
},
- title => "Equinoxe",
- year => 1978
},
{
- artist => 1,
- single_track => {
+ artist => 1, title => "Equinoxe", year => 1978, single_track => {
cd => {
artist => {
- artistid => 1,
- cds => {
- cdid => 5,
- tracks => undef
+ artistid => 1, cds => {
+ cdid => 5, tracks => undef
}
}
}
},
- title => "Equinoxe",
- year => 1978
},
{
- artist => 1,
- single_track => undef,
- title => "fuzzy_1",
- year => 1977
+ artist => 1, title => "fuzzy_1", year => 1977, single_track => undef,
},
{
- artist => 1,
- single_track => undef,
- title => "fuzzy_2",
- year => 1977
+ artist => 1, title => "fuzzy_2", year => 1977, single_track => undef,
}
],
'non-collapsing 1:1:1:M:M chain ' . $rs->result_class,
})->all ],
[
{
- artist => 1,
- single_track => undef,
- title => "Magnetic Fields",
- year => 1981
+ artist => 1, title => "Magnetic Fields", year => 1981, single_track => undef,
},
{
- artist => 1,
- single_track => undef,
- title => "Oxygene",
- year => 1976
+ artist => 1, title => "Oxygene", year => 1976, single_track => undef,
},
{
- artist => 1,
- single_track => {
+ artist => 1, title => "Equinoxe", year => 1978, single_track => {
cd => {
artist => {
- artistid => 1,
- cds => [
+ artistid => 1, cds => [
{
- cdid => 1,
- tracks => [
- {
- title => "m1"
- },
- {
- title => "m2"
- },
- {
- title => "m3"
- },
- {
- title => "m4"
- }
+ cdid => 1, tracks => [
+ { title => "m1" },
+ { title => "m2" },
+ { title => "m3" },
+ { title => "m4" },
]
},
{
- cdid => 2,
- tracks => [
- {
- title => "o2"
- },
- {
- title => "o1"
- }
+ cdid => 2, tracks => [
+ { title => "o2" },
+ { title => "o1" },
]
},
{
- cdid => 3,
- tracks => [
- {
- title => "e1"
- },
- {
- title => "e2"
- },
- {
- title => "e3"
- }
+ cdid => 3, tracks => [
+ { title => "e1" },
+ { title => "e2" },
+ { title => "e3" },
]
},
{
- cdid => 4,
- tracks => []
+ cdid => 4, tracks => [],
},
{
- cdid => 5,
- tracks => []
+ cdid => 5, tracks => [],
}
]
}
}
},
- title => "Equinoxe",
- year => 1978
},
{
- artist => 1,
- single_track => undef,
- title => "fuzzy_1",
- year => 1977
+ artist => 1, title => "fuzzy_1", year => 1977, single_track => undef,
},
{
- artist => 1,
- single_track => undef,
- title => "fuzzy_2",
- year => 1977
+ artist => 1, title => "fuzzy_2", year => 1977, single_track => undef,
}
],
'collapsing 1:1:1:M:M chain ' . $rs->result_class,
my $schema = DBICTest->init_schema();
my $mo_rs = $schema->resultset('Artist')->search(
- { 'me.artistid' => 4 },
- {
- prefetch => [
- {
- cds => [
- { tracks => { cd_single => 'tracks' } },
- { cd_to_producer => 'producer' }
- ]
- },
- { artwork_to_artist => 'artwork' }
- ],
+ { 'me.artistid' => 4 },
+ {
+ prefetch => [
+ {
+ cds => [
+ { tracks => { cd_single => 'tracks' } },
+ { cd_to_producer => 'producer' }
+ ]
+ },
+ { artwork_to_artist => 'artwork' }
+ ],
- result_class => 'DBIx::Class::ResultClass::HashRefInflator',
+ result_class => 'DBIx::Class::ResultClass::HashRefInflator',
- order_by => [qw/tracks.position tracks.trackid producer.producerid/],
- }
+ order_by => [qw/tracks.position tracks.trackid producer.producerid/],
+ }
);
$schema->resultset('Artist')->create(
- {
- name => 'mo',
- rank => '1337',
- cds => [
- {
- title => 'Song of a Foo',
- year => '1999',
- tracks => [
- {
- title => 'Foo Me Baby One More Time',
- },
- {
- title => 'Foo Me Baby One More Time II',
- },
- {
- title => 'Foo Me Baby One More Time III',
- },
- {
- title => 'Foo Me Baby One More Time IV',
- cd_single =>
- { artist => 1, title => 'MO! Single', year => 2021, tracks => [
- { title => 'singled out' }, { title => 'still alone' },
- ] },
- }
- ],
- cd_to_producer => [
- { producer => { name => 'riba' } },
- { producer => { name => 'sushi' } },
- ]
- },
- {
- title => 'Song of a Foo II',
- year => '2002',
- tracks => [
- {
- title => 'Quit Playing Games With My Heart',
- },
- {
- title => 'Bar Foo',
- },
- {
- title => 'Foo Bar',
- cd_single =>
- { artist => 2, title => 'MO! Single', year => 2020, tracks => [
- { title => 'singled out' }, { title => 'still alone' },
- ] },
- }
- ],
- cd_to_producer => [
- { producer => { name => 'riba' } },
- { producer => { name => 'sushi' } },
- ],
- }
+ {
+ name => 'mo',
+ rank => '1337',
+ cds => [
+ {
+ title => 'Song of a Foo',
+ year => '1999',
+ tracks => [
+ { title => 'Foo Me Baby One More Time' },
+ { title => 'Foo Me Baby One More Time II' },
+ { title => 'Foo Me Baby One More Time III' },
+ { title => 'Foo Me Baby One More Time IV', cd_single => {
+ artist => 1, title => 'MO! Single', year => 2021, tracks => [
+ { title => 'singled out' },
+ { title => 'still alone' },
+ ]
+ } }
],
- artwork_to_artist =>
- [ { artwork => { cd_id => 1 } }, { artwork => { cd_id => 2 } } ]
- }
+ cd_to_producer => [
+ { producer => { name => 'riba' } },
+ { producer => { name => 'sushi' } },
+ ]
+ },
+ {
+ title => 'Song of a Foo II',
+ year => '2002',
+ tracks => [
+ { title => 'Quit Playing Games With My Heart' },
+ { title => 'Bar Foo' },
+ { title => 'Foo Bar', cd_single => {
+ artist => 2, title => 'MO! Single', year => 2020, tracks => [
+ { title => 'singled out' },
+ { title => 'still alone' },
+ ]
+ } }
+ ],
+ cd_to_producer => [
+ { producer => { name => 'riba' } },
+ { producer => { name => 'sushi' } },
+ ],
+ }
+ ],
+ artwork_to_artist => [
+ { artwork => {cd_id => 1 } },
+ { artwork => { cd_id => 2 } }
+ ]
+ }
);
my $mo = $mo_rs->next;
is( @{$mo->{cds}}, 2, 'two CDs' );
-cmp_deeply(
- $mo,
+cmp_deeply( $mo, {
+ artistid => 4, charfield => undef, name => 'mo', rank => 1337,
+ artwork_to_artist => [
+ { artist_id => 4, artwork_cd_id => 1, artwork => { cd_id => 1 } },
+ { artist_id => 4, artwork_cd_id => 2, artwork => { cd_id => 2 } },
+ ],
+ cds => [
{
- 'cds' => [
- {
- 'single_track' => undef,
- 'tracks' => [
- {
- 'cd' => '6',
- 'position' => '1',
- 'trackid' => '19',
- 'title' => 'Foo Me Baby One More Time',
- 'cd_single' => undef,
- 'last_updated_on' => undef,
- 'last_updated_at' => undef
- },
- {
- 'cd' => '6',
- 'position' => '2',
- 'trackid' => '20',
- 'title' => 'Foo Me Baby One More Time II',
- 'cd_single' => undef,
- 'last_updated_on' => undef,
- 'last_updated_at' => undef
- },
- {
- 'cd' => '6',
- 'position' => '3',
- 'trackid' => '21',
- 'title' => 'Foo Me Baby One More Time III',
- 'cd_single' => undef,
- 'last_updated_on' => undef,
- 'last_updated_at' => undef
- },
- {
- 'cd' => '6',
- 'position' => '4',
- 'trackid' => '22',
- 'title' => 'Foo Me Baby One More Time IV',
- 'last_updated_on' => undef,
- 'last_updated_at' => undef,
- 'cd_single' => {
- 'single_track' => '22',
- 'artist' => '1',
- 'cdid' => '7',
- 'title' => 'MO! Single',
- 'genreid' => undef,
- 'year' => '2021',
- 'tracks' => [
- {
- 'cd' => '7',
- 'position' => '1',
- 'title' => 'singled out',
- 'trackid' => '23',
- 'last_updated_at' => undef,
- 'last_updated_on' => undef
- },
- {
- 'cd' => '7',
- 'position' => '2',
- 'title' => 'still alone',
- 'trackid' => '24',
- 'last_updated_at' => undef,
- 'last_updated_on' => undef
- },
- ],
- },
- }
- ],
- 'artist' => '4',
- 'cdid' => '6',
- 'cd_to_producer' => [
- {
- 'attribute' => undef,
- 'cd' => '6',
- 'producer' => {
- 'name' => 'riba',
- 'producerid' => '4'
- }
- },
- {
- 'attribute' => undef,
- 'cd' => '6',
- 'producer' => {
- 'name' => 'sushi',
- 'producerid' => '5'
- }
- }
- ],
- 'title' => 'Song of a Foo',
- 'genreid' => undef,
- 'year' => '1999'
- },
- {
- 'single_track' => undef,
- 'tracks' => [
- {
- 'cd' => '8',
- 'position' => '1',
- 'trackid' => '25',
- 'title' => 'Quit Playing Games With My Heart',
- 'last_updated_on' => undef,
- 'last_updated_at' => undef,
- 'cd_single' => undef,
- },
- {
- 'cd' => '8',
- 'position' => '2',
- 'trackid' => '26',
- 'title' => 'Bar Foo',
- 'cd_single' => undef,
- 'last_updated_on' => undef,
- 'last_updated_at' => undef
- },
- {
- 'cd' => '8',
- 'position' => '3',
- 'trackid' => '27',
- 'title' => 'Foo Bar',
- 'last_updated_on' => undef,
- 'last_updated_at' => undef,
- 'cd_single' => {
- 'single_track' => '27',
- 'artist' => '2',
- 'cdid' => '9',
- 'title' => 'MO! Single',
- 'genreid' => undef,
- 'year' => '2020',
- 'tracks' => [
- {
- 'cd' => '9',
- 'position' => '1',
- 'title' => 'singled out',
- 'trackid' => '28',
- 'last_updated_at' => undef,
- 'last_updated_on' => undef
- },
- {
- 'cd' => '9',
- 'position' => '2',
- 'title' => 'still alone',
- 'trackid' => '29',
- 'last_updated_at' => undef,
- 'last_updated_on' => undef
- },
- ],
-
- },
- },
- ],
- 'artist' => '4',
- 'cdid' => '8',
- 'cd_to_producer' => [
- {
- 'attribute' => undef,
- 'cd' => '8',
- 'producer' => {
- 'name' => 'riba',
- 'producerid' => '4'
- }
- },
- {
- 'attribute' => undef,
- 'cd' => '8',
- 'producer' => {
- 'name' => 'sushi',
- 'producerid' => '5'
- }
- }
- ],
- 'title' => 'Song of a Foo II',
- 'genreid' => undef,
- 'year' => '2002'
- }
- ],
- 'artistid' => '4',
- 'charfield' => undef,
- 'name' => 'mo',
- 'artwork_to_artist' => [
- {
- 'artwork' => { 'cd_id' => '1' },
- 'artist_id' => '4',
- 'artwork_cd_id' => '1'
- },
- {
- 'artwork' => { 'cd_id' => '2' },
- 'artist_id' => '4',
- 'artwork_cd_id' => '2'
- }
- ],
- 'rank' => '1337'
+ artist => 4, cdid => 6, title => 'Song of a Foo', genreid => undef, year => 1999, single_track => undef,
+ cd_to_producer => [
+ { attribute => undef, cd => 6, producer => { name => 'riba', producerid => 4 } },
+ { attribute => undef, cd => 6, producer => { name => 'sushi', producerid => 5 } },
+ ],
+ tracks => [
+ { cd => 6, position => 1, trackid => 19, title => 'Foo Me Baby One More Time', last_updated_on => undef, last_updated_at => undef, cd_single => undef },
+ { cd => 6, position => 2, trackid => 20, title => 'Foo Me Baby One More Time II', last_updated_on => undef, last_updated_at => undef, cd_single => undef },
+ { cd => 6, position => 3, trackid => 21, title => 'Foo Me Baby One More Time III', last_updated_on => undef, last_updated_at => undef, cd_single => undef },
+ { cd => 6, position => 4, trackid => 22, title => 'Foo Me Baby One More Time IV', last_updated_on => undef, last_updated_at => undef, cd_single => {
+ single_track => 22, artist => 1, cdid => 7, title => 'MO! Single', genreid => undef, year => 2021, tracks => [
+ { cd => 7, position => 1, title => 'singled out', trackid => '23', last_updated_at => undef, last_updated_on => undef },
+ { cd => 7, position => 2, title => 'still alone', trackid => '24', last_updated_at => undef, last_updated_on => undef },
+ ],
+ } }
+ ],
+ },
+ {
+ artist => 4, cdid => 8, title => 'Song of a Foo II', genreid => undef, year => 2002, single_track => undef,
+ cd_to_producer => [
+ { attribute => undef, cd => 8, producer => { name => 'riba', producerid => 4 } },
+ { attribute => undef, cd => 8, producer => { name => 'sushi', producerid => 5 } },
+ ],
+ tracks => [
+ { cd => 8, position => 1, trackid => 25, title => 'Quit Playing Games With My Heart', last_updated_on => undef, last_updated_at => undef, cd_single => undef },
+ { cd => 8, position => 2, trackid => 26, title => 'Bar Foo', last_updated_on => undef, last_updated_at => undef, cd_single => undef },
+ { cd => 8, position => 3, trackid => 27, title => 'Foo Bar', last_updated_on => undef, last_updated_at => undef, cd_single => {
+ single_track => 27, artist => 2, cdid => 9, title => 'MO! Single', genreid => undef, year => 2020, tracks => [
+ { cd => 9, position => 1, title => 'singled out', trackid => '28', last_updated_at => undef, last_updated_on => undef },
+ { cd => 9, position => 2, title => 'still alone', trackid => '29', last_updated_at => undef, last_updated_on => undef },
+ ],
+ } }
+ ],
}
-);
+ ],
+});
done_testing;