예제 #1
0
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()
예제 #3
0
    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}
예제 #4
0
 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)
예제 #6
0
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
예제 #8
0
    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
예제 #9
0
    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}
예제 #10
0
def get_database_objects():
    conn = Connection()
    persistence = Persistence(conn)
    query = Query(conn)

    return conn, persistence, query
예제 #11
0
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)
예제 #12
0
 def _get_query_object(self):
     query = Query(MOVIES_TEST_COLLECTION)
     query._collection = self.collection
     return query