blob: 44554c7e489d8e5ae552655aedc608ab1be80c8a (
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
|
from backend.database.wrappers import Wrapper, MySQLWrapper
from backend.logger import Logger
from time import sleep
def initialize_databases(configs, schemes):
timeout = 5
max_retries = 7
for config in configs:
if config['type'] == 'mysql':
for _ in range(max_retries):
try:
Logger.get_logger().info(f'Trying to connect to database "{config["db_name"]}@{config["host"]}"...')
wrapper = MySQLWrapper(config['host'], config['username'], config['password'], config['db_name'])
Logger.get_logger().info('Connected.')
break
except Exception as e:
Logger.get_logger().info(f'Connection failed. Reason: "{e}";\nTrying again...')
sleep(timeout)
else:
Logger.get_logger().critical(
f'Failed to connect to "{config["db_name"]}@{config["host"]}". '
f'Check that database and then restart this service.'
)
continue
wrappers[config['name']] = wrapper
cursor = wrapper.connection.cursor()
for scheme in schemes:
Logger.get_logger().info(f'Preparing table "{scheme.meta["name"]}"...')
cursor.execute('START TRANSACTION; {} COMMIT;'.format(scheme.get_create_line()))
wrapper.schemes[scheme.meta['name']] = scheme
cursor.close()
def shutdown_databases():
Logger.get_logger().info('Shutting down databases...')
for wrapper in wrappers:
wrapper.close_connection()
def get_wrapper_for(database_name) -> Wrapper:
return wrappers.get(database_name, None)
wrappers = {}
|