The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package ObjectDB::Meta::Relationship;

use strict;
use warnings;

our $VERSION = '3.20';

require Carp;
use ObjectDB::Util qw(load_class);

sub new {
    my $class = shift;
    my (%params) = @_;

    my $self = {};
    bless $self, $class;

    $self->{name} = $params{name} || Carp::croak('name required');
    $self->{type} = $params{type} || Carp::croak('type required');
    $self->{orig_class} =
      $params{orig_class} || Carp::croak('orig_class required');
    $self->{class}      = $params{class};
    $self->{map}        = $params{map};
    $self->{join}       = $params{join} || 'left';
    $self->{constraint} = $params{constraint} || [];

    return $self;
}

sub name { $_[0]->{name} }
sub map  { $_[0]->{map} }

sub is_multi  { 0 }

sub orig_class {
    my $self = shift;

    my $orig_class = $self->{orig_class};

    load_class $orig_class;

    return $orig_class;
}

sub class {
    my $self = shift;

    my $class = $self->{class};

    load_class $class;

    return $class;
}

1;