DBIx::SQLEngine::Schema::TableSet - Array of Schema::Table objects


DBIx-SQLEngine documentation Contained in the DBIx-SQLEngine distribution.

Index


Code Index:

NAME

Top

DBIx::SQLEngine::Schema::TableSet - Array of Schema::Table objects

SYNOPSIS

Top

  use DBIx::SQLEngine::Schema::TableSet;
  my $tables = DBIx::SQLEngine::Schema::TableSet->new( $table1, $table2 );

  print $tables->count;

  foreach my $table ( $tables->tables ) {
    print $table->name;
  }

  $table = $tables->table_named( $name );

  $ts->create_tables;

DESCRIPTION

Top

DBIx::SQLEngine::Schema::TableSet objects contain an array of DBIx::SQLEngine::Schema::Table objects.

Creation

new()
  DBIx::SQLEngine::Schema::TableSet->new( @tables ) : $tableset

Creates a new instance.

Access to Tables

tables()
  $tableset->tables : @table_objects

Returns a list of tables contained in this set.

call_method_on_tables()
  $tableset->call_method_on_tables( $method, @args ) : @results

Calls the provided method on each of the tables in this set.

Table Names

table_names()
  $tableset->table_names : @table_names

Returns a list of the names of each of the tables in this set.

table_named()
  $tableset->table_named( $table_name ); : $table_object

Searches through the tables in the set until it finds one with the given name. Throws an exception if none are found.

Schema Definition

create_tables()
  $tableset->create_tables : ()

Calls create_table() on each table in the set.

ensure_tables_exist()
  $tableset->ensure_tables_exist : ()

Calls ensure_table_exists() on each table in the set.

recreate_tables()
  $tableset->recreate_tables : ()

Calls recreate_table_with_rows() on each table in the set.

drop_tables()
  $tableset->drop_tables : ()

Calls drop_table() on each table in the set.

SEE ALSO

Top

See DBIx::SQLEngine for the overall interface and developer documentation.

See DBIx::SQLEngine::Docs::ReadMe for general information about this distribution, including installation and license information.


DBIx-SQLEngine documentation Contained in the DBIx-SQLEngine distribution.
package DBIx::SQLEngine::Schema::TableSet;

use strict;
use Carp;
use Class::MakeMethods;

use DBIx::SQLEngine::Schema::Table;

########################################################################

sub new {
  my $package = shift;
  my @tables = map {
    ( ref($_) eq 'HASH' ) ? DBIx::SQLEngine::Schema::Table->new_from_hash(%$_)
			  : $_
  } @_;
  bless \@tables, $package;
}

########################################################################

sub tables {
  my $tables = shift;
  @$tables
}

sub call_method_on_tables {
  my $tables = shift;
  my $method = shift;
  return map { $_->$method( @_ ) } @$tables;
}


########################################################################

# @colnames = $tables->table_names;
sub table_names {
  (shift)->call_method_on_tables( 'name' )
}

# $table = $tables->table_named( $table_name );
# $table = $tables->table_named( $table_name );
sub table_named {
  my $tables = shift;
  my $table_name = shift;
  foreach ( @$tables ) {
    return $_ if ( $_->name eq $table_name );
  }
  croak(
    "No table named $table_name in this set\n" . 
    "  (Perhaps you meant one of these: ".join(', ',$tables->table_names)."?)"
  );
}

########################################################################

sub create_tables {
  (shift)->call_method_on_tables( 'create_table' )
}

sub ensure_tables_exist {
  (shift)->call_method_on_tables( 'ensure_table_exists' )
}

sub recreate_tables {
  (shift)->call_method_on_tables( 'recreate_table_with_rows' )
}

sub drop_tables {
  (shift)->call_method_on_tables( 'drop_table' )
}

########################################################################

########################################################################

1;