summaryrefslogtreecommitdiff
path: root/cli.py
diff options
context:
space:
mode:
authorschneefux <schneefux+commit@schneefux.xyz>2017-03-05 21:50:44 +0100
committerschneefux <schneefux+commit@schneefux.xyz>2017-03-05 21:50:44 +0100
commit472e21344cbc0a18ef60ef66ed19e8b0639c7114 (patch)
tree0c9d0c31a2ab7ca92b30a46f94a1bf64758c87a9 /cli.py
parent941e5916257371ae9a09e029a6614c2b18bce18a (diff)
downloadanalyzer-472e21344cbc0a18ef60ef66ed19e8b0639c7114.tar.gz
analyzer-472e21344cbc0a18ef60ef66ed19e8b0639c7114.zip
rewrite as service
Diffstat (limited to 'cli.py')
-rw-r--r--cli.py66
1 files changed, 66 insertions, 0 deletions
diff --git a/cli.py b/cli.py
new file mode 100644
index 0000000..8765e7d
--- /dev/null
+++ b/cli.py
@@ -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))