libs.functions.tools.recalculation

libs/functions/tools/recalculation.py

 1"""
 2libs/functions/tools/recalculation.py
 3"""
 4
 5import logging
 6from contextlib import closing
 7
 8import libs.global_value as g
 9from libs.domain import modify
10from libs.domain.score import GameResult
11from libs.utils import dbutil, dictutil
12
13
14def main() -> None:
15    """ポイント再計算"""
16    g.cfg.initialization()
17
18    modify.db_backup()
19
20    with closing(dbutil.connection(g.cfg.setting.database_file)) as cur:
21        for rule_version, rule_set in g.cfg.rule.data.items():
22            logging.info("%s", rule_set)
23            rows = cur.execute(
24                """
25                select
26                    ts,
27                    p1_name, p1_str,
28                    p2_name, p2_str,
29                    p3_name, p3_str,
30                    p4_name, p4_str,
31                    comment,
32                    rule_version
33                    from result where rule_version=?;
34                """,
35                (rule_version,),
36            )
37            count = 0
38
39            for row in rows:
40                dictutil.merge_dicts(dict(row), g.cfg.rule.to_dict(rule_version))
41                result = GameResult(**dictutil.merge_dicts(dict(row), g.cfg.rule.to_dict(rule_version)))
42                cur.execute(dbutil.query("RESULT_UPDATE"), result.to_dict())
43                count += 1
44            logging.info("recalculated: %s", count)
45
46        cur.commit()
def main() -> None:
15def main() -> None:
16    """ポイント再計算"""
17    g.cfg.initialization()
18
19    modify.db_backup()
20
21    with closing(dbutil.connection(g.cfg.setting.database_file)) as cur:
22        for rule_version, rule_set in g.cfg.rule.data.items():
23            logging.info("%s", rule_set)
24            rows = cur.execute(
25                """
26                select
27                    ts,
28                    p1_name, p1_str,
29                    p2_name, p2_str,
30                    p3_name, p3_str,
31                    p4_name, p4_str,
32                    comment,
33                    rule_version
34                    from result where rule_version=?;
35                """,
36                (rule_version,),
37            )
38            count = 0
39
40            for row in rows:
41                dictutil.merge_dicts(dict(row), g.cfg.rule.to_dict(rule_version))
42                result = GameResult(**dictutil.merge_dicts(dict(row), g.cfg.rule.to_dict(rule_version)))
43                cur.execute(dbutil.query("RESULT_UPDATE"), result.to_dict())
44                count += 1
45            logging.info("recalculated: %s", count)
46
47        cur.commit()

ポイント再計算