diff --git a/lib/galaxy/model/scripts/__init__.py b/lib/galaxy/model/scripts/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/lib/galaxy/model/scripts/prune_history_table.py b/lib/galaxy/model/scripts/prune_history_table.py new file mode 100644 index 000000000000..af5d11a0b0d8 --- /dev/null +++ b/lib/galaxy/model/scripts/prune_history_table.py @@ -0,0 +1,36 @@ +import argparse +import os +import sys + +from sqlalchemy import create_engine + +sys.path.insert( + 1, os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir, os.pardir, os.pardir, os.pardir, "lib")) +) + +from galaxy.model.orm.scripts import get_config +from galaxy.model.scripts.history_table_pruner import HistoryTablePruner + +DESCRIPTION = """Remove unused histories from database. + +A history is considered unused if it doesn't have a user and its hid counter has not been incremented. +""" + + +def main(): + args = _get_parser().parse_args() + config = get_config(sys.argv, use_argparse=False, cwd=os.getcwd()) + engine = create_engine(config["db_url"]) + htp = HistoryTablePruner(engine=engine, batch_size=args.batch, max_create_time=args.created) + htp.run() + + +def _get_parser(): + parser = argparse.ArgumentParser(description=DESCRIPTION) + parser.add_argument("--batch", help="batch size") + parser.add_argument("--created", help="most recent create_time") + return parser + + +if __name__ == "__main__": + main() diff --git a/packages/data/setup.cfg b/packages/data/setup.cfg index d1404b141164..cd53e425aa10 100644 --- a/packages/data/setup.cfg +++ b/packages/data/setup.cfg @@ -71,6 +71,7 @@ console_scripts = galaxy-build-objects = galaxy.model.store.build_objects:main galaxy-load-objects = galaxy.model.store.load_objects:main galaxy-manage-db = galaxy.model.orm.scripts:manage_db + galaxy-prune-histories = galaxy.model.scripts:prune_history_table [options.packages.find] exclude =