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