Mercurial > pub > Impl
comparison Lib/IMPL/SQL/Schema/Constraint.pm @ 168:6148f89bb7bf
IMPL::SQL::Schema::Traits::Diff alfa version
IMPL::lang added hash traits
author | sourcer |
---|---|
date | Mon, 16 May 2011 04:30:38 +0400 |
parents | 1f7a6d762394 |
children | 4d0e1962161c |
comparison
equal
deleted
inserted
replaced
167:1f7a6d762394 | 168:6148f89bb7bf |
---|---|
13 public _direct property table => PROP_GET; | 13 public _direct property table => PROP_GET; |
14 } | 14 } |
15 | 15 |
16 public property columns => PROP_GET | PROP_LIST | PROP_OWNERSET; | 16 public property columns => PROP_GET | PROP_LIST | PROP_OWNERSET; |
17 | 17 |
18 my %aliases; | |
19 | |
18 sub CTOR { | 20 sub CTOR { |
19 my ($this,%args) = @_; | 21 my ($this,%args) = @_; |
20 is( $args{table}, typeof IMPL::SQL::Schema::Table ) or | 22 is( $args{table}, typeof IMPL::SQL::Schema::Table ) or |
21 die new IMPL::InvalidArgumentException("table argument must be a table object"); | 23 die new IMPL::InvalidArgumentException("table argument must be a table object"); |
22 $this->{$name} = $args{'name'}; | 24 $this->{$name} = $args{'name'}; |
27 sub ResolveColumn { | 29 sub ResolveColumn { |
28 my ($Table,$Column) = @_; | 30 my ($Table,$Column) = @_; |
29 | 31 |
30 my $cn = UNIVERSAL::isa($Column,'IMPL::SQL::Schema::Column') ? $Column->name : $Column; | 32 my $cn = UNIVERSAL::isa($Column,'IMPL::SQL::Schema::Column') ? $Column->name : $Column; |
31 | 33 |
32 my $resolved = $Table->Column($cn); | 34 my $resolved = $Table->GetColumn($cn); |
33 die new IMPL::InvalidOperationException("The column is not found in the table", $cn, $Table->name) if not $resolved; | 35 die new IMPL::InvalidOperationException("The column is not found in the table", $cn, $Table->name) if not $resolved; |
34 return $resolved; | 36 return $resolved; |
35 } | 37 } |
36 | 38 |
37 sub HasColumn { | 39 sub HasColumn { |
38 my ($this,@Columns) = @_; | 40 my ($this,@Columns) = @_; |
39 | 41 |
40 my %Columns = map { $_, 1} @Columns; | 42 my %Columns = map { $_, 1} @Columns; |
41 | 43 |
42 return scalar(grep { $Columns{$_->name} } @{$this->columns}) == scalar(@Columns); | 44 return scalar(grep { $Columns{$_->name} } $this->columns ) == scalar(@Columns); |
43 } | 45 } |
44 | 46 |
45 sub uniqName { | 47 sub uniqName { |
46 my ($this) = @_; | 48 my ($this) = @_; |
47 return $this->{$table}->name.'_'.$this->{$name}; | 49 return $this->{$table}->name.'_'.$this->{$name}; |
66 return 0 unless $this->columns->[$i]->name eq $other->columns->[$i]->name; | 68 return 0 unless $this->columns->[$i]->name eq $other->columns->[$i]->name; |
67 } | 69 } |
68 | 70 |
69 return 1; | 71 return 1; |
70 } | 72 } |
73 | |
74 sub ResolveAlias { | |
75 my ($self,$alias) = @_; | |
76 | |
77 return is($alias, typeof IMPL::SQL::Schema::Constraint) ? $alias : $aliases{$alias}; | |
78 } | |
79 | |
80 sub RegisterAlias { | |
81 my ($self,$alias) = @_; | |
82 | |
83 $aliases{$alias} = $self->typeof; | |
84 } | |
85 | |
71 1; | 86 1; |