summaryrefslogtreecommitdiff
path: root/day9/task5_vue/backend/database/database.py
blob: 87982cf813298fcfbd8c25ea805ced59f464ee1a (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
from backend.database.wrappers import Wrapper, MySQLWrapper

import logging


def initialize_databases(configs, schemes):
    for config in configs:
        if config['type'] == 'mysql':
            logger = logging.getLogger('backendDebug')

            logger.debug('Connected')
            logger.debug(f'Trying to connect to database "{config["db_name"]}@{config["host"]}"...')

            wrapper = MySQLWrapper(config['host'], config['username'], config['password'], config['db_name'])
            wrappers[config['name']] = wrapper

            cursor = wrapper.connection.cursor()
            for scheme in schemes:
                logger.debug(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 get_wrapper_for(database_name) -> Wrapper:
    return wrappers.get(database_name, None)


wrappers = {}