from dataclasses import dataclass from .db.work import select_list, procedure from .db.sql_provider import SQLProvider from flask import current_app from os import path sql_provider = SQLProvider(path.join(path.dirname(__file__), 'sql')) @dataclass class InfoRespronse: result: tuple error_message: str status: bool def check_report(input_data: dict) -> bool: _sql = sql_provider.get('check_report.sql', input_data) result = select_list(current_app.config['db_config'], _sql) if result is None or result[0]['exist'] == 0: return False return True def sales_report(input_data: dict, view_script: str) -> InfoRespronse: status = check_report(input_data) if not status: return InfoRespronse((), error_message = 'Отчет не найден', status=False) _sql = sql_provider.get(f'{view_script}.sql', input_data) result = select_list(current_app.config['db_config'], _sql) if result is None: return InfoRespronse((), error_message = 'Ошибка в подключении к базе данных. Свяжитесь с администратором', status=False) return InfoRespronse(result, error_message='', status=True) def make_report(input_data: dict, report_id: int, proc_name: str) -> InfoRespronse: status = check_report(input_data) if status: return InfoRespronse((), error_message = 'Отчет уже существует', status=False) data = (report_id,*input_data.values()) result = procedure(current_app.config['db_config'], proc_name, data) if result is None: return InfoRespronse((), error_message = 'Ошибка в подключении к базе данных. Свяжитесь с администратором', status=False) elif result['message'] != 'OK': return InfoRespronse((), error_message = 'Невозможно создать отчет (нет продаж за выбранный период)', status=False) return InfoRespronse((), error_message='', status=True)