From 0da4256cb49d53d65c45eb1b783927b168407ae7 Mon Sep 17 00:00:00 2001 From: James Miller Date: Mon, 11 Nov 2019 15:24:08 -0600 Subject: [PATCH 01/11] new file: basics.yaml --- data/yaml/basics.yaml | 113 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 data/yaml/basics.yaml diff --git a/data/yaml/basics.yaml b/data/yaml/basics.yaml new file mode 100644 index 0000000..26cd498 --- /dev/null +++ b/data/yaml/basics.yaml @@ -0,0 +1,113 @@ +--- +abilityscore: + - flag_rep: 1 + short_name: STR + long_name: Strength + - flag_rep: 2 + short_name: DEX + long_name: Dexterity + - flag_rep: 4 + short_name: CON + long_name: Constitution + - flag_rep: 8 + short_name: INT + long_name: Intelligence + - flag_rep: 16 + short_name: Wis + long_name: Wisdom + - flag_rep: 32 + short_name: CHA + long_name: Charisma + - flag_rep: 64 + short_name: Free1 + long_name: Free 1 + - flag_rep: 128 + short_name: Free2 + long_name: Free 2 +--- +actioncost: + - name: Varies + abbr: varies + - name: Single Action + abbr: 1 + - name: Two Actions + abbr: 2 + - name: Three Actions + abbr: 3 + - name: Free Action + abbr: free + - name: Reaction + abbr: reaction +--- +alignment: + - name: Lawful Good + abbr: LG + - name: Neutral Good + abbr: NG + - name: Chaotic Good + abbr: CG + - name: Lawful Neutral + abbr: LN + - name: True Neutral + abbr: N + - name: Chaotic Neutral + abbr: CN + - name: Lawful Evil + abbr: LE + - name: Neutral Evil + abbr: NE + - name: Chaotic Evil + abbr: CE +--- +frequency: + - once per round + - once per turn + - once per minute + - once every 10 minutes + - once per hour + - once per day +--- +lang_rarity: + - Common + - Uncommon + - Secret +--- +movement: + - Land + - Burrow + - Climb + - Fly + - Swim +--- +size: + - name: Tiny + space_in_ft: 4 + reach_tall_ft: 0 + reach_long_Ft: 0 + - name: Small + space_in_ft: 5 + reach_tall_ft: 5 + reach_long_Ft: 5 + - name: Medium + space_in_ft: 5 + reach_tall_ft: 5 + reach_long_Ft: 5 + - name: Large + space_in_ft: 10 + reach_tall_ft: 10 + reach_long_Ft: 5 + - name: Huge + space_in_ft: 15 + reach_tall_ft: 15 + reach_long_Ft: 10 + - name: Gargantuan + space_in_ft: 20 + reach_tall_ft: 20 + reach_long_Ft: 15 +--- +weapon_category: + - Unarmed + - Simple + - Martial + - Advanced +--- From 3aff6367c2835949cf9f3b814bc94ca9ad35232e Mon Sep 17 00:00:00 2001 From: James Miller Date: Mon, 11 Nov 2019 15:26:49 -0600 Subject: [PATCH 02/11] New File: basics.py (empty) --- data/yaml/basics.py | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 data/yaml/basics.py diff --git a/data/yaml/basics.py b/data/yaml/basics.py new file mode 100644 index 0000000..f748ab7 --- /dev/null +++ b/data/yaml/basics.py @@ -0,0 +1,4 @@ + + +if __name__ == "__main__": + main() \ No newline at end of file From 998f331bcccb96c8d9b8d00a4862d3e1dd57e79a Mon Sep 17 00:00:00 2001 From: James Miller Date: Mon, 11 Nov 2019 16:08:55 -0600 Subject: [PATCH 03/11] got ability scores populating --- data/yaml/basics.py | 60 ++++++++++++++++++++++++++++++++++++++++++- data/yaml/basics.yaml | 9 +------ 2 files changed, 60 insertions(+), 9 deletions(-) diff --git a/data/yaml/basics.py b/data/yaml/basics.py index f748ab7..ad00a53 100644 --- a/data/yaml/basics.py +++ b/data/yaml/basics.py @@ -1,4 +1,62 @@ +import yaml +import sqlite3 +import os + +DBFILE = 'tmp.db' + +def main(): + # delete DBfile and run fresh + os.remove(DBFILE) + + # Load in the yaml data + with open('basics.yaml') as yl: + data = yaml.full_load(yl) + + ## Get database connection + conn = sqlite3.connect(DBFILE) # eventually hook this up to be the main db + ## Set pragmas + pragma1 = "PRAGMA synchronous=OFF;" + pragma2 = "PRAGMA count_changes=OFF;" + pragma3 = "PRAGMA journal_mode=MEMORY;" + pragma4 = "PRAGMA temp_store=MEMORY;" + pragma5 = "PRAGMA foreign_keys=ON;" + conn.execute(pragma1) + conn.execute(pragma2) + conn.execute(pragma3) + conn.execute(pragma4) + conn.execute(pragma5) + + # call the functions to input to SQL + do_abilityscore(data['abilityscore'], conn) + +def do_abilityscore(data, conn): + print(data) + print(conn) + + table = """ +CREATE TABLE abilityscore ( + abilityscore_id INTEGER PRIMARY KEY, + flag_rep INTEGER NOT NULL, + short_name TEXT NOT NULL UNIQUE, + long_name TEXT NOT NULL UNIQUE +); + """ + + c = conn.cursor() + c.execute(table) + + inp_data = [] + for i in data: + inp_data.append((i['flag_rep'], i['short_name'], i['long_name'])) + + stmt = "INSERT INTO abilityscore (flag_rep, short_name, long_name) VALUES (?,?,?)" + try: + conn.executemany(stmt,inp_data) + except: + print("Error creating abilityscore") + else: + conn.commit() if __name__ == "__main__": - main() \ No newline at end of file + main() diff --git a/data/yaml/basics.yaml b/data/yaml/basics.yaml index 26cd498..4e7c5eb 100644 --- a/data/yaml/basics.yaml +++ b/data/yaml/basics.yaml @@ -24,7 +24,6 @@ abilityscore: - flag_rep: 128 short_name: Free2 long_name: Free 2 ---- actioncost: - name: Varies abbr: varies @@ -38,7 +37,6 @@ actioncost: abbr: free - name: Reaction abbr: reaction ---- alignment: - name: Lawful Good abbr: LG @@ -58,7 +56,6 @@ alignment: abbr: NE - name: Chaotic Evil abbr: CE ---- frequency: - once per round - once per turn @@ -66,19 +63,16 @@ frequency: - once every 10 minutes - once per hour - once per day ---- lang_rarity: - Common - Uncommon - Secret ---- movement: - Land - Burrow - Climb - Fly - Swim ---- size: - name: Tiny space_in_ft: 4 @@ -104,10 +98,9 @@ size: space_in_ft: 20 reach_tall_ft: 20 reach_long_Ft: 15 ---- weapon_category: - Unarmed - Simple - Martial - Advanced ---- +... From 6ed2eea57194f76f5d3f3a5833aa3fa6724505f8 Mon Sep 17 00:00:00 2001 From: James Miller Date: Mon, 11 Nov 2019 16:17:28 -0600 Subject: [PATCH 04/11] got actioncost working with yaml generation --- data/yaml/basics.py | 64 +++++++++++++++++++++++++++++++++------------ 1 file changed, 47 insertions(+), 17 deletions(-) diff --git a/data/yaml/basics.py b/data/yaml/basics.py index ad00a53..b832591 100644 --- a/data/yaml/basics.py +++ b/data/yaml/basics.py @@ -1,37 +1,51 @@ import yaml import sqlite3 import os +import pprint DBFILE = 'tmp.db' def main(): # delete DBfile and run fresh os.remove(DBFILE) - # Load in the yaml data with open('basics.yaml') as yl: data = yaml.full_load(yl) - - ## Get database connection - conn = sqlite3.connect(DBFILE) # eventually hook this up to be the main db - ## Set pragmas - pragma1 = "PRAGMA synchronous=OFF;" - pragma2 = "PRAGMA count_changes=OFF;" - pragma3 = "PRAGMA journal_mode=MEMORY;" - pragma4 = "PRAGMA temp_store=MEMORY;" - pragma5 = "PRAGMA foreign_keys=ON;" - conn.execute(pragma1) - conn.execute(pragma2) - conn.execute(pragma3) - conn.execute(pragma4) - conn.execute(pragma5) - + pprint.pprint(data) + # Get a DB conn + conn = get_db_conn() # call the functions to input to SQL do_abilityscore(data['abilityscore'], conn) + do_actioncost(data['actioncost'], conn) + +def do_actioncost(data, conn): + print(data) + + table = """ +CREATE TABLE actioncost ( + actioncost_id INTEGER PRIMARY KEY, + name TEXT NOT NULL UNIQUE, + abbr TEXT NOT NULL UNIQUE +); + """ + + c = conn.cursor() + c.execute(table) + + inp_data = [] + for i in data: + inp_data.append((i['name'], i['abbr'])) + + stmt = "INSERT INTO actioncost(name, abbr) VALUES (?,?)" + try: + conn.executemany(stmt,inp_data) + except: + print("Error creating actioncost") + else: + conn.commit() def do_abilityscore(data, conn): print(data) - print(conn) table = """ CREATE TABLE abilityscore ( @@ -57,6 +71,22 @@ CREATE TABLE abilityscore ( else: conn.commit() +def get_db_conn(): + ## Get database connection + conn = sqlite3.connect(DBFILE) # eventually hook this up to be the main db + ## Set pragmas + pragma1 = "PRAGMA synchronous=OFF;" + pragma2 = "PRAGMA count_changes=OFF;" + pragma3 = "PRAGMA journal_mode=MEMORY;" + pragma4 = "PRAGMA temp_store=MEMORY;" + pragma5 = "PRAGMA foreign_keys=ON;" + conn.execute(pragma1) + conn.execute(pragma2) + conn.execute(pragma3) + conn.execute(pragma4) + conn.execute(pragma5) + return conn + if __name__ == "__main__": main() From 6476f4de41d3697b38a7fef78ede28605685c06e Mon Sep 17 00:00:00 2001 From: James Miller Date: Mon, 11 Nov 2019 16:28:05 -0600 Subject: [PATCH 05/11] got lang rarity populating --- data/yaml/basics.py | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/data/yaml/basics.py b/data/yaml/basics.py index b832591..84da463 100644 --- a/data/yaml/basics.py +++ b/data/yaml/basics.py @@ -2,6 +2,7 @@ import yaml import sqlite3 import os import pprint +import sys DBFILE = 'tmp.db' @@ -17,10 +18,34 @@ def main(): # call the functions to input to SQL do_abilityscore(data['abilityscore'], conn) do_actioncost(data['actioncost'], conn) + do_langrarity(data['lang_rarity'], conn) + +def do_langrarity(data, conn): + table = """ +CREATE TABLE langrarity ( + rarity_id INTEGER PRIMARY KEY, + rarity_name TEXT NOT NULL UNIQUE +); + """ + + c = conn.cursor() + c.execute(table) + + inp_data = [] + for i in data: + inp_data.append((i,)) # trailing comma necessary for one-item tuple + + stmt = "INSERT INTO langrarity(rarity_name) VALUES (?)" + try: + conn.executemany(stmt,inp_data) + except: + e = sys.exc_info()[0] + print("Error creating langrarity: {}".format(e)) + print(vars(e)) + else: + conn.commit() def do_actioncost(data, conn): - print(data) - table = """ CREATE TABLE actioncost ( actioncost_id INTEGER PRIMARY KEY, @@ -45,8 +70,6 @@ CREATE TABLE actioncost ( conn.commit() def do_abilityscore(data, conn): - print(data) - table = """ CREATE TABLE abilityscore ( abilityscore_id INTEGER PRIMARY KEY, From b964003d74fe67d10c5d019e11684158216269db Mon Sep 17 00:00:00 2001 From: James Miller Date: Mon, 11 Nov 2019 16:31:21 -0600 Subject: [PATCH 06/11] got alignment working --- data/yaml/basics.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/data/yaml/basics.py b/data/yaml/basics.py index 84da463..29bf222 100644 --- a/data/yaml/basics.py +++ b/data/yaml/basics.py @@ -18,8 +18,34 @@ def main(): # call the functions to input to SQL do_abilityscore(data['abilityscore'], conn) do_actioncost(data['actioncost'], conn) + do_alignment(data['alignment'], conn) do_langrarity(data['lang_rarity'], conn) +def do_alignment(data, conn): + print(data) + table = """ +CREATE TABLE alignment ( + alignment_id INTEGER PRIMARY KEY, + "name" TEXT UNIQUE NOT NULL, -- 'Lawful Good' + abbr TEXT UNIQUE NOT NULL -- 'LG' +); + """ + + c = conn.cursor() + c.execute(table) + + inp_data = [] + for i in data: + inp_data.append((i['name'], i['abbr'])) + + stmt = "INSERT INTO alignment(name, abbr) VALUES (?,?)" + try: + conn.executemany(stmt,inp_data) + except: + print("Error creating alignment") + else: + conn.commit() + def do_langrarity(data, conn): table = """ CREATE TABLE langrarity ( From 19d82b3fc0d0c2db53de636c88cfea56d060b5b5 Mon Sep 17 00:00:00 2001 From: James Miller Date: Mon, 11 Nov 2019 16:35:09 -0600 Subject: [PATCH 07/11] got frequency working --- data/yaml/basics.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/data/yaml/basics.py b/data/yaml/basics.py index 29bf222..6ea6513 100644 --- a/data/yaml/basics.py +++ b/data/yaml/basics.py @@ -19,8 +19,34 @@ def main(): do_abilityscore(data['abilityscore'], conn) do_actioncost(data['actioncost'], conn) do_alignment(data['alignment'], conn) + do_frequency(data['frequency'], conn) do_langrarity(data['lang_rarity'], conn) +def do_frequency(data, conn): + table = """ +CREATE TABLE frequency ( + freq_id INTEGER PRIMARY KEY, + freq_descr TEXT NOT NULL UNIQUE +); + """ + + c = conn.cursor() + c.execute(table) + + inp_data = [] + for i in data: + inp_data.append((i,)) # trailing comma necessary for one-item tuple + + stmt = "INSERT INTO frequency(freq_descr) VALUES (?)" + try: + conn.executemany(stmt,inp_data) + except: + e = sys.exc_info()[0] + print("Error creating frequency: {}".format(e)) + print(vars(e)) + else: + conn.commit() + def do_alignment(data, conn): print(data) table = """ From c03d61536c9ce841d35dcd4c00ffcc5fcd8d1a76 Mon Sep 17 00:00:00 2001 From: James Miller Date: Mon, 11 Nov 2019 16:36:55 -0600 Subject: [PATCH 08/11] got movement working --- data/yaml/basics.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/data/yaml/basics.py b/data/yaml/basics.py index 6ea6513..d13dbdf 100644 --- a/data/yaml/basics.py +++ b/data/yaml/basics.py @@ -21,6 +21,32 @@ def main(): do_alignment(data['alignment'], conn) do_frequency(data['frequency'], conn) do_langrarity(data['lang_rarity'], conn) + do_movement(data['movement'], conn) + +def do_movement(data, conn): + table = """ +CREATE TABLE movement ( + movement_id INTEGER PRIMARY KEY, + "name" TEXT UNIQUE NOT NULL +); + """ + + c = conn.cursor() + c.execute(table) + + inp_data = [] + for i in data: + inp_data.append((i,)) # trailing comma necessary for one-item tuple + + stmt = "INSERT INTO movement(name) VALUES (?)" + try: + conn.executemany(stmt,inp_data) + except: + e = sys.exc_info()[0] + print("Error creating movement: {}".format(e)) + print(vars(e)) + else: + conn.commit() def do_frequency(data, conn): table = """ From c8bde8dad613ab6a3306725f5cce448d63b99ada Mon Sep 17 00:00:00 2001 From: James Miller Date: Mon, 11 Nov 2019 16:39:50 -0600 Subject: [PATCH 09/11] got weaponcategory working --- data/yaml/basics.py | 26 ++++++++++++++++++++++++++ data/yaml/basics.yaml | 2 +- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/data/yaml/basics.py b/data/yaml/basics.py index d13dbdf..24aee8b 100644 --- a/data/yaml/basics.py +++ b/data/yaml/basics.py @@ -22,6 +22,32 @@ def main(): do_frequency(data['frequency'], conn) do_langrarity(data['lang_rarity'], conn) do_movement(data['movement'], conn) + do_weaponcategory(data['weaponcategory'], conn) + +def do_weaponcategory(data, conn): + table = """ +CREATE TABLE weaponcategory ( + weaponcategory_id INTEGER PRIMARY KEY, + "name" TEXT NOT NULL UNIQUE +); + """ + + c = conn.cursor() + c.execute(table) + + inp_data = [] + for i in data: + inp_data.append((i,)) # trailing comma necessary for one-item tuple + + stmt = "INSERT INTO weaponcategory(name) VALUES (?)" + try: + conn.executemany(stmt,inp_data) + except: + e = sys.exc_info()[0] + print("Error creating weaponcategory: {}".format(e)) + print(vars(e)) + else: + conn.commit() def do_movement(data, conn): table = """ diff --git a/data/yaml/basics.yaml b/data/yaml/basics.yaml index 4e7c5eb..2e9f1c1 100644 --- a/data/yaml/basics.yaml +++ b/data/yaml/basics.yaml @@ -98,7 +98,7 @@ size: space_in_ft: 20 reach_tall_ft: 20 reach_long_Ft: 15 -weapon_category: +weaponcategory: - Unarmed - Simple - Martial From 80a11b3b1070758da965e9006bc6a590f1d619f0 Mon Sep 17 00:00:00 2001 From: James Miller Date: Mon, 11 Nov 2019 16:43:38 -0600 Subject: [PATCH 10/11] got size working --- data/yaml/basics.py | 27 +++++++++++++++++++++++++++ data/yaml/basics.yaml | 12 ++++++------ 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/data/yaml/basics.py b/data/yaml/basics.py index 24aee8b..4d39b9a 100644 --- a/data/yaml/basics.py +++ b/data/yaml/basics.py @@ -22,8 +22,35 @@ def main(): do_frequency(data['frequency'], conn) do_langrarity(data['lang_rarity'], conn) do_movement(data['movement'], conn) + do_size(data['size'], conn) do_weaponcategory(data['weaponcategory'], conn) +def do_size(data, conn): + table = """ +CREATE TABLE size ( + size_id INTEGER PRIMARY KEY, + short_name TEXT NOT NULL UNIQUE, + space_in_ft INTEGER NOT NULL, + reach_tall_ft INTEGER NOT NULL, + reach_long_ft INTEGER NOT NULL +); + """ + + c = conn.cursor() + c.execute(table) + + inp_data = [] + for i in data: + inp_data.append((i['name'], i['space_in_ft'], i['reach_tall_ft'], i['reach_long_ft'])) + + stmt = "INSERT INTO size (short_name, space_in_ft, reach_tall_ft, reach_long_ft) VALUES (?,?,?,?)" + try: + conn.executemany(stmt,inp_data) + except: + print("Error creating size") + else: + conn.commit() + def do_weaponcategory(data, conn): table = """ CREATE TABLE weaponcategory ( diff --git a/data/yaml/basics.yaml b/data/yaml/basics.yaml index 2e9f1c1..58cad7b 100644 --- a/data/yaml/basics.yaml +++ b/data/yaml/basics.yaml @@ -77,27 +77,27 @@ size: - name: Tiny space_in_ft: 4 reach_tall_ft: 0 - reach_long_Ft: 0 + reach_long_ft: 0 - name: Small space_in_ft: 5 reach_tall_ft: 5 - reach_long_Ft: 5 + reach_long_ft: 5 - name: Medium space_in_ft: 5 reach_tall_ft: 5 - reach_long_Ft: 5 + reach_long_ft: 5 - name: Large space_in_ft: 10 reach_tall_ft: 10 - reach_long_Ft: 5 + reach_long_ft: 5 - name: Huge space_in_ft: 15 reach_tall_ft: 15 - reach_long_Ft: 10 + reach_long_ft: 10 - name: Gargantuan space_in_ft: 20 reach_tall_ft: 20 - reach_long_Ft: 15 + reach_long_ft: 15 weaponcategory: - Unarmed - Simple From 128bb85ab2865f615cc135b6518c873ca466c648 Mon Sep 17 00:00:00 2001 From: James Miller Date: Mon, 11 Nov 2019 16:44:36 -0600 Subject: [PATCH 11/11] update .gitignore, add tmp.db to it --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index d1398aa..1feb418 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ # Custom files pf2.db +tmp.db spells_temp.txt ##############################