import argparse
from deriva.core import ErmrestCatalog, get_credential, BaseCLI
import sys
import csv

def get_args():
    parser = argparse.ArgumentParser()
    parser.add_argument('-f', '--file', help="file name", required=True)
    parser.add_argument('-l', '--loc', help="datahub location", required=True)
    parser.add_argument('-s', '--md5', help="md5 sum", required=True)
    parser.add_argument('-b', '--bytes', help="size in bytes", required=True)
    parser.add_argument('-n', '--name', help="reference name", default="", required=False)
    parser.add_argument('-r', '--rVersion', help="reference version", default="", required=False)
    parser.add_argument('-a', '--aVersion', help="annotation version", default="", required=False)
    parser.add_argument('-p', '--species', help="species", default="", required=False)
    parser.add_argument('-i', '--spike', help="spike-in", default="", required=False)
    parser.add_argument('-o', '--host', help="datahub host", required=True)
    parser.add_argument('-c', '--cookie', help="cookie token", required=True)
    args = parser.parse_args()
    return args

def main(hostname, catalog_number, credential):
    catalog = ErmrestCatalog('https', hostname, catalog_number, credential)
    pb = catalog.getPathBuilder()
    ref_table = pb.RNASeq.Reference_Genome

    ref_data = {
        "File_Name": args.file,
        "File_URL": args.loc,
        "File_MD5": args.md5,
        "File_Bytes": args.bytes,
        "Name": args.name,
        "Reference_Version": args.rVersion,
        "Annotation_Version": args.aVersion,
        "Species": args.species,
        "Used_Spike_Ins": args.spike
    }


    entities = ref_table.insert([ref_data])
    rid = entities[0]["RID"]

    print(rid)


if __name__ == '__main__':
    args = get_args()
    cli = BaseCLI("Custom RNASeq query", None, 1)
    cli.remove_options(["--config-file"])
    host = args.host
    credential = {"cookie": args.cookie}
    main(host, 2, credential)