49
+ − 1 package IMPL::SQL::Schema::Constraint::PrimaryKey;
+ − 2 use strict;
+ − 3 use base qw(IMPL::SQL::Schema::Constraint::Index);
+ − 4 use IMPL::Class::Property;
+ − 5 use IMPL::Class::Property::Direct;
+ − 6
+ − 7 __PACKAGE__->PassThroughArgs;
+ − 8
+ − 9 BEGIN {
+ − 10 public _direct property ConnectedFK => prop_get;
+ − 11 }
+ − 12
+ − 13 sub CTOR {
+ − 14 my ($this,%args) = @_;
+ − 15
+ − 16 $this->SUPER::CTOR(%args);
+ − 17
+ − 18 $this->{$ConnectedFK} = {};
+ − 19 }
+ − 20
+ − 21 sub ConnectFK {
+ − 22 my ($this,$FK) = @_;
+ − 23
+ − 24 UNIVERSAL::isa($FK,'IMPL::SQL::Schema::Constraint::ForeignKey') or die new Exception('Aprimary key could be connected only to a foreign key');
+ − 25 not exists $this->{$ConnectedFK}->{$FK->UniqName} or die new Exception('This primary key already conneted with the specified foreing key',$FK->Name,$FK->Table->Name);
+ − 26
+ − 27 $this->{$ConnectedFK}->{$FK->UniqName} = $FK;
+ − 28 }
+ − 29
+ − 30 sub DisconnectFK {
+ − 31 my ($this,$FK) = @_;
+ − 32
+ − 33 delete $this->{$ConnectedFK}->{$FK->UniqName};
+ − 34 }
+ − 35
+ − 36 sub Dispose {
+ − 37 my ($this) = @_;
+ − 38
+ − 39 delete $this->{$ConnectedFK};
+ − 40 $this->SUPER::Dispose;
+ − 41 }
+ − 42
+ − 43 1;