import dbm

import changeme

team_vals = {}
exploit_vals = {}

try:
    with dbm.ndbm.open(changeme.db_file_path) as f:
        for k in f.keys():
            flag = k
            ret_val, team_id, exploit = f[flag].decode().split(",")
            ret_val = int(ret_val)
            team_id = int(team_id)
            if team_id not in team_vals:
                team_vals[team_id] = [0] * len(changeme.MESSAGES)

            if exploit not in exploit_vals:
                exploit_vals[exploit] = [0] * len(changeme.MESSAGES)

            team_vals[team_id][ret_val] += 1
            exploit_vals[exploit][ret_val] += 1
except dbm.error as ex:
    print("No data(base) exists yet.")
    exit(1)


def make_row(entries):
    column_width = 3 + max(map(len, changeme.MESSAGES))
    return "|" + "|".join([x.ljust(column_width, " ") for x in entries]) + "|"


header = make_row(["team_id"] + changeme.MESSAGES)

print("-" * len(header))
print(header)
print("-" * len(header))

for t in sorted(team_vals.keys()):
    print(make_row([str(t)] + list(map(str, team_vals[t]))))

print("-" * len(header))
print(header)
print("-" * len(header))

for t in sorted(exploit_vals.keys()):
    print(make_row([str(t)] + list(map(str, exploit_vals[t]))))

print("-" * len(header))