Completed
Pull Request — master (#20)
by Valentin
02:37 queued 01:31
created

ppp_core.log_answers()   A

Complexity

Conditions 3

Size

Total Lines 11

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 12
Metric Value
cc 3
dl 0
loc 11
ccs 0
cts 8
cp 0
crap 12
rs 9.4285
1
"""Store whole answers to a database, for profiling purposes."""
2
3 1
import json
4
5 1
from sqlalchemy import create_engine
6
from sqlalchemy import Table, Column
7
from sqlalchemy import Boolean, Float, Integer, String, Text, DateTime
8
from sqlalchemy import MetaData, ForeignKey
9
10
metadata = MetaData()
11
12
requests = Table('requests', metadata,
13
                 Column('request_handling_start_time', Float),
14
                 Column('request_handling_end_time', Float),
15
                 Column('request_answers_json', Text),
16
                )
17
18
def get_engine(uri):
19
    """Asks SQLAlchemy to create an engine to connect to the URI and return it."""
20
    engine = create_engine(uri)
21
    metadata.create_all(engine)
22
    return engine
23
24
def log_answers(config, answers, start_time, end_time):
25
    url = config.verbose_log_url
26
    if not url:
27
        return
28
    conn = get_engine(url).connect()
29
    answers = json.dumps([x.as_dict() for x in answers])
30
    ins = requests.insert().values(
31
            request_handling_start_time=start_time,
32
            request_handling_end_time=end_time,
33
            request_answers_json=answers)
34
    res = conn.execute(ins)
35