async def get_audio_from_speech(speech, query_table, query_col): conn = Connection() query = Query(conn) if speech: transcription = speech.split(' ') for idx, word in enumerate(transcription): # Not enough words to sentence if len(transcription) - idx < 3: break sentence = word + ' ' + transcription[ idx + 1] + ' ' + transcription[idx + 2] query_result = query.query_all(table=query_table, column=query_col, where_col='validation', value=sentence) if query_result: conn.close() return randomize_query_result(query_result) conn.close() # Nothing found in database or speech not recognized return False
class DatabaseAdapter: def __init__( self, *args, **kwargs, ): super().__init__(*args, **kwargs) self.conn = Connection() self.query = Query(self.conn) self.persistence = Persistence(self.conn) def select_all(self, table, *columns): return self.query.select_all(table, columns) def select_all_joined(self, from_table, join_table, on, columns, how='INNER'): return self.query.select_all_joined(from_table, join_table, on, columns, how) def select_custom_sql(self, which_query, where_value=False, replace_pattern='%value%'): return self.query.select_custom_sql(which_query, where_value, replace_pattern) def close(self): return self.conn.close()
def update_by_col(self, table, where_col, where_value, cast_to='text', no_string_quotes='', **cols_values): query = Query() cols_values = cols_values.get('cols_values') columns, _ = query.list_to_words(list(cols_values.keys())) values = self.apply_string_quotes(list(cols_values.values()), no_string_quotes) values, _ = query.list_to_words(values) try: sql = f""" UPDATE {table} SET ({columns}) = ({values}) WHERE {where_col}::{cast_to} = '{where_value}'::{cast_to} """ self.connection.commit_transaction(sql) return {'success': True, 'message': ''} except Exception as e: message = f'Error on insert values:\n{e}' logging.info(message) return {'success': False, 'message': message}
def __init__( self, conn=None, *args, **kwargs, ): super().__init__(*args, **kwargs) self.connection = conn self.query = Query()
def __init__( self, *args, **kwargs, ): super().__init__(*args, **kwargs) self.conn = Connection() self.query = Query(self.conn) self.persistence = Persistence(self.conn)
async def get_audio_from_tag(query_table, query_col, tag): conn = Connection() query = Query(conn) query_result = query.query_all(table=query_table, column=query_col, where_col='tag', value=tag) if query_result: conn.close() return randomize_query_result(query_result) conn.close() return False
def insert_orders(self, table, **cols_values): query = Query() columns, _ = query.get_cols_param(cols_values.keys()) values, _ = query.get_cols_param(cols_values.values()) try: sql = f""" INSERT INTO {table} ({columns}) VALUES ({values}) """ self.connection.commit_transaction(sql) return True except Exception as e: message = f'Error on insert values:\n{e}' logging.info(message) return False
def insert(self, table, **cols_values): query = Query() print(list(cols_values.keys())) print(list(cols_values.values())) columns, _ = query.list_to_words(list(cols_values.keys())) values, _ = query.list_to_words(list(cols_values.values()), stringify=True) try: sql = f""" INSERT INTO {table} ({columns}) VALUES ({values}) """ print(sql) self.connection.commit_transaction(sql) return True, '' except Exception as e: message = f'Error on insert values:\n{e}' logging.info(message) return False, message
def insert_row(self, table, no_string_quotes='', **cols_values): query = Query() cols_values = cols_values.get('cols_values') columns, _ = query.list_to_words(list(cols_values.keys())) values = self.apply_string_quotes(list(cols_values.values()), no_string_quotes) values, _ = query.list_to_words(values) try: sql = f""" INSERT INTO {table} ({columns}) VALUES ({values}) """ self.connection.commit_transaction(sql) return {'success': True, 'message': ''} except Exception as e: self.connection.rollback() message = f'Error on insert values:\n{e}' logging.info(message) return {'success': False, 'message': message}
def get_database_objects(): conn = Connection() persistence = Persistence(conn) query = Query(conn) return conn, persistence, query
class Persistence: def __init__( self, conn=None, *args, **kwargs, ): super().__init__(*args, **kwargs) self.connection = conn self.query = Query() def insert(self, table, **cols_values): columns, _ = self.query.get_cols_param(cols_values.keys()) values, _ = self.query.get_cols_param(cols_values.values()) try: sql = f""" INSERT INTO {table} ({columns}) VALUES ({values}); """ self.connection.commit_transaction(sql) return True except Exception as e: message = f'Error on insert values:\n{e}' logging.info(message) return False def update_by_col(self, table, column, value, where_col, col_value, value_type='text'): try: value = f"'{value}'" if value_type is 'text' else value sql = f""" UPDATE {table} SET {column} = {value} WHERE {where_col} = {col_value} """ self.connection.commit_transaction(sql) return True except Exception as e: message = f'Error on update:\n{e}' print(message) return False def update_config(self, **cols_values): try: columns, _ = self.query.get_cols_param(cols_values.keys()) values, _ = self.query.get_cols_param(cols_values.values()) sql = f""" UPDATE config SET ({columns}) = ({values}) """ self.connection.commit_transaction(sql) return True except Exception as e: message = f'Error on update config:\n{e}' print(message) return False def delete_by_id(self, table, id): try: sql = f""" DELETE FROM {table} WHERE id = {id} """ self.connection.commit_transaction(sql) except Exception as e: message = f'Error on delete:\n{e}' print(message) def delete_all(self, table): try: sql = f""" TRUNCATE TABLE {table}; """ self.connection.commit_transaction(sql) except Exception as e: message = f'Error on delete:\n{e}' print(message) def update_timed_out_train_status(self): try: sql = """ UPDATE train_status SET status = 'ERROR', message = 'Timed out' WHERE created_at >= now() - '30 minutes'::INTERVAL AND status = 'WAITING' """ self.connection.commit_transaction(sql) except Exception as e: message = f'Error on update timed out status:\n{e}' print(message)
def _get_query_object(self): query = Query(MOVIES_TEST_COLLECTION) query._collection = self.collection return query