|
NAMESQL::Translator::Producer::TT::Table - Produces output using the Template Toolkit from a SQL schema, per table.SYNOPSIS# Normal STDOUT version # my $translator = SQL::Translator->new( from => 'MySQL', filename => 'foo_schema.sql', to => 'TT::Table', producer_args => { tt_table => 'foo_table.tt', }, ); print $translator->translate; # To generate a file per table # my $translator = SQL::Translator->new( from => 'MySQL', filename => 'foo_schema.sql', to => 'TT::Table', producer_args => { tt_table => 'foo_table.tt.html', mk_files => 1, mk_files_base => "./doc/tables", mk_file_ext => ".html", on_exists => "replace", }, ); # # ./doc/tables/ now contains the templated tables as $tablename.html # DESCRIPTIONProduces schema output using a given Template Tookit template, processing that template for each table in the schema. Optionally allows you to write the result for each table to a separate file.It needs one additional producer_arg of "tt_table" which is the file name of the template to use. This template will be passed a template var of "table", which is the current SQL::Translator::Schema::Table table we are producing, which you can then use to walk the schema via the methods documented in that module. You also get "schema" as a shortcut to the SQL::Translator::Schema for the table and "translator", the SQL::Translator object for this parse in case you want to get access to any of the options etc set here. Here's a brief example of what the template could look like: [% table.name %] ================ [% FOREACH field = table.get_fields %] [% field.name %] [% field.data_type %]([% field.size %]) [% END -%] See t/data/template/table.tt for a more complete example. You can also set any of the options used to initialize the Template object by adding them to your producer_args. See Template Toolkit docs for details of the options. $translator = SQL::Translator->new( to => 'TT', producer_args => { ttfile => 'foo_template.tt', INCLUDE_PATH => '/foo/templates/tt', INTERPOLATE => 1, }, ); If you set "mk_files" and its additional options the producer will write a separate file for each table in the schema. This is useful for producing things like HTML documentation where every table gets its own page (you could also use TTSchema producer to add an index page). It's also particularly good for code generation where you want to produce a class file per table. OPTIONS
AUTHORMark Addison <grommit@users.sourceforge.net>.TODO- Some tests for the various on exists options (they have been tested implicitly through use in a project but need some proper tests).- More docs on code generation strategies. - Better hooks for filename generation. - Integrate with TT::Base and TTSchema. SEE ALSOSQL::Translator.
Visit the GSP FreeBSD Man Page Interface. |