Commit | Line | Data |
e3fc8761 |
1 | package # hide from pause |
2 | SQL::Translator::Schema::Graph::Node; |
0caaf4c3 |
3 | |
4 | use strict; |
f27f9229 |
5 | use warnings; |
0caaf4c3 |
6 | |
7 | use Class::MakeMethods::Template::Hash ( |
11ad2df9 |
8 | new => [ 'new' ], |
9 | 'array_of_objects -class SQL::Translator::Schema::Graph::Edge' => [ qw( edges ) ], |
10 | 'array_of_objects -class SQL::Translator::Schema::Graph::CompoundEdge' => [ qw( compoundedges ) ], |
11 | 'array_of_objects -class SQL::Translator::Schema::Graph::HyperEdge' => [ qw( hyperedges ) ], |
12 | #'hash' => [ qw( many via has edgecount data_fields) ], |
13 | #'hash' => [ qw( many via has data_fields) ], |
14 | scalar => [ qw( base name order primary_key primary_key_accessor table is_trivial_link ) ], |
15 | number => [ qw( order ) ], |
0caaf4c3 |
16 | ); |
17 | |
7611bcd7 |
18 | sub many { |
11ad2df9 |
19 | my($self) = shift; |
ba506e52 |
20 | |
11ad2df9 |
21 | $self->{_many} ||= {}; |
ba506e52 |
22 | |
11ad2df9 |
23 | if(scalar(@_) == 1){ |
24 | my $k = shift; |
25 | return $self->{_many}{$k} || 0; |
26 | } elsif(@_) { |
27 | my %arg = @_; |
7611bcd7 |
28 | |
11ad2df9 |
29 | foreach my $k (keys %arg){ |
30 | #warn $a,"\t",$arg{$k}; |
31 | $self->{_many}{$k} = $arg{$k}; |
ba506e52 |
32 | } |
11ad2df9 |
33 | |
34 | return %arg; |
35 | } else { |
36 | return $self->{_many}; |
37 | } |
7611bcd7 |
38 | } |
39 | |
40 | sub via { |
11ad2df9 |
41 | my($self) = shift; |
7611bcd7 |
42 | |
11ad2df9 |
43 | $self->{_via} ||= {}; |
7611bcd7 |
44 | |
11ad2df9 |
45 | if(scalar(@_) == 1){ |
46 | my $k = shift; |
47 | return $self->{_via}{$k} || 0; |
48 | } elsif(@_) { |
49 | my %arg = @_; |
7611bcd7 |
50 | |
11ad2df9 |
51 | foreach my $k (keys %arg){ |
52 | #warn $a,"\t",$arg{$k}; |
53 | $self->{_via}{$k} = $arg{$k}; |
ba506e52 |
54 | } |
11ad2df9 |
55 | |
56 | return %arg; |
57 | } else { |
58 | return $self->{_via}; |
59 | } |
7611bcd7 |
60 | } |
61 | |
62 | sub has { |
11ad2df9 |
63 | my($self) = shift; |
ba506e52 |
64 | |
11ad2df9 |
65 | $self->{_has} ||= {}; |
7611bcd7 |
66 | |
11ad2df9 |
67 | if(scalar(@_) == 1){ |
68 | my $k = shift; |
69 | return $self->{_has}{$k} || 0; |
70 | } elsif(@_) { |
71 | my %arg = @_; |
ba506e52 |
72 | |
11ad2df9 |
73 | foreach my $k (keys %arg){ |
74 | #warn $a,"\t",$arg{$k}; |
75 | $self->{_has}{$k} = $arg{$k}; |
ba506e52 |
76 | } |
11ad2df9 |
77 | |
78 | return %arg; |
79 | } else { |
80 | return $self->{_has}; |
81 | } |
7611bcd7 |
82 | } |
83 | |
7a1eb8c0 |
84 | sub edgecount { |
11ad2df9 |
85 | my($self) = shift; |
7a1eb8c0 |
86 | |
11ad2df9 |
87 | $self->{_edgecount} ||= {}; |
7a1eb8c0 |
88 | |
11ad2df9 |
89 | if(scalar(@_) == 1){ |
90 | my $k = shift; |
91 | return $self->{_edgecount}{$k} || 0; |
92 | } elsif(@_) { |
93 | my %arg = @_; |
7a1eb8c0 |
94 | |
11ad2df9 |
95 | foreach my $k (keys %arg){ |
96 | #warn $a,"\t",$arg{$k}; |
97 | $self->{_edgecount}{$k} = $arg{$k}; |
ba506e52 |
98 | } |
11ad2df9 |
99 | |
100 | return %arg; |
101 | } else { |
102 | return $self->{_edgecount}; |
103 | } |
7a1eb8c0 |
104 | } |
105 | |
7611bcd7 |
106 | sub data_fields { |
11ad2df9 |
107 | my($self) = shift; |
ba506e52 |
108 | |
11ad2df9 |
109 | $self->{_data_fields} ||= {}; |
7611bcd7 |
110 | |
11ad2df9 |
111 | if(scalar(@_) == 1){ |
112 | my $k = shift; |
113 | return $self->{_data_fields}{$k}; |
114 | } elsif(@_) { |
115 | my %arg = @_; |
ba506e52 |
116 | |
11ad2df9 |
117 | foreach my $k (keys %arg){ |
118 | #warn $a,"\t",$arg{$k}; |
119 | $self->{_data_fields}{$k} = $arg{$k}; |
ba506e52 |
120 | } |
11ad2df9 |
121 | |
122 | return %arg; |
123 | } else { |
124 | return $self->{_data_fields}; |
125 | } |
7611bcd7 |
126 | } |
127 | |
0caaf4c3 |
128 | 1; |