diff --git a/data/yaml/basics.yaml b/data/yaml/basics.yaml index eb26311..4b34bab 100644 --- a/data/yaml/basics.yaml +++ b/data/yaml/basics.yaml @@ -13,7 +13,7 @@ abilityscore: short_name: INT - flag_rep: 16 long_name: Wisdom - short_name: Wis + short_name: WIS - flag_rep: 32 long_name: Charisma short_name: CHA diff --git a/data/yaml/gendb.py b/data/yaml/gendb.py index 1ed5597..0492085 100644 --- a/data/yaml/gendb.py +++ b/data/yaml/gendb.py @@ -110,6 +110,172 @@ def main(): data = yaml.full_load(yl) do_gear(data, conn) + # move on to ammo + with open('ancestries.yaml') as yl: + data = yaml.full_load(yl) + do_ancestries(data, conn) + +def do_ancestries(data, conn): + # create tables + table = """ + CREATE TABLE ancestries ( + ancestry_id INTEGER PRIMARY KEY, + name TEXT NOT NULL UNIQUE, + flavor_text TEXT NOT NULL, + hp INTEGER NOT NULL, + size_id INTEGER NOT NULL, + speed INTEGER NOT NULL, + vision_id INTEGER, + FOREIGN KEY (vision_id) REFERENCES senses(senses_id), + FOREIGN KEY (size_id) REFERENCES size(size_id) + ); + """ + c = conn.cursor() + c.execute(table) + + table = """ + CREATE TABLE ancestries_boosts ( + id INTEGER PRIMARY KEY, + ancestry_id INTEGER NOT NULL, + abilityscore_id INTEGER NOT NULL, + FOREIGN KEY (ancestry_id) REFERENCES ancestries(ancestry_id), + FOREIGN KEY (abilityscore_id) REFERENCES abilityscore(abilityscore_id) + ); + """ + c.execute(table) + + table = """ + CREATE TABLE ancestries_flaws ( + id INTEGER PRIMARY KEY, + ancestry_id INTEGER NOT NULL, + abilityscore_id INTEGER NOT NULL, + FOREIGN KEY (ancestry_id) REFERENCES ancestries(ancestry_id), + FOREIGN KEY (abilityscore_id) REFERENCES abilityscore(abilityscore_id) + ); + """ + c.execute(table) + + table = """ + CREATE TABLE ancestries_traits ( + id INTEGER PRIMARY KEY, + ancestry_id INTEGER NOT NULL, + trait_id INTEGER NOT NULL, + UNIQUE(ancestry_id, trait_id), + FOREIGN KEY (ancestry_id) REFERENCES ancestries(ancestry_id), + FOREIGN KEY (trait_id) REFERENCES trait(trait_id) + ); + """ + c.execute(table) + + # insert basics into ancestries table + inp_data = [] + for i in data['ancestries']: + # Get the size_id + sstmt = """ + SELECT size_id FROM size WHERE short_name=?; + """ + sinp_data = (i['size'],) + sres = c.execute(sstmt, sinp_data).fetchall() + sid = sres[0][0] + print(sid) + + # Get the vision_id + vstmt = """ + SELECT senses_id FROM senses WHERE name=?; + """ + vinp_data = (i['senses'],) + vres = c.execute(vstmt, vinp_data).fetchall() + print(vres) + if len(vres) > 0: + vid = vres[0][0] + else: + vid = None + print(vid) + + + #print(i) + inp_data.append((i['name'], i['flavor_text'], i['hp'], sid, i['speed'], vid)) + + stmt = "INSERT INTO ancestries(name, flavor_text, hp, size_id, speed, vision_id) VALUES (?,?,?,?,?,?)" + try: + conn.executemany(stmt, inp_data) + except sqlite3.Error as e: + print("Error creating ancestries: {}".format(e)) + except: + print("Error creating ancestries something other than sqlite3 error") + else: + conn.commit() + + + # do boosts + for i in data['ancestries']: + boostlist = [] + if i['boosts'] != None: + for j in i['boosts']: + boostlist.append((i['name'], j)) + print("boostlist is:\t{}".format(boostlist)) + + stmt = """ + INSERT INTO ancestries_boosts (ancestry_id, abilityscore_id) VALUES ( + (SELECT ancestry_id FROM ancestries WHERE name=?), + (SELECT abilityscore_id FROM abilityscore WHERE short_name=?) + ); + """ + try: + conn.executemany(stmt, boostlist) + except sqlite3.Error as e: + print("Error creating ancestries_boosts: {}".format(e)) + except: + print("Error creating ancestries_boosts something other than sqlite3 error") + else: + conn.commit() + + # do flaws + for i in data['ancestries']: + flawlist = [] + if i['flaws'] != None: + for j in i['flaws']: + flawlist.append((i['name'], j)) + print("flawlist is:\t{}".format(flawlist)) + + stmt = """ + INSERT INTO ancestries_flaws (ancestry_id, abilityscore_id) VALUES ( + (SELECT ancestry_id FROM ancestries WHERE name=?), + (SELECT abilityscore_id FROM abilityscore WHERE short_name=?) + ); + """ + try: + conn.executemany(stmt, flawlist) + except sqlite3.Error as e: + print("Error creating ancestries_flaws: {}".format(e)) + except: + print("Error creating ancestries_flaws something other than sqlite3 error") + else: + conn.commit() + + # do traits + for i in data['ancestries']: + traitlist = [] + if i['traits'] != None: + for j in i['traits']: + traitlist.append((i['name'], j)) + print("traitlist is:\t{}".format(traitlist)) + + stmt = """ + INSERT INTO ancestries_traits (ancestry_id, trait_id) VALUES ( + (SELECT ancestry_id FROM ancestries WHERE name=?), + (SELECT trait_id FROM trait WHERE short_name=?) + ); + """ + try: + conn.executemany(stmt, traitlist) + except sqlite3.Error as e: + print("Error creating ancestries_traits: {}".format(e)) + except: + print("Error creating ancestries_traits something other than sqlite3 error") + else: + conn.commit() + def do_gear(data, conn): table = """ CREATE TABLE gear(