view Lib/IMPL/SQL/Schema/Constraint/PrimaryKey.pm @ 166:4267a2ac3d46

Added Class::Template, Rewritten SQL::Schema 'use parent' directive instead of 'use base'
author wizard
date Sat, 23 Apr 2011 23:12:06 +0400
parents 76515373dac0
children 6148f89bb7bf
line wrap: on
line source

package IMPL::SQL::Schema::Constraint::PrimaryKey;
use strict;
use parent qw(IMPL::SQL::Schema::Constraint::Index);
use IMPL::Class::Property;
use IMPL::Class::Property::Direct;

__PACKAGE__->PassThroughArgs;

BEGIN {
    public _direct property connectedFK => prop_get;
}

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

sub ConnectFK {
    my ($this,$FK) = @_;
    
    UNIVERSAL::isa($FK,'IMPL::SQL::Schema::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;