From ecfe701708795c2f35491dc64bd22421dc485992 Mon Sep 17 00:00:00 2001 From: schneefux Date: Sun, 26 Feb 2017 15:59:32 +0100 Subject: store api data as one json per match --- api.py | 29 ++++++----------------------- 1 file changed, 6 insertions(+), 23 deletions(-) (limited to 'api.py') diff --git a/api.py b/api.py index 117f55f..8559288 100644 --- a/api.py +++ b/api.py @@ -31,21 +31,8 @@ class Worker(object): async with self._pool.acquire() as con: await con.execute(""" CREATE TABLE IF NOT EXISTS - match ( - id TEXT PRIMARY KEY, - type TEXT DEFAULT 'match', - attributes JSONB, - relations JSONB - ) - """) - await con.execute(""" - CREATE TABLE IF NOT EXISTS - player ( - id TEXT PRIMARY KEY, - type TEXT DEFAULT 'player', - attributes JSONB - ) - """) + match (id TEXT PRIMARY KEY, data JSONB) + """) root = os.path.realpath( os.path.join(os.getcwd(), os.path.dirname(__file__))) @@ -60,17 +47,13 @@ class Worker(object): async for data in api.matches(region=payload["region"], params=payload["params"]): logging.debug("%s: inserting into database", jobid) - objects = await con.fetch(self._insertquery, json.dumps(data)) - logging.info("%s: inserted %s", jobid, - {t: len([s for s in objects if s["type"] == t]) - for t in set([e["type"] for e in objects])} - ) - for obj in objects: + matchids = await con.fetch(self._insertquery, json.dumps(data)) + logging.info("%s: inserted %s matches", jobid, len(matchids)) + for matchid in matchids: await self._queue.request(jobtype="process", priority=priority, payload={ - "id": obj["id"], - "type": obj["type"] + "id": matchid["id"], }) async def _work(self): -- cgit v1.3.1 From f54bb387475cd19e2f8d32cca131e2abb5eea8fd Mon Sep 17 00:00:00 2001 From: schneefux Date: Sun, 26 Feb 2017 17:17:56 +0100 Subject: pass requested player name to job queue --- api.py | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'api.py') diff --git a/api.py b/api.py index 8559288..2dfa964 100644 --- a/api.py +++ b/api.py @@ -43,6 +43,12 @@ class Worker(object): """Finish a job.""" api = crawler.Crawler(self._apitoken) logging.debug("%s: getting matches from API", jobid) + # if a player is queried, pass that information to processor + if "filter[playerNames]" in payload["params"]: + playername = payload["params"]["filter[playerNames]"] + else: + playername = "" + async with self._pool.acquire() as con: async for data in api.matches(region=payload["region"], params=payload["params"]): @@ -54,6 +60,7 @@ class Worker(object): priority=priority, payload={ "id": matchid["id"], + "playername": playername }) async def _work(self): -- cgit v1.3.1