diff options
Diffstat (limited to 'cli.py')
| -rw-r--r-- | cli.py | 66 |
1 files changed, 66 insertions, 0 deletions
@@ -0,0 +1,66 @@ +#!/usr/bin/python3 + +import os +import argparse +import asyncio +import asyncpg + +import joblib.joblib + +queue_db = { + "host": os.environ.get("POSTGRESQL_SOURCE_HOST") or "localhost", + "port": os.environ.get("POSTGRESQL_SOURCE_PORT") or 5433, + "user": os.environ.get("POSTGRESQL_SOURCE_USER") or "vainraw", + "password": os.environ.get("POSTGRESQL_SOURCE_PASSWORD") or "vainraw", + "database": os.environ.get("POSTGRESQL_SOURCE_DB") or "vainsocial-raw" +} + +db_config = { + "host": os.environ.get("POSTGRESQL_DEST_HOST") or "localhost", + "port": os.environ.get("POSTGRESQL_DEST_PORT") or 5432, + "user": os.environ.get("POSTGRESQL_DEST_USER") or "vainweb", + "password": os.environ.get("POSTGRESQL_DEST_PASSWORD") or "vainweb", + "database": os.environ.get("POSTGRESQL_DEST_DB") or "vainsocial-web" +} + + +async def main(qdb, sdb, name): + queue = joblib.joblib.JobQueue() + await queue.connect(**qdb) + await queue.setup() + pool = await asyncpg.create_pool(**sdb) + + async with pool.acquire() as con: + async with con.transaction(): + participants = await con.fetch(""" +select +unnest(array[ +roster.participant_1, +roster.participant_2, +roster.participant_3 +]) AS api_id +from roster where roster.match_api_id in ( +select +match.api_id +from player +join participant on participant.player_api_id=player.api_id +join roster on participant.roster_api_id=roster.api_id +join match on roster.match_api_id=match.api_id +where player.name=$1 +) + """, name) + payload = [{ + "id": part["api_id"], + "type": "participant" + } for part in participants] + await queue.request(jobtype="analyze", + payload=payload) + +parser = argparse.ArgumentParser(description="Request a Vainsocial analyze.") +parser.add_argument("-n", "--player", + help="Player name", + type=str) +args = parser.parse_args() + +loop = asyncio.get_event_loop() +loop.run_until_complete(main(queue_db, db_config, args.player)) |
