From d3ec2b168e748327d76ea5f4f641817d4665b61f Mon Sep 17 00:00:00 2001 From: "Simon C. Kessler" Date: Fri, 10 Apr 2026 12:17:51 +0200 Subject: [PATCH] Signatur von f_list_objects vereinfacht --- database/packages/pck_net_storage.pkb | 50 +++++++++++++-------------- database/packages/pck_net_storage.pkh | 8 ++--- 2 files changed, 29 insertions(+), 29 deletions(-) diff --git a/database/packages/pck_net_storage.pkb b/database/packages/pck_net_storage.pkb index 7337e39..95417d7 100644 --- a/database/packages/pck_net_storage.pkb +++ b/database/packages/pck_net_storage.pkb @@ -138,20 +138,20 @@ create or replace package body pck_net_storage as -- Interne Implementierung ohne Rechteprüfung — wird von f_list_objects und p_delete_folder genutzt function f_list_objects_internal ( - i_prefix in varchar2 - ,i_delimiter in varchar2 - ,i_start_with in varchar2 - ,i_limit in number + i_parent_folder in varchar2 + ,i_include_subfolders in varchar2 + ,i_start_with in varchar2 + ,i_limit in number ) return t_net_storage_tab /*Kopf------------------------------------------------------------------------------------------------ -- Beschreibung: Listet Objekte und Unterordner im Bucket ohne Rechte- oder Scope-Prüfung. -- Paginiert automatisch über nextStartWith bis alle Ergebnisse geladen sind. -- Wird von f_list_objects (öffentlich) und p_delete_folder intern genutzt. ------------------------------------------------------------------------------------------------------ - -- Parameter: i_prefix Präfix / Pfad im Bucket (z.B. eingang/) - -- i_delimiter Trennzeichen für Hierarchie-Simulation (/ für direkte Kinder, leer = rekursiv) - -- i_start_with Optionaler Startpunkt für Paginierung - -- i_limit Maximale Anzahl Ergebnisse (0 = unbegrenzt) + -- Parameter: i_parent_folder Ordnerpfad im Bucket (z.B. eingang/) + -- i_include_subfolders 'Y' = alle Dateien rekursiv, 'N' = nur direkte Kinder des Ordners + -- i_start_with Optionaler Startpunkt für Paginierung + -- i_limit Maximale Anzahl Ergebnisse (0 = unbegrenzt) ------------------------------------------------------------------------------------------------------ -- Rückgabe: Collection t_net_storage_tab mit allen gefundenen Objekten ------------------------------------------------------------------------------------------------------ @@ -172,8 +172,8 @@ create or replace package body pck_net_storage as loop l_url := f_build_url() || '?limit=' || c_page_size - || (case when i_prefix is not null then '&prefix=' || utl_url.escape(i_prefix, false) else '' end) - || (case when i_delimiter is not null then '&delimiter=' || utl_url.escape(i_delimiter, false) else '' end); + || (case when i_parent_folder is not null then '&prefix=' || utl_url.escape(i_parent_folder, false) else '' end) + || (case when i_include_subfolders = 'N' then '&delimiter=/' else '' end); if l_cur_start is not null then @@ -297,18 +297,18 @@ create or replace package body pck_net_storage as end f_split_object_key; function f_list_objects ( - i_prefix in varchar2 - ,i_delimiter in varchar2 default null - ,i_start_with in varchar2 default null - ,i_limit in number default 0 + i_parent_folder in varchar2 + ,i_include_subfolders in varchar2 default 'N' + ,i_start_with in varchar2 default null + ,i_limit in number default 0 ) return t_net_storage_tab /*Kopf------------------------------------------------------------------------------------------------ -- Beschreibung: Listet Objekte und Unterordner im Bucket mit Rechteprüfung und Scope-Validierung. ------------------------------------------------------------------------------------------------------ - -- Parameter: i_prefix Präfix / Pfad im Bucket (z.B. eingang/) - -- i_delimiter Trennzeichen für Hierarchie-Simulation (Standard: null = alle Dateien inkl. Unterordner anzeigen. Nutze '/' um nur die Dateien im Ordner i_prefix zu sehen) - -- i_start_with Optionaler Startpunkt für Paginierung - -- i_limit Maximale Anzahl Ergebnisse (0 = unbegrenzt) + -- Parameter: i_parent_folder Ordnerpfad im Bucket (z.B. eingang/) + -- i_include_subfolders 'Y' = alle Dateien rekursiv inkl. Unterordner, 'N' = nur direkte Dateien im Ordner (Standard) + -- i_start_with Optionaler Startpunkt für Paginierung + -- i_limit Maximale Anzahl Ergebnisse (0 = unbegrenzt) ------------------------------------------------------------------------------------------------------ -- Rückgabe: Collection t_net_storage_tab mit allen gefundenen Objekten ------------------------------------------------------------------------------------------------------ @@ -318,8 +318,8 @@ create or replace package body pck_net_storage as is begin pck_mitarbeiterrecht.p_hat_recht('LESEN_ALLES'); - p_assert_allowed(i_prefix); - return f_list_objects_internal(i_prefix, i_delimiter, i_start_with, i_limit); + p_assert_allowed(i_parent_folder); + return f_list_objects_internal(i_parent_folder, i_include_subfolders, i_start_with, i_limit); end f_list_objects; function f_download_object (i_object_key in varchar2) return blob @@ -451,12 +451,12 @@ create or replace package body pck_net_storage as p_assert_allowed(i_prefix); -- TEST - -- Alle Objekte im Prefix auflisten (kein Delimiter = rekursiv, alle Tiefen) + -- Alle Objekte im Ordner auflisten (rekursiv, alle Tiefen) --l_objects := f_list_objects_internal( - -- i_prefix => i_prefix - -- ,i_delimiter => '' - -- ,i_start_with => null - -- ,i_limit => 0 + -- i_parent_folder => i_prefix + -- ,i_include_subfolders => 'Y' + -- ,i_start_with => null + -- ,i_limit => 0 --); -- Nur echte Objekte löschen, keine Pseudo-Ordner diff --git a/database/packages/pck_net_storage.pkh b/database/packages/pck_net_storage.pkh index b6e71c8..8f32a1d 100644 --- a/database/packages/pck_net_storage.pkh +++ b/database/packages/pck_net_storage.pkh @@ -20,10 +20,10 @@ create or replace package pck_net_storage as ) return t_object_path; function f_list_objects ( - i_prefix in varchar2 - ,i_delimiter in varchar2 default null - ,i_start_with in varchar2 default null - ,i_limit in number default 0 + i_parent_folder in varchar2 + ,i_include_subfolders in varchar2 default 'N' + ,i_start_with in varchar2 default null + ,i_limit in number default 0 ) return t_net_storage_tab; function f_download_object (