Changed version number to stay consistent with new scheme.
[dbsrgits/SQL-Translator.git] / lib / SQL / Translator / Schema / Graph / Node.pm
CommitLineData
0caaf4c3 1package SQL::Translator::Schema::Graph::Node;
2
3use strict;
4
ba506e52 5use vars qw[ $VERSION ];
6$VERSION = '1.60';
7
0caaf4c3 8use 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 25sub 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
50sub 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
75sub 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 100sub 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 125sub 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 1501;