#!/usr/bin/env python
import sys
import argparse

from lynk.backends.dynamodb import DynamoDBControl


def _create(args):
    control = DynamoDBControl(args.table_name)
    if control.exists():
        print('Table %s already exists.' % args.table_name)
        return
    print('Creating table %s' % args.table_name)
    control.create()
    print('Created')


def _delete(args):
    control = DynamoDBControl(args.table_name)
    if not control.exists():
        print('Table %s does not exist.' % args.table_name)
        return
    print('Deleting table %s' % args.table_name)
    control.destroy()
    print('Deleted')


def _list(_):
    control = DynamoDBControl('')
    for table in control.find():
        print(table)


def main():
    parser = argparse.ArgumentParser()
    subparsers = parser.add_subparsers()

    create_parser = subparsers.add_parser("create-table")
    create_parser.add_argument('table_name')
    create_parser.set_defaults(func=_create)

    delete_parser = subparsers.add_parser("delete-table")
    delete_parser.add_argument('table_name')
    delete_parser.set_defaults(func=_delete)

    list_parser = subparsers.add_parser("list-tables")
    list_parser.set_defaults(func=_list)

    args = parser.parse_args()
    return args.func(args)


if __name__ == "__main__":
    sys.exit(main())
