from pydoc import apropos from sqlalchemy.orm import sessionmaker from recipe_graph import db import json import argparse import logging import sys def load_file(f_name: str): with open(f_name) as f: sites = json.load(f) return sites def setup_argparser(args) -> argparse.Namespace: parser = argparse.ArgumentParser(description="Import recipes into database") parser.add_argument("file", type=str, help="JSON file with recipe site information") parser.add_argument("-v", "--verbose", action="store_true") return parser.parse_args(args) def setup_logging(args: argparse.Namespace) -> logging.Logger: logger = logging.Logger("insert_sites", logging.WARNING) if args.verbose: logger.setLevel(logging.INFO) logging.getLogger("sqlalchemy.engine").setLevel(logging.INFO) return logger def main(): # pragma: no cover args = setup_argparser(sys.argv[1:]) logger = setup_logging(args) S = db.get_session() sites = load_file(args.file) with S.begin() as session: for site in sites: logger.info(f"Adding {site}") session.add(db.RecipeSite(**site)) if __name__ == "__main__": # pragma: no cover main()