18F/sql_insert_writer

View on GitHub
sql_insert_writer/cli.py

Summary

Maintainability
A
45 mins
Test Coverage
# -*- coding: utf-8 -*-
"""Console script for sql_insert_writer."""

import click
from sql_insert_writer import sql_insert_writer


@click.command()
@click.version_option()
@click.argument('destination')
@click.argument('sources', nargs=-1)
@click.option('-d', '--db',
              envvar='DATABASE_URL',
              help='Database URL, RFC-1738 / SQLAlchemy format')
@click.option('-t', '--tuples',
              type=click.IntRange(min=1),
              default=1,
              help='Number of VALUES tuples')
@click.option('--qualify/--no-qualify',
              default=False,
              help='Include source table name even if only one source')
@click.option('--cast/--no-cast',
              default=False,
              help='CAST values as destination data type')
def main(destination, sources, db, tuples, qualify, cast):
    """Console script for sql_insert_writer."""
    if sources:
        if tuples > 1:
            raise click.BadOptionUsage('Use --tuples only when no source tables specified')
        result = sql_insert_writer.generate_from_tables(
            db_url=db,
            destination=destination,
            sources=sources,
            qualify=qualify,
            type_cast=cast)
    else:
        result = sql_insert_writer.generate_from_values(
            db_url=db,
            destination=destination,
            number_of_tuples=tuples,
            type_cast=cast)
    click.echo(result)


if __name__ == "__main__":
    main()