SQL::Translator::Filter::DefaultExtra - Set default extra data values for schema


SQL-Translator documentation Contained in the SQL-Translator distribution.

Index


Code Index:

NAME

Top

SQL::Translator::Filter::DefaultExtra - Set default extra data values for schema objects.

SYNOPSIS

Top

  use SQL::Translator;

  my $sqlt = SQL::Translator->new(
      from => 'MySQL',
      to   => 'MySQL',
      filters => [
        DefaultExtra => {
            # XXX - These should really be ordered

            # Default widget for fields to basic text edit.
            'field.widget' => 'text',
            # idea:
            'field(data_type=BIT).widget' => 'yesno',

            # Default label (human formated name) for fields and tables
            'field.label'  => '=ucfirst($name)',
            'table.label'  => '=ucfirst($name)',
        }, 
      ],
  ) || die "SQLFairy error : ".SQL::Translator->error;
  my $sql = $sqlt->translate || die "SQLFairy error : ".$sqlt->error;

DESCRIPTION

Top

Maybe I'm trying to do too much in one go. Args set a match and then an update, if you want to set lots of things, use lots of filters!

SEE ALSO

Top

perl(1), SQL::Translator

BUGS

Top

TODO

Top

AUTHOR

Top


SQL-Translator documentation Contained in the SQL-Translator distribution.
package SQL::Translator::Filter::DefaultExtra;

# -------------------------------------------------------------------
# Copyright (C) 2002-2009 SQLFairy Authors
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; version 2.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
# 02111-1307  USA
# -------------------------------------------------------------------

use strict;
use vars qw/$VERSION/;
$VERSION = '1.59';

sub filter {
    my $schema = shift;
    my %args = { +shift };

    # Tables
    foreach ( $schema->get_tables ) {
        my %extra = $_->extra;

        $extra{label} ||= ucfirst($_->name);
        $_->extra( %extra );
    }

    # Fields
    foreach ( map { $_->get_fields } $schema->get_tables ) {
        my %extra = $_->extra;

        $extra{label} ||= ucfirst($_->name);
        $_->extra( %extra );
    }
}

1;

__END__