Rev 1295 | Blame | Compare with Previous | Last modification | View Log | RSS feed
################################################################################ Codestriker: Copyright (c) 2001, 2002 David Sitsky. All rights reserved.# sits@users.sourceforge.net## This program is free software; you can redistribute it and modify it under# the terms of the GPL.# Object which represents a database table specification.package Codestriker::DB::Table;use strict;# A table consists of an array of Column objects, plus an array of indexes.# usage: Table->new{name=>"table_name", columns=>\@columns, indexes=>\@indexes}sub new {my $type = shift;my %params = @_;my $self = {};$self->{name} = $params{name};if (defined $params{columns}) {$self->{columns} = $params{columns};} else {$self->{columns} = [];}if (defined $params{indexes}) {$self->{indexes} = $params{indexes};} else {$self->{indexes} = [];}# Check that the column names in the indexes actually exist.my @columns = @{$params{columns}};# Check each index is valid for this table.foreach my $index (@{$params{indexes}}) {# Check each column in this index refers to a column in this table.foreach my $index_column (@{$index->get_column_names()}) {my $found = 0;# Check this column exists.foreach my $column (@columns) {if ($column->get_name() eq $index_column) {$found = 1;last;}}if ($found == 0) {die "Index $index->get_name() has bad column $index_column\n";}}}return bless $self, $type;}# Return the table name.sub get_name {my $self = shift;return $self->{name};}# Return the columns associated with this table.sub get_columns {my $self = shift;return $self->{columns};}# Return the indexes associated with this table.sub get_indexes {my $self = shift;return $self->{indexes};}1;