#!/usr/bin/env python3

#
# (c) 2021-2022 Giorgio Gonnella, University of Goettingen, Germany
#

"""
Destroy the entire database

Usage:
  prenacs-destroy-database [options] {db_args_usage}

Arguments:
{db_args}

Options:
{db_opts}
{common}
"""
from schema import Or
from sqlalchemy import create_engine
import snacli
from attrtables import AttributeValueTables
import prenacs.database
from prenacs import scripts_helpers, AttributeDefinition

def main(args):
  engine = create_engine(scripts_helpers.database.connection_string_from(args),
                         echo=args["--verbose"],
                         future=True)
  with engine.connect() as connection:
    with connection.begin():
      avt = AttributeValueTables(connection,
                                 attrdef_class=AttributeDefinition,
                                 tablename_prefix=args["--dbpfx"])
      prenacs.database.drop(connection, avt)

def validated(args):
  args = scripts_helpers.validate(args, scripts_helpers.database.ARGS_SCHEMA,
                                  {"--dbpfx": Or(None, str)})
  args["--dbpfx"] = args["--dbpfx"] or "prenacs_attribute_value_t"
  return args

with snacli.args(scripts_helpers.database.SNAKE_ARGS,
                 params=["--verbose"],
                 docvars={"common": scripts_helpers.common.ARGS_DOC,
                          "db_opts": scripts_helpers.database.OPTS_DOC,
                          "db_args": scripts_helpers.database.ARGS_DOC,
                          "db_args_usage": scripts_helpers.database.ARGS_USAGE},
                 version="1.0") as args:
  if args: main(validated(args))
