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