diff options
| author | Terry Truong <terry06890@gmail.com> | 2022-05-10 19:07:02 +1000 |
|---|---|---|
| committer | Terry Truong <terry06890@gmail.com> | 2022-05-10 19:13:06 +1000 |
| commit | 9b4fd83e8f88858a7a8d440b129397561fb1fcac (patch) | |
| tree | 9a8a7ecc73b9bfda9e7221d502a0d1d87c078ad4 /backend/server.py | |
| parent | 3d895370a608d4f51726b74e2560dcf5f4ec43a8 (diff) | |
Split nodes table into nodes and edgessplit-nodes-table
This noticeably slowed server responses. Responses to a client's initial
node query slowed from 20-30ms to 200-300ms.
Diffstat (limited to 'backend/server.py')
| -rwxr-xr-x | backend/server.py | 36 |
1 files changed, 20 insertions, 16 deletions
diff --git a/backend/server.py b/backend/server.py index 8e4a90f..f0292aa 100755 --- a/backend/server.py +++ b/backend/server.py @@ -28,25 +28,31 @@ dbCon.enable_load_extension(True) dbCon.load_extension('./data/spellfix') # Some functions def lookupNodes(names): + # Get node info nodeObjs = {} cur = dbCon.cursor() - # Get node info - query = "SELECT name, children, parent, tips, p_support FROM nodes WHERE" \ - " name IN ({})".format(",".join(["?"] * len(names))) - namesForImgs = [] - firstSubnames = {} - secondSubnames = {} - for row in cur.execute(query, names): - name = row[0] - nodeObj = { - "children": json.loads(row[1]), - "parent": None if row[2] == "" else row[2], - "tips": row[3], - "pSupport": True if row[4] == 1 else False, + query = "SELECT name, tips from nodes WHERE name IN ({})".format(",".join(["?"] * len(names))) + for (nodeName, tips) in cur.execute(query, names): + nodeObjs[nodeName] = { + "children": [], + "parent": None, + "tips": tips, + "pSupport": False, "commonName": None, "imgName": None, } - # Check for image file + query = "SELECT node, child FROM edges WHERE node IN ({})".format(",".join(["?"] * len(names))) + for (nodeName, childName) in cur.execute(query, names): + nodeObjs[nodeName]["children"].append(childName) + query = "SELECT node, child, p_support FROM edges WHERE child IN ({})".format(",".join(["?"] * len(names))) + for (nodeName, childName, pSupport) in cur.execute(query, names): + nodeObjs[childName]["parent"] = nodeName + nodeObjs[childName]["pSupport"] = pSupport + # Get names for image files + namesForImgs = [] + firstSubnames = {} + secondSubnames = {} + for (name, nodeObj) in nodeObjs.items(): match = re.fullmatch(r"\[(.+) \+ (.+)]", name) if match == None: namesForImgs.append(name) @@ -56,8 +62,6 @@ def lookupNodes(names): namesForImgs.extend([name1, name2]) firstSubnames[name1] = name secondSubnames[name2] = name - # Add node object - nodeObjs[name] = nodeObj # Get image names query = "SELECT name, id FROM eol_ids WHERE" \ " name IN ({})".format(",".join(["?"] * len(namesForImgs))) |
