| DBIx-DBSchema documentation | Contained in the DBIx-DBSchema distribution. |
DBIx::DBSchema::Index - Index objects
use DBIx::DBSchema::Index;
$index = new DBIx::DBSchema::Index (
{
}
);
DBIx::DBSchema::Index objects represent a unique or non-unique database index.
Creates a new DBIx::DBschema::Index object.
Accepts either a hashref or a list of options and values.
Options are:
Returns or sets the index name.
Returns or sets the optional index method.
Returns or sets the unique flag.
Returns or sets the indexed columns (or expressions).
Returns a comma-joined list of columns, suitable for an SQL statement.
Returns an SQL statment to create this index on the specified table.
Compares this object to another supplied object. Returns true if they are identical, or false otherwise.
Compares this object to another supplied object. Returns true if they are identical, disregarding index name, or false otherwise.
Ivan Kohler <ivan-dbix-dbschema@420.am>
Copyright (c) 2007 Ivan Kohler Copyright (c) 2007 Freeside Internet Services, Inc. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Is there any situation in which sql_create_index needs to return a list of multiple statements?
| DBIx-DBSchema documentation | Contained in the DBIx-DBSchema distribution. |
package DBIx::DBSchema::Index; use strict; use vars qw($VERSION $DEBUG); $VERSION = 0.1; $DEBUG = 0;
sub new { my $proto = shift; my $class = ref($proto) || $proto; my %opt = ref($_[0]) ? %{$_[0]} : @_; #want a new reference my $self = \%opt; bless($self, $class); }
sub name { my($self, $value) = @_; if ( defined($value) ) { $self->{name} = $value; } else { $self->{name}; } }
sub using { my($self, $value) = @_; if ( defined($value) ) { $self->{using} = $value; } else { defined($self->{using}) ? $self->{using} : ''; } }
sub unique { my($self, $value) = @_; if ( defined($value) ) { $self->{unique} = $value; } else { #$self->{unique}; $self->{unique} ? 1 : 0; } }
sub columns { my($self, $value) = @_; if ( defined($value) ) { $self->{columns} = $value; } else { $self->{columns}; } }
sub columns_sql { my $self = shift; join(', ', @{ $self->columns } ); }
sub sql_create_index { my( $self, $table ) = @_; my $unique = $self->unique ? 'UNIQUE' : ''; my $name = $self->name; my $col_sql = $self->columns_sql; "CREATE $unique INDEX $name ON $table ( $col_sql )"; }
sub cmp { my( $self, $other ) = @_; $self->name eq $other->name and $self->cmp_noname($other); }
sub cmp_noname { my( $self, $other ) = @_; $self->using eq $other->using and $self->unique == $other->unique and $self->columns_sql eq $other->columns_sql; }
1;