diff --git a/app/models/hosted_file_models.py b/app/models/hosted_file_models.py index 7ebfb4b..b6c619e 100644 --- a/app/models/hosted_file_models.py +++ b/app/models/hosted_file_models.py @@ -32,6 +32,7 @@ class Hosted_File_Base(BaseModel): version: Optional[int] directory_path: Optional[str] + subdirectory_path: Optional[str] filename: Optional[str] extension: Optional[str] content_type: Optional[str] diff --git a/app/routers/hosted_file.py b/app/routers/hosted_file.py index 36856bb..7c84da8 100644 --- a/app/routers/hosted_file.py +++ b/app/routers/hosted_file.py @@ -159,7 +159,7 @@ async def upload_files_fake( account_id: str, # filename: Optional[str] = Form(...), link_to_type: str, - link_to_id: str, + link_to_id: Union[int, str], check_allowed_extension: bool = False, # create_hosted_file_link: bool = True, x_account_id: str = Header(..., ), @@ -173,16 +173,15 @@ async def upload_files_fake( log.debug(file_info_li) - account_id_random = account_id # This is for the account random str ID + # account_id_random = account_id # This is for the account random str ID if account_id := redis_lookup_id_random(record_id_random=account_id, table_name='account'): pass else: - return mk_resp(data=None, status_code=400) + return mk_resp(data=None, status_code=400, response=response, status_message='The Account ID was not found.') - link_to_type = link_to_type - link_to_id_random = link_to_id # This is for the object random str ID + # link_to_id_random = link_to_id # This is for the object random str ID if link_to_id := redis_lookup_id_random(record_id_random=link_to_id, table_name=link_to_type): pass else: - return mk_resp(data=None, status_code=400) + return mk_resp(data=None, status_code=400, response=response, status_message=f'The ID for linking was not found. Link To Type: {link_to_type} Link To ID: {link_to_id}') hosted_file_list = [] for file_info in file_info_li: @@ -192,15 +191,34 @@ async def upload_files_fake( if file_info['already_exists']: # Look up in DB based on hash # Get existing host_file object_entry and existing host_file.id_random. + log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.info('Look up in DB based on hash...') if hosted_file_sel_result := sql_select( table_name = 'hosted_file', field_name = 'hash_sha256', field_value = file_info['hash_sha256'], ): + # NOTE: Since the file already exists and something was in the database, it may need to be updated with the new subdirectory_path. hosted_file_id = hosted_file_sel_result.get('id_random', None) - # hosted_file_obj = Hosted_File_Base(**file_info) hosted_file_dict = load_hosted_file_obj(hosted_file_id=hosted_file_id, model_as_dict=True) + + # ****************************************************** + # New as of 2021-08-26 + + # NOTE: Working on moving all hosted files to subdirectories because there are a lot of files. The database needs to be updated if the file already exists and it does not exist in the new subdirectory. + + log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + if file_info['already_exists'] and not file_info['already_exists_subdir']: # This means the database record probably needs to be updated with the new subdirectory_path field. + subdirectory_path_from_passed_data = file_info['subdirectory_path'] + log.info(f'The database record probably needs to be updated with the new subdirectory_path field. Subdirectory Path (from passed data): {subdirectory_path_from_passed_data}') + + if subdirectory_path := hosted_file_dict.get('subdirectory_path'): + log.info(f'The new subdirectory_path field was found? Subdirectory Path: {subdirectory_path}') + else: + log.info(f'The new subdirectory_path field was not found? This needs to be updated. Subdirectory Path: {subdirectory_path}') + + # ****************************************************** + # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(hosted_file_dict) else: @@ -219,7 +237,7 @@ async def upload_files_fake( log.debug(hosted_file_obj_result) log.debug(hosted_file_sel_result) else: - # Just in case look up in DB based on hash + # NOTE: Just in case look up in DB based on hash log.info('Look up in DB based on hash...') if hosted_file_sel_result := sql_select( table_name = 'hosted_file', @@ -260,12 +278,12 @@ async def upload_files_fake( log.debug(hosted_file_dict) hosted_file_list.append(hosted_file_dict) - # NOTE: Currently sql_insert does not handel all successful inserts correctly. If there is not an autonum ID then it will return 0 as the ID. + # NOTE: Currently sql_insert() does not handle all successful inserts correctly. If there is not an autonum ID then it will return 0 as the ID. if create_hosted_file_link( - account_id=account_id, - hosted_file_id=hosted_file_id, - link_to_type=link_to_type, - link_to_id=link_to_id, + account_id = account_id, + hosted_file_id = hosted_file_id, + link_to_type = link_to_type, + link_to_id = link_to_id, ): pass # This if statement should be improved else: # This if statement should be improved