from db.query import QueryBuilder, QueryExecution class DatabaseOperations: @staticmethod def read_operation_values(data): """ function reads the operation dictionary and returns all the data necessary for query builder and execution :param data: complete query operation dictionary :return: query type, columns, clause, table name """ query_type = data.get('queryType') table_name = data.get('table') columns = data.get('columns') clause = data.get('clause') values = () if query_type in ['insert', 'update']: values = data.get('values') return query_type, table_name, columns, clause, values def execute(self, data_dict, request_body): """ builds and executes the query using query builder and execution respectively :param data_dict: complete query operation dictionary :param request_body: request body received :return: 1 """ query_type, table_name, columns, clause, values = self.read_operation_values(data_dict) if query_type == 'raw': raw_query = data_dict.get('dbRaw') raw_params = data_dict.get('queryParams') statement, params = QueryBuilder().create_raw_query(raw_query, raw_params) else: statement, params = QueryBuilder().create_query(query_type, table_name, columns, clause=clause, insert_values=values) # params = () status, result = QueryExecution.fetch_result(statement, params) if result and data_dict.get('auto_id'): request_body[table_name] = {data_dict.get('auto_id'): result} return status, result