Team Ai
Apppublic

TangibleAI/mathtext-fastapi

sourceHugging Faceagpl-3.0updated 3y agoView on Hugging Face
1likes
logging.py104 linesDownload Raw Back to mathtext_fastapi
1import os2from datetime import datetime3 4from dotenv import load_dotenv5from supabase import create_client6 7load_dotenv()8 9SUPA = create_client(10    os.environ.get('SUPABASE_URL'),11    os.environ.get('SUPABASE_KEY')12)13 14 15def log_message_data_through_supabase_api(table_name, log_data):16    return SUPA.table(table_name).insert(log_data).execute()17 18 19def format_datetime_in_isoformat(dt):20    return getattr(dt.now(), 'isoformat', lambda x: None)()21 22 23def get_or_create_supabase_entry(table_name, insert_data, check_variable=None):24    """ Checks if project or contact exists and adds entry if not found25 26    Input:27    - table_name: str- the name of the table in Supabase that is being examined28    - insert_data: json - the data to insert29    - check_variable: str/None - the specific field to check for existing match30 31    Result32    - logged_data - an object with the Supabase data33    """34    if table_name == 'contact':35        resp = SUPA.table('contact').select("*").eq(36            "original_contact_id",37            insert_data['original_contact_id']38        ).eq(39            "project",40            insert_data['project']41        ).execute()42    else:43        resp = SUPA.table(table_name).select("*").eq(44            check_variable,45            insert_data[check_variable]46        ).execute()47 48    if len(resp.data) == 0:49        logged_data = log_message_data_through_supabase_api(50            table_name,51            insert_data52        )53    else:54        logged_data = resp55    return logged_data56 57 58def prepare_message_data_for_logging(message_data, nlu_response):59    """ Builds objects for each table and logs them to the database60 61    Input:62    - message_data: an object with the full message data from Turn.io/Whatsapp63    """64    project_data = {65        'name': "Rori",66        # Autogenerated fields: id, created_at, modified_at67    }68    project_data_log = get_or_create_supabase_entry(69        'project',70        project_data,71        'name'72    )73 74    contact_data = {75        'project': project_data_log.data[0]['id'],  # FK76        'original_contact_id': message_data['contact_uuid'],77        'urn': "",78        'language_code': "en",79        'contact_inserted_at': format_datetime_in_isoformat(datetime.now())80        # Autogenerated fields: id, created_at, modified_at81    }82    contact_data_log = get_or_create_supabase_entry('contact', contact_data)83 84    del message_data['author_id']85 86    message_data = {87        'contact': contact_data_log.data[0]['id'],  # FK88        'original_message_id': message_data['message_id'],89        'text': message_data['message_body'],90        'direction': message_data['message_direction'],91        'sender_type': message_data['author_type'],92        'channel_type': "whatsapp / turn.io",93        'message_inserted_at': message_data['message_inserted_at'],94        'message_modified_at': message_data['message_updated_at'],95        'message_sent_at': format_datetime_in_isoformat(datetime.now()),96        'nlu_response': nlu_response,97        'request_object': message_data98        # Autogenerated fields: created_at, modified_at99    }100    message_data_log = log_message_data_through_supabase_api(101        'message',102        message_data103    )104