=head1 NAME

DBIx::Class::Migration::Script::Help::prepare - Create migration files.

=head1 SYNOPSIS

  dbic-migration prepare \
    --lib=lib \
    --schema_class=MyApp::Schema

=head1 DESCRIPTION

Creates a C<fixtures> and C<migrations> directory under L</target_dir> (if they
don't already exist) and makes deployment files for the current schema.  If
deployment files exist, will fail unless you L</overwrite_migrations>.

The C<migrations> directory reflects a directory structure as documented in
L<DBIx::Class::DeploymentHandler>.

If this is the first version, we create directories and initial DLL, etc.  For
versions greater than 1, we will also generate diffs and copy any fixture
configs etc (as well as generating a fresh 'all_table.json' fixture config). For
safety reasons, we never overwrite any fixture configs (even if
C<overwrite_migrations> is true.)

=head1 OPTIONS

This command accepts the following options.  You may learn more about each
option by typing C<dbic-migration help OPTION>.  The following is a summary.

=head2 includes

Aliases: I,lib,libs,include

Accepts String, Optional.

Adds the listed paths to @INC.  Handy during development when you want to use
a development schema class.

=head2 schema_class (S)

Accepts Str. Required.

This is the schema we use as the basis for creating, managing and running your
deployments.  This should be the full package namespace defining your subclass
of L<DBIx::Class::Schema>.  For example C<MyApp::Schema>.

If the L</schema_class> cannot be loaded, a hard exception will be thrown.

=head2 force_overwrite (O)

Optional. Bool.

Usually if you've already prepared migration files for the current version as
specified in your L</schema_class> we don't write out files even if you call
C<prepare>.  If you want to force overwrite previously prepared files (and lose
all your customizations) you can do so with this option.

This option won't overwrite previously existing fixture configuration files.

=head2 target_dir (D)

Optional. String (Path to directory).

When using a C<sandbox_class> for generating developer level database sandboxes,
you may wish to place the sandbox in a directory other than the default (which
is under the C<share> directory off the project root).

=head2 databases

Aliases: database

Value: Str or Array of Str (default: SQLite).  Optional.

By default we create migrations for SQLite.  You can use this option to change
that default, or to write our migrations for more than one database

You can prepare deployment for any database type that L<SQLT> understands.

    dbic-migration prepare --database SQLite --database MySQL --PostgreSQL

Please note if you choose to manually set this value, you won't automatically
get the default or inferred type.

=head2 sandbox_class

Aliases: T, sb

Accepts: String (default: SqliteSandbox)

The class we use to create a developer level database sandbox.

You can change this to either 'PostgresqlSandbox' or 'MySQLSandbox', which will
create a sandbox using either L<DBIx::Class::Migration::MySQLSandbox> or 
L<DBIx::Class::Migration::PostgresqlSandbox>.

=head2 user

Aliases: U

=head2 password

Aliases: P

=head2 dsn

Connection information to an already created and running instance of a database.
If you don't specify this, we will assume you want a developer level sandbox (
See L</sandbox>).

=head1 SEE ALSO

L<DBIx::Class::Migration>, L<DBIx::Class::Migration::Script>,
L<DBIx::Class::Migration::Features>, L<DBIx::Class::Migration::Tutorial>

=head1 AUTHOR

See L<DBIx::Class::Migration> for author information

=head1 COPYRIGHT & LICENSE

See L<DBIx::Class::Migration> for copyright and license information

=cut

