=pod

=for comment
DO NOT EDIT. This Pod was generated by Swim v0.1.39.
See http://github.com/ingydotnet/swim-pm#readme

=encoding utf8

=head1 Hither Specification

Hither is a general purpose database munging tool.

=head2 Overview

Hither's primary goals are:

=over

=item * Provide a CLI command called C<hither>

=item * RDBMS schema and database migration

=item * Provide a schema data definition language

=item * Programming language agnostic

=item * Database framework agnostic

=item * Schema definition diffing

=item * Generate database files from definitions

=over

=item * DB schema files

=item * DB migration files

=back

=item * Generate database code from definitions

=over

=item * DBIx::Class classes for Perl

=item * ActiveRecord classes for Ruby

=back

=back

=head2 Hither Command Actions

The C<hither> command has many actions. Here are some examples:

=over

=item C<< hither migrate <options> <arguments> >>

Migrate a database from state A to state B.

=item C<hither import …>

Import a database from a source. Could be a dump or another database.

=item C<hither generate …>

Generate things from things.

=item C<hither diff …>


=back

=head2 Implementation Strategy

Hither will start out as a wrapper around other tools. It will patch and fill
in gaps as necessary.

For starters, heavy use will be made of:

=over

=item C<SQL::Translator>

This module does a lot of transformations. It is a good starting point.

=back

=head2 Databases of Focus

Eventually all popular, open source databases should be supported. For now
just concentrating on 3 for bootstrapping phase. Having 3 concerns is a good
number for agnostic, yet focused, projects.

=over

=item PostgreSQL

This DB is driving the need for this tool currently.

=item SQLite

Simple, single file, real database. Good for prototyping and testing.

=item CSV

CSV is considered a database since so much open data is in this format.

=back

=cut
