aboutsummaryrefslogtreecommitdiff
path: root/scripts/load_phenotypes_to_db.py
blob: fa710a6c570eb664f6c5db8ad7369159d5a11c0a (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import uuid
import logging
import argparse
from pathlib import Path

from gn_libs import jobs, mysqldb, sqlite3

logging.basicConfig(
    format="%(asctime)s%(filename)s:%(lineno)s%(levelname)s: %(message)s")
logger = logging.getLogger(__name__)


def load_data(conn, job):
    """Load the data attached in the given job."""
    pass


if __name__ == "__main__":
    def parse_args():
        """Setup command-line arguments."""
        parser = argparse.ArgumentParser(
            prog="load_phenotypes_to_db",
            description="Process the phenotypes' data and load it into the database.")
        parser.add_argument("db_uri", type=str, help="MariaDB/MySQL connection URL")
        parser.add_argument(
            "jobs_db_path", type=Path, help="Path to jobs' SQLite database.")
        parser.add_argument("job_id", type=uuid.UUID, help="ID of the running job")
        parser.add_argument(
            "--log-level",
            type=str,
            help="Determines what is logged out.",
            choices=("debug", "info", "warning", "error", "critical"),
            default="info")
        return parser.parse_args()

    def setup_logging(log_level: str):
        """Setup logging for the script."""
        logger.setLevel(log_level)
        logging.getLogger("uploader.phenotypes.models").setLevel(log_level)


    def main():
        """Entry-point for this script."""
        args = parse_args()
        setup_logging(args.log_level.upper())

        with (mysqldb.database_connection(args.db_uri) as conn,
              sqlite3.connection(args.jobs_db_path) as jobs_conn):
            try:
                return load_data(conn, jobs.job(jobs_conn, args.job_id))
            except jobs.jobs.JobNotFound as _jne:
                logger.error("Could not find job with ID: %s", args.job_id)
            except Exception as _exc:
                logger.error("Loading failed with general exception!",
                             exc_info=True,
                             stack_info=True)

        return 1


    main()