1#!/usr/bin/perl
2
3use Rose::DB;
4
5Rose::DB->register_db(driver => 'sqlite');
6
7package JCS::A;
8use base 'Rose::DB::Object';
9
10__PACKAGE__->meta->setup
11(
12  columns => [ qw(id a) ],
13
14  relationships =>
15  [
16    bs =>
17    {
18      type => 'many to many',
19      map_class => 'JCS::AtoB',
20      manager_args => { with_map_records => 1 },
21    },
22  ],
23);
24
25package JCS::B;
26use base 'Rose::DB::Object';
27
28__PACKAGE__->meta->setup
29(
30  columns => [ qw(id b) ],
31);
32
33package JCS::C;
34use base 'Rose::DB::Object';
35
36__PACKAGE__->meta->setup
37(
38  columns => [ qw(id c) ],
39
40  relationships =>
41  [
42    bs =>
43    {
44      type => 'many to many',
45      map_class => 'JCS::CtoB',
46      manager_args => { with_map_records => 1 },
47    },
48  ],
49);
50
51package JCS::AtoB;
52use base 'Rose::DB::Object';
53
54__PACKAGE__->meta->setup
55(
56  columns => [ qw(id a_id b_id) ],
57  foreign_keys =>
58  [
59    a_id =>
60    {
61      class => 'JCS::A',
62      key_columns => { a_id => 'id' },
63    },
64
65    b_id =>
66    {
67      class => 'JCS::B',
68      key_columns => { b_id => 'id' },
69    }
70  ],
71);
72
73package JCS::CtoB;
74use base 'Rose::DB::Object';
75
76__PACKAGE__->meta->setup
77(
78  columns => [ qw(id c_id b_id) ],
79  foreign_keys =>
80  [
81    a_id =>
82    {
83      class => 'JCS::C',
84      key_columns => { c_id => 'id' },
85    },
86
87    b_id =>
88    {
89      class => 'JCS::B',
90      key_columns => { b_id => 'id' },
91    }
92  ],
93);
94