From 6bd325b08c812866e4bdb8010cf18d4dabfcec97 Mon Sep 17 00:00:00 2001 From: James Miller Date: Tue, 28 Apr 2020 17:58:28 -0500 Subject: [PATCH] fix #4; linking call on ancient blood to its heritage --- bin/gendb.py | 46 +++++++++++++++++++++++++++++++++++++++------- data/spells.yaml | 4 ++-- 2 files changed, 41 insertions(+), 9 deletions(-) diff --git a/bin/gendb.py b/bin/gendb.py index 9341697..24ad979 100644 --- a/bin/gendb.py +++ b/bin/gendb.py @@ -150,6 +150,7 @@ def main(): data = yaml.full_load(yl) do_ancestries(data, conn) + # Must be called after feats are loaded with open('ancestriesheritages.yaml') as yl: data = yaml.full_load(yl) do_heritages(data, conn) @@ -459,7 +460,7 @@ def get_actioncost_id_by_name(ac, conn): def do_heritages(data, conn): table = """ - CREATE TABLE heritages ( + CREATE TABLE heritage ( heritage_id INTEGER PRIMARY KEY, name TEXT NOT NULL UNIQUE, descr TEXT NOT NULL, @@ -471,6 +472,19 @@ def do_heritages(data, conn): c = conn.cursor() c.execute(table) + table = """ + CREATE TABLE heritage_feat ( + id INTEGER PRIMARY KEY, + heritage_id INTEGER NOT NULL, + feat_id INTEGER NOT NULL, + FOREIGN KEY (heritage_id) REFERENCES heritage(heritage_id), + FOREIGN KEY (feat_id) REFERENCES feat(feat_id) + ); + """ + + c = conn.cursor() + c.execute(table) + for i in data['ancestries']: #GET ID OF ANCESTRY stmt = "SELECT ancestry_id FROM ancestries WHERE name=?;" @@ -479,14 +493,32 @@ def do_heritages(data, conn): #FOR EACH HERITAGE, INSERT INTO TABLE USING ANCESTRY ID for j in i['heritages']: # print("doing this heritage: {}".format(j['name'])) - stmt = "INSERT INTO heritages (name, descr, ancestry_id) VALUES (?,?,?);" - c.execute(stmt, (j['name'], j['descr'], rowid[0])) - conn.commit() + stmt = "INSERT INTO heritage (name, descr, ancestry_id) VALUES (?,?,?);" + try: + c.execute(stmt, (j['name'], j['descr'], rowid[0])) + except sqlite3.Error as e: + print("Error inserting a heritage: {}".format(e)) + except: + print("Error inserting a heritage other than sqlite3 error") + else: + conn.commit() if j['feat'] != None: - print("We have a feat that is not equal to none: {}".format(j['feat'])) - print("TODO THIS NEEDS TO GET DONE AFTER FEATS ARE IN SQL") - # i.e. TODO select feat_id where name = j['feat] then insert into a heritages_feats table + # print("We have a feat that is not equal to none: {}".format(j['feat'])) + stmt = """INSERT INTO heritage_feat + (heritage_id, feat_id) + VALUES ( + (SELECT heritage_id FROM heritage WHERE name=?), + (SELECT feat_id FROM feat WHERE name=?) + );""" + try: + c.execute(stmt, (j['name'],j['feat'])) + except sqlite3.Error as e: + print("Error linking a heritage to its feat: {}".format(e)) + except: + print("Error linking a heritage something other than sqlite3 error") + else: + conn.commit() def do_ancestries(data, conn): diff --git a/data/spells.yaml b/data/spells.yaml index 0c563d5..138e8b1 100644 --- a/data/spells.yaml +++ b/data/spells.yaml @@ -336,8 +336,8 @@ spell: descr: "You draw upon your muse to soothe your allies. Choose one of the following\ \ three effects:\n The spell attempts to counteract fear effects on the targets.\ \ \n The spell attempts to counteract effects imposing paralysis on the targets.\ - \ \n The spell restores 7d8 Hit Points to the targets. \n\n**Heightened (+1)** \ - \ When used to heal, soothing ballad restores 1d8 more Hit Points." + \ \n The spell restores 7d8 Hit Points to the targets. \n\n**Heightened (+1)**\ + \ When used to heal, soothing ballad restores 1d8 more Hit Points." duration: null has_been_manually_proofread: true level: 7