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))
|