summaryrefslogtreecommitdiff
path: root/cli.py
blob: 8765e7d10ff9bf1364571372cb6a181908d34c28 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
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))