WWW-Garden-Design
view release on metacpan or search on metacpan
lib/WWW/Garden/Design/Util/Create.pm view on Meta::CPAN
use Types::Standard qw/ArrayRef HashRef Object Str/;
use WWW::Garden::Design::Util::Config;
has config =>
(
default => sub{WWW::Garden::Design::Util::Config -> new -> config},
is => 'rw',
isa => HashRef,
required => 0,
);
has creator =>
(
is => 'rw',
isa => Object, # 'DBIx::Admin::CreateTable'.
required => 0,
);
has dbh =>
(
is => 'rw',
isa => Object,
required => 0,
);
has engine =>
(
default => sub{return ''},
is => 'rw',
isa => Str,
required => 0,
);
has logger =>
(
is => 'rw',
isa => Object,
required => 0,
);
has time_option =>
(
default => sub{return ''},
is => 'rw',
isa => Str,
required => 0,
);
our $VERSION = '0.97';
# -----------------------------------------------
sub BUILD
{
my($self) = @_;
my($config) = $self -> config;
my($attr) =
{
AutoCommit => $$config{AutoCommit},
mysql_enable_utf8 => $$config{mysql_enable_utf8}, #Ignored if not using MySQL.
RaiseError => $$config{RaiseError},
sqlite_unicode => $$config{sqlite_unicode}, #Ignored if not using SQLite.
};
$self -> dbh(DBI -> connect($$config{dsn}, $$config{username}, $$config{password}, $attr) );
$self -> dbh -> do('PRAGMA foreign_keys = ON') if ($$config{dsn} =~ /SQLite/i);
$self -> creator
(
DBIx::Admin::CreateTable -> new
(
dbh => $self -> dbh,
verbose => 0,
)
);
$self -> engine
(
$self -> creator -> db_vendor =~ /(?:Mysql)/i ? 'engine=innodb' : ''
);
$self -> logger
(
Mojo::Log -> new(path => $$config{log_path})
);
$self -> time_option
(
$self -> creator -> db_vendor =~ /(?:MySQL|Postgres)/i ? '(0) without time zone' : ''
);
} # End of BUILD.
# -----------------------------------------------
sub create_all_tables
{
my($self) = @_;
# Warning: The order is important.
my($method);
for my $table_name
(qw/
log
constants
flowers
attribute_types
attributes
properties
gardens
flower_locations
features
feature_locations
notes
images
urls
/)
{
$method = "create_${table_name}_table";
( run in 0.778 second using v1.01-cache-2.11-cpan-5deb9d3441d )