-
-
Notifications
You must be signed in to change notification settings - Fork 27
CD sample
MasterDuke17 edited this page Sep 7, 2019
·
12 revisions
This sample is based on the DBIx::Class CD example
lib/Track.pm6
use Red;
model CD { ... }
model Artist { ... }
model Track {
has Uint $.id is column{ :id };
has Uint $.cd-id is referencing{ CD.id };
has Str $.title is column;
has CD $.cd is relationship{ .cd-id };
has Artist $.artist = $!cd.artist;
::?CLASS.^add-unique-constraint: { .cd-id, .title };
}
lib/CD.pm6
use Red;
use Track;
model Artist { ... }
model CD {
has UInt $.id is column{ :id };
has UInt $!artist-id is referencing{ Artist.id };
has Str $.title is column;
has UInt $.year is column;
has Artist $.artist is relationship{ .artist-id };
has Track @.tracks is relationship{ .cd-id };
::?CLASS.^add-unique-constraint: { .artist-id, .title };
}
lib/Artist.pm6
use Red;
use CD;
model Artist {
has UInt $.id is column{ :id };
has Str:D $.name is column{ :unique };
has CD @.cds is relationship{ .artist-id };
has Track @.songs = @!cds.flatmap: *.tracks;
}