view Lib/Schema/DB/Constraint/PrimaryKey.pm @ 60:b0c068da93ac

Lazy activation for the configuration objects (final concept) small fixes
author wizard
date Tue, 09 Mar 2010 19:47:39 +0300
parents 16ada169ca75
children 4267a2ac3d46
line wrap: on
line source

package Schema::DB::Constraint::PrimaryKey;
use strict;
use Common;
use base qw(Schema::DB::Constraint::Index);

BEGIN {
    DeclareProperty ConnectedFK => ACCESS_READ;
}

sub CTOR {
    my ($this,%args) = @_;
    
    $this->SUPER::CTOR(%args);
    
    $this->{$ConnectedFK} = {};
}

sub ConnectFK {
    my ($this,$FK) = @_;
    
    UNIVERSAL::isa($FK,'Schema::DB::Constraint::ForeignKey') or die new Exception('Aprimary key could be connected only to a foreign key');
    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);
    
    $this->{$ConnectedFK}->{$FK->UniqName} = $FK;
}

sub DisconnectFK {
    my ($this,$FK) = @_;
    
    delete $this->{$ConnectedFK}->{$FK->UniqName};
}

sub Dispose {
    my ($this) = @_;
    
    delete $this->{$ConnectedFK};
    $this->SUPER::Dispose;
}

1;