NAME
SQL::Translator::Schema - SQL::Translator schema object
SYNOPSIS
my
$schema
= SQL::Translator::Schema->new(
name
=>
'Foo'
,
database
=>
'MySQL'
,
);
my
$table
=
$schema
->add_table(
name
=>
'foo'
);
my
$view
=
$schema
->add_view(
name
=>
'bar'
,
sql
=>
'...'
);
DESCSIPTION
SQL::Translator::Schema
is the object that accepts, validates, and returns the database structure.
METHODS
as_graph_pm
Returns a Graph::Directed object with the table names for nodes.
add_table
Add a table object. Returns the new SQL::Translator::Schema::Table object. The "name" parameter is required. If you try to create a table with the same name as an existing table, you will get an error and the table will not be created.
my
$t1
=
$schema
->add_table(
name
=>
'foo'
) or
die
$schema
->error;
my
$t2
= SQL::Translator::Schema::Table->new(
name
=>
'bar'
);
$t2
=
$schema
->add_table(
$table_bar
) or
die
$schema
->error;
drop_table
Remove a table from the schema. Returns the table object if the table was found and removed, an error otherwise. The single parameter can be either a table name or an SQL::Translator::Schema::Table object. The "cascade" parameter can be set to 1 to also drop all triggers on the table, default is 0.
$schema
->drop_table(
'mytable'
);
$schema
->drop_table(
'mytable'
,
cascade
=> 1);
add_procedure
Add a procedure object. Returns the new SQL::Translator::Schema::Procedure object. The "name" parameter is required. If you try to create a procedure with the same name as an existing procedure, you will get an error and the procedure will not be created.
my
$p1
=
$schema
->add_procedure(
name
=>
'foo'
);
my
$p2
= SQL::Translator::Schema::Procedure->new(
name
=>
'bar'
);
$p2
=
$schema
->add_procedure(
$procedure_bar
) or
die
$schema
->error;
drop_procedure
Remove a procedure from the schema. Returns the procedure object if the procedure was found and removed, an error otherwise. The single parameter can be either a procedure name or an SQL::Translator::Schema::Procedure object.
$schema
->drop_procedure(
'myprocedure'
);
add_trigger
Add a trigger object. Returns the new SQL::Translator::Schema::Trigger object. The "name" parameter is required. If you try to create a trigger with the same name as an existing trigger, you will get an error and the trigger will not be created.
my
$t1
=
$schema
->add_trigger(
name
=>
'foo'
);
my
$t2
= SQL::Translator::Schema::Trigger->new(
name
=>
'bar'
);
$t2
=
$schema
->add_trigger(
$trigger_bar
) or
die
$schema
->error;
drop_trigger
Remove a trigger from the schema. Returns the trigger object if the trigger was found and removed, an error otherwise. The single parameter can be either a trigger name or an SQL::Translator::Schema::Trigger object.
$schema
->drop_trigger(
'mytrigger'
);
add_view
Add a view object. Returns the new SQL::Translator::Schema::View object. The "name" parameter is required. If you try to create a view with the same name as an existing view, you will get an error and the view will not be created.
my
$v1
=
$schema
->add_view(
name
=>
'foo'
);
my
$v2
= SQL::Translator::Schema::View->new(
name
=>
'bar'
);
$v2
=
$schema
->add_view(
$view_bar
) or
die
$schema
->error;
drop_view
Remove a view from the schema. Returns the view object if the view was found and removed, an error otherwise. The single parameter can be either a view name or an SQL::Translator::Schema::View object.
$schema
->drop_view(
'myview'
);
database
Get or set the schema's database. (optional)
my
$database
=
$schema
->database(
'PostgreSQL'
);
is_valid
Returns true if all the tables and views are valid.
my
$ok
=
$schema
->is_valid or
die
$schema
->error;
get_procedure
Returns a procedure by the name provided.
my
$procedure
=
$schema
->get_procedure(
'foo'
);
get_procedures
Returns all the procedures as an array or array reference.
my
@procedures
=
$schema
->get_procedures;
get_table
Returns a table by the name provided.
my
$table
=
$schema
->get_table(
'foo'
);
get_tables
Returns all the tables as an array or array reference.
my
@tables
=
$schema
->get_tables;
get_trigger
Returns a trigger by the name provided.
my
$trigger
=
$schema
->get_trigger(
'foo'
);
get_triggers
Returns all the triggers as an array or array reference.
my
@triggers
=
$schema
->get_triggers;
get_view
Returns a view by the name provided.
my
$view
=
$schema
->get_view(
'foo'
);
get_views
Returns all the views as an array or array reference.
my
@views
=
$schema
->get_views;
make_natural_joins
Creates foreign key relationships among like-named fields in different tables. Accepts the following arguments:
join_pk_only
A True or False argument which determines whether or not to perform the joins from primary keys to fields of the same name in other tables
skip_fields
A list of fields to skip in the joins
$schema
->make_natural_joins(
join_pk_only
=> 1,
skip_fields
=>
'name,department_id'
,
);
name
Get or set the schema's name. (optional)
my
$schema_name
=
$schema
->name(
'Foo Database'
);
translator
Get the SQL::Translator instance that instantiated the parser.
AUTHOR
Ken Youens-Clark <kclark@cpan.org>.