pathfinder-2-sqlite-MIRROR/data/yaml/tmp-sql-to-yaml-feats.py

196 lines
5.7 KiB
Python

import sqlite3
import yaml
import pprint
def main():
conn = sqlite3.connect('../../pf2.db')
conn.row_factory = sqlite3.Row
q = """
SELECT * FROM feats;
"""
# so we get a dict out of our query
c = conn.cursor()
c.execute(q)
# data = c.fetchall()
data = [dict(row) for row in c.fetchall()]
# pprint.pprint(data)
q = """
SELECT * FROM requirements;
"""
# so we get a dict out of our query
c = conn.cursor()
c.execute(q)
# data = c.fetchall()
req_data = [dict(row) for row in c.fetchall()]
# pprint.pprint(req_data)
q = """
SELECT * FROM actioncosts;
"""
# so we get a dict out of our query
c = conn.cursor()
c.execute(q)
# data = c.fetchall()
act_data = [dict(row) for row in c.fetchall()]
# pprint.pprint(act_data)
q = """
SELECT * FROM frequency;
"""
# so we get a dict out of our query
c = conn.cursor()
c.execute(q)
# data = c.fetchall()
freq_data = [dict(row) for row in c.fetchall()]
# pprint.pprint(freq_data)
q = """
SELECT * FROM triggers;
"""
# so we get a dict out of our query
c = conn.cursor()
c.execute(q)
# data = c.fetchall()
trig_data = [dict(row) for row in c.fetchall()]
# pprint.pprint(trig_data)
q = """
SELECT featprereqs_id, descr, feat_id FROM featprereqs;
"""
# so we get a dict out of our query
c = conn.cursor()
c.execute(q)
# data = c.fetchall()
prdata = [dict(row) for row in c.fetchall()]
# pprint.pprint(prdata)
for i in prdata:
if i['feat_id'] != None:
q = """
SELECT short_name from feats WHERE feat_id=?;
"""
# so we get a dict out of our query
c = conn.cursor()
c.execute(q, (i['feat_id'],))
# data = c.fetchall()
subprdata = [dict(row) for row in c.fetchall()]
# pprint.pprint(subprdata)
i['feat'] = subprdata[0]['short_name']
else:
i['feat'] = None
for i in data:
# all this mess is getting the sources
x = i['sources_pages'].split(',')
# if len(x) > 1:
# print("name:{}, x:{}".format(i['short_name'], x))
s = []
for j in x:
page = int(j)
s.append({'abbr': 'CRB', 'page_start': page, 'page_stop': page })
i['source'] = s
del i['sources_pages']
# now get the actions
if i['action_id'] == None:
i['action'] = None
else:
# get action name based on id
id = i['action_id']
for a in act_data:
if a['actioncosts_id'] == id:
i['action'] = a['name']
del i['action_id']
# now do the triggers
if i['triggers_id'] == None:
i['trigger'] = None
else:
# get trigger name based on id
id = i['triggers_id']
for t in trig_data:
if t['triggers_id'] == id:
i['trigger'] = t['triggers_descr']
del i['triggers_id']
# now do the requirements
if i['requirements_id'] == None:
i['requirement'] = None
else:
# get requirement name based on id
id = i['requirements_id']
for r in req_data:
if r['requirements_id'] == id:
i['requirement'] = r['requirements_descr']
del i['requirements_id']
# now do the frequency
if i['frequency_id'] == None:
i['frequency'] = None
else:
# get requirement name based on id
id = i['frequency_id']
# print(id)
# print(i['short_name'])
for f in freq_data:
if f['freq_id'] == id:
i['frequency'] = f['freq_descr']
del i['frequency_id']
# populate prereqs:
### get prereq IDs for a feat
stmt = "SELECT featprereqs_id FROM feats_featprereqs WHERE feat_id=?"
c = conn.cursor()
# print(i['feat_id'])
c.execute(stmt, (i['feat_id'],))
# data = c.fetchall()
fpr_data = [dict(row) for row in c.fetchall()]
# if len(fpr_data) > 1:
# # print("fuck")
# pprint.pprint(fpr_data)
print(fpr_data)
for f in fpr_data:
stmtnext = "SELECT descr, feat_id FROM featprereqs WHERE featprereqs_id=?"
c = conn.cursor()
# print(i['feat_id'])
c.execute(stmtnext, (f['featprereqs_id'],))
# data = c.fetchall()
fpr_data_next = [dict(row) for row in c.fetchall()]
# print(fpr_data_next)
prlist = []
for ff in fpr_data_next:
# print(ff)
if ff['feat_id'] == None:
prlist.append({'descr': ff['descr'], 'feat': None})
else:
stmtfinal = "SELECT short_name from feats WHERE feat_id=?"
c = conn.cursor()
# print(i['feat_id'])
c.execute(stmtfinal, (ff['feat_id'],))
# data = c.fetchall()
fn_data_final = [dict(row) for row in c.fetchall()]
print("STUFF")
print(fn_data_final)
prlist.append({'descr': ff['descr'], 'feat': fn_data_final[0]['short_name']})
i['prereqs'] = prlist
# THIS NEEDS TO BE LAST AS PREREQS REFERENCES IT
del i['feat_id']
i['has_been_manually_proofread'] = False
data = {"feat": data}
final = yaml.safe_dump(data, allow_unicode=True, width=10000)
with open('tmp-feat.yaml', 'w') as f:
f.write(final)
if __name__ == "__main__":
main()