NAME Module::CoreList::DBSchema - A database schema for Module::CoreList SYNOPSIS # this requires DBI and DBD::SQLite which are available from CPAN use strict; use warnings; use DBI; use Module::CoreList::DBSchema; $|=1; my $dbh = DBI->connect('dbi:SQLite:dbname=corelist.db','','') or die $DBI::errstr; $dbh->do(qq{PRAGMA synchronous = OFF}) or die $dbh->errstr; my $mcdbs = Module::CoreList::DBSchema->new(); # create tables my %tables = $mcdbs->tables(); print "Creating tables ... "; foreach my $table ( keys %tables ) { my $sql = 'CREATE TABLE IF NOT EXISTS ' . $table . ' ( '; $sql .= join ', ', @{ $tables{$table} }; $sql .= ' )'; $dbh->do($sql) or die $dbh->errstr; $dbh->do('DELETE FROM ' . $table) or die $dbh->errstr; } print "DONE\n"; # populate with data my @data = $mcdbs->data(); print "Populating tables ... "; $dbh->begin_work; foreach my $row ( @data ) { my $sql = shift @{ $row }; my $sth = $dbh->prepare_cached($sql) or die $dbh->errstr; $sth->execute( @{ $row } ) or die $dbh->errstr; } $dbh->commit; print "DONE\n"; # done DESCRIPTION Module::CoreList::DBSchema provides methods for building a database from the information that is provided by Module::CoreList. CONSTRUCTOR "new" Creates a new Module::CoreList::DBSchema object. my $mcdbs = Module::CoreList::DBSchema->new(); METHODS "tables" In a scalar context returns a hashref data structure keyed on table name. In a list context returns a list of the same data structure. my %tables = $mcdbs->tables(); foreach my $table ( keys %tables ) { my $sql = 'CREATE TABLE IF NOT EXISTS ' . $table . ' ( '; $sql .= join ', ', @{ $tables{$table} }; $sql .= ' )'; $dbh->do($sql) or die $dbh->errstr; $dbh->do('DELETE FROM ' . $table) or die $dbh->errstr; } "data" In a list context returns a list of arrayrefs which contain a SQL statement as the first element and the remaining elements being bind values for the SQL statement. In a scalar context returns an arrayref which contains the above arrayrefs. my @data = $mcdbs->data(); foreach my $row ( @data ) { my $sql = shift @{ $row }; my $sth = $dbh->prepare_cached($sql) or die $dbh->errstr; $sth->execute( @{ $row } ) or die $dbh->errstr; } You may provide some optional arguments: prefix, a string to prefix to the table names in the resultant SQL; "queries" Returns a list of the available SQL queries. my @queries = $mcdbs->queries(); "query" Takes one argument, the name of a query to lookup. Returns in list context a list consisting of a SQL string and a flag indicating whether the SQL string includes placeholders. In scalar context returns an array reference containing the same as above. my $sql = $mcdbs->query('corelist'); AUTHOR Chris "BinGOs" Williams LICENSE Copyright © Chris Williams This module may be used, modified, and distributed under the same terms as Perl itself. Please see the license that came with your Perl distribution for details. SEE ALSO Module::CoreList DBI