view Lib/Schema/DB/Constraint/PrimaryKey.pm @ 30:dd4d72600c69

ORM in works
author Sergey
date Tue, 03 Nov 2009 16:31:47 +0300
parents 03e58a454b20
children 16ada169ca75
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;