Module::CoreList::DBSchema - A database schema for Module::CoreList
version 0.08
# 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
Module::CoreList::DBSchema provides methods for building a database from the information that is provided by Module::CoreList.
new
Creates a new Module::CoreList::DBSchema object.
my $mcdbs = Module::CoreList::DBSchema->new();
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');
Module::CoreList
DBI
Chris Williams
This software is copyright (c) 2017 by Chris Williams.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
To install Module::CoreList::DBSchema, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Module::CoreList::DBSchema
CPAN shell
perl -MCPAN -e shell install Module::CoreList::DBSchema
For more information on module installation, please visit the detailed CPAN module installation guide.