Fey

 view release on metacpan or  search on metacpan

lib/Fey/Table.pm  view on Meta::CPAN

package Fey::Table;

use strict;
use warnings;
use namespace::autoclean;

our $VERSION = '0.44';

use Fey::Column;
use Fey::Exceptions qw( param_error );
use Fey::NamedObjectSet;
use Fey::Schema;
use Fey::Table::Alias;
use Fey::Types qw(
    ArrayRef Bool HashRef Str Undef Column ColumnOrName NamedObjectSet Schema
);
use List::AllUtils qw( any all first_index );
use Scalar::Util qw( blessed weaken );

use Moose 2.1200;
use MooseX::Params::Validate 0.21 qw( pos_validated_list );
use MooseX::SemiAffordanceAccessor 0.03;
use MooseX::StrictConstructor 0.13;
use Moose::Util::TypeConstraints;

with 'Fey::Role::TableLike';

with 'Fey::Role::MakesAliasObjects' => {
    self_param  => 'table',
    alias_class => 'Fey::Table::Alias',
};

has 'id' => (
    is         => 'ro',
    lazy_build => 1,
    init_arg   => undef,
);

has 'name' => (
    is       => 'ro',
    isa      => Str,
    required => 1,
);

has 'is_view' => (
    is      => 'ro',
    isa     => Bool,
    default => 0,
);

has '_keys' => (
    traits  => ['Array'],
    is      => 'bare',
    isa     => ArrayRef [NamedObjectSet],
    default => sub { [] },
    handles => {
        _keys       => 'elements',
        _add_key    => 'push',
        _delete_key => 'splice',
    },

);

has '_columns' => (
    is      => 'ro',
    isa     => NamedObjectSet,
    default => sub { return Fey::NamedObjectSet->new() },
    handles => {
        columns => 'objects',
        column  => 'object',
    },
);

has 'schema' => (
    is        => 'rw',
    isa       => Undef | Schema,
    weak_ref  => 1,
    writer    => '_set_schema',



( run in 2.764 seconds using v1.01-cache-2.11-cpan-d8267643d1d )