import argparse
import csv

import boto3

parser = argparse.ArgumentParser(description="Load DynamoDB data")
parser.add_argument("table", type=str, help="DynamoDB table to load the data into")
parser.add_argument(
    "--filename", type=str, default="ddb-data.csv", help="CSV file with DDB sample data"
)
parser.add_argument("--debug", type=bool, default=False, help="Whether to print debug messages")
args = parser.parse_args()

ddb_client = boto3.client("dynamodb")

with open(args.filename) as csvfile:
    reader = csv.DictReader(csvfile)
    request = {args.table: []}
    for row in reader:
        put = {
            "PutRequest": {
                "Item": {
                    "Specialty": {"S": row["Specialty (S)"]},
                    "ID": {"S": row["ID (S)"]},
                    "FirstName": {"S": row["FirstName (S)"]},
                    "LastName": {"S": row["LastName (S)"]},
                    "Available": {"BOOL": row["Available (BOOL)"] == "true"},
                }
            }
        }
        request[args.table].append(put)
    if args.debug:
        print("Batch ddb put request: ", request)
    ddb_client.batch_write_item(RequestItems=request)