NAME

CXC::DB::DDL - DDL for table creation, based on SQL::Translator::Schema

VERSION

version 0.18

DESCRIPTION

CXC::DB::DDL provides a procedural interface to generating DDL to create and drop database tables.

It uses SQL::Translator to create the required SQL, and provides a little bit of extra DSL sauce in CXC::DB::DDL::Util.

See CXC::DB:DDL::Manual::Intro.

METHODS

table

# return CXC::DB::DDL::Table object for named table
$table = $ddl->table( $table_name );

# If only one table, return CXC::DB::DDL::Table object for it
$table = $ddl->table;

Returns undef if no matching table or no tables.

tables

\@tables = $ddl->tables

Return the tables.

add_table

$ddl->add_table( InstanceOf ['CXC::DB::DDL::Table'] );

sql

$ddl->sql( $dbh, %options )

Create the SQL associated with the $ddl object using the DBI database handle, $dbh. Various options may be specified:

create

One of the constants (see <CXC::DB::DDL::Constants>) CREATE_ONCE, CREATE_ALWAYS, CREATE_IF_NOT_EXISTS.

sqlt_comments Bool

Add comments in SQL [Default: true].

sqlt_quote_identifiers Bool

Quote identifiers (Default: producer specific)

sqlt_debug Bool

SQL::Translator constructor debug option.

sqlt_trace

SQL::Translator constructor trace option.

create

$ddl->create( $dbh, ?$create = CREATE_ONCE | CREATE_ALWAYS | CREATE_IF_NOT_EXISTS );

Create the tables associated with the $ddl object using the DBI database handle, $dbh. $create defaults to CREATE_ONCE;

CREATE_ALWAYS drops the tables and creates them.

CREATE_IF_NOT_EXISTS checks if there are any missing tables; if not it returns.

CREATE_ONCE will attempt to create the tables, and will throw an exception if one exists.

Returns true if tables were created.

clear

@not_cleared = $ddl->clear( $dbh );

Clear the contents of the tables in the DDL schema. DDL::Table objects for tables which do not exist are returned.

drop

$ddl->drop( $dbh );

Drop all of the tables in the DDL schema in reverse order of addition.

clone_simple

$cloned_ddl = $ddl->clone_simple

Return a new object based on the current one, running CXC::DB::DDL::Table::clone_simple on the tables.

SUPPORT

Bugs

Please report any bugs or feature requests to bug-cxc-db-ddl@rt.cpan.org or through the web interface at: https://rt.cpan.org/Public/Dist/Display.html?Name=CXC-DB-DDL

Source

Source is available at

https://gitlab.com/djerius/cxc-db-ddl

and may be cloned from

https://gitlab.com/djerius/cxc-db-ddl.git

SEE ALSO

Please see those modules/websites for more information related to this module.

AUTHOR

Diab Jerius <djerius@cpan.org>

COPYRIGHT AND LICENSE

This software is Copyright (c) 2022 by Smithsonian Astrophysical Observatory.

This is free software, licensed under:

The GNU General Public License, Version 3, June 2007