NAME
DBIx::Migration::Directories::Database - Database-dependant migration operations
SYNOPSIS
my $object = DBIx::Migration::Directories->new(
$dbh => $some_database_handle, schema => "foo"
);
if($object->db->table_exists("foo")) {
print "Table foo exists.\n";
}
DESCRIPTION
DBIx::Migration::Directories::Database contains any migration operations that actually make use of a database. The purpose of having these as a separate module is to make it possible to override specific SQL operations for specific database engines do things in a non-standard way (eg; MySQL).
CONSTRUCTOR
- new(%args)
-
Creates a new DBIx::Migration::Directories::Base object.
%args
is a hash of properties to set on the object; the following properties are used byDBIx::Migration::Directories::Base
:- dbh
-
Required. The
DBIx::Transaction
database handle to use for queries. This handle should already be connected to the database that you wish to manage. - driver
-
The name of the DBD driver we are using. You normally don't want to specify this option;
DBIx::Migration::Directories::Database
will automatically pull the driver name out of the database handle you pass along.
METHODS
- db_schemas
-
Queries the migration schema, and returns a hash reference containing all of the schemas currently registered in this database. The keys in this hash are the schemas' names, and the values are hash references, containing the contents of that schema's row in the database as key/value pairs:
- name
-
The schema's name, again.
- version
-
The current version of this schema.
- db_get_current_version($schema)
-
Looks at
DBIx::Migration::Directories
's tables to see what the specified schema's version is. If the schema is installed, the current version will be returned, otherwise this method will returnundef
. - db_schema_version_log($schema)
-
Queries the migration schema, and returns an array reference containing the specified schema's version history. The "
$schema
" parameter is required.Each entry in the array reference returned is a hash reference, containing the contents of that schema's log rows in the database as key/value pairs:
- id
-
A unique integer identifier for this log entry.
- schema_name
-
Schema this log entry refers to.
- event_time
-
Time this migration action took place.
- old_version
-
Schema version before this migration action took place.
- new_version
-
Schema version after this migration took place.
- db_delete_schema_record($schema)
-
Remove any knowledge about the specified schema from the migration log. It probably isn't safe to call it on it's own unless you are sure your schema is gone.
- table_exists($table)
-
Queries the database and returns 1 if the named table exists, 0 otherwise.
- sql_insert_migration_schema_version($schema, $version)
-
Returns an SQL query used to add a new schema to the database.
- sql_update_migration_schema_version($schema, $version)
-
Returns an SQL query used to change the version number we have on record for a schema.
- sql_insert_migration_schema_log($schema, $from, $to)
-
Returns an SQL query used to add a new schema log record to the database indicating a migration between schema versions.
- sql_table_exists($table)
-
Returns a string containing an SQL query that is garunteed to only return rows if the named table exists. Base.pm's implementation queries the SQL standard
INFORMATION_SCHEMA
table.
AUTHOR
Tyler "Crackerjack" MacDonald <japh@crackerjack.net>
LICENSE
Copyright 2009 Tyler "Crackerjack" MacDonald <japh@crackerjack.net>
This is free software; You may distribute it under the same terms as perl itself.
SEE ALSO
DBIx::Migration::Directories::Database::mysql, DBIx::Migration::Directories::Database::SQLite2