diff --git a/database/packages/pck_net_storage.pkb b/database/packages/pck_net_storage.pkb index 6d3cd10..938710e 100644 --- a/database/packages/pck_net_storage.pkb +++ b/database/packages/pck_net_storage.pkb @@ -192,7 +192,8 @@ create or replace package body pck_net_storage as while not l_done loop l_url := f_build_url() - || '?limit=' || c_page_size + || '?limit=' || c_page_size + || '&fields=name,size,etag,timeModified' || (case when l_parent_folder is not null then '&prefix=' || utl_url.escape(l_parent_folder, false) else '' end) || (case when i_include_subfolders = 'N' then '&delimiter=/' else '' end); @@ -221,11 +222,12 @@ create or replace package body pck_net_storage as l_result.extend; l_result(l_result.last) := t_net_storage_row( rec.object_name - ,rec.object_size - ,to_date(substr(rec.last_modified, 1, 19), 'YYYY-MM-DD"T"HH24:MI:SS') - -- Explizit angelegte Ordner sind Zero-Byte-Objekte mit trailing / - ,(case when rec.object_name like '%/' then 'Y' else 'N' end) - ,rec.etag + -- Explizit angelegte Ordner sind Zero-Byte-Objekte mit trailing /; + -- size und last_modified sind für Ordner nicht relevant + ,(case when rec.object_name like '%/' then null else rec.object_size end) + ,(case when rec.object_name like '%/' then null else to_date(substr(rec.last_modified, 1, 19), 'YYYY-MM-DD"T"HH24:MI:SS') end) + ,(case when rec.object_name like '%/' then 'Y' else 'N' end) + ,(case when rec.object_name like '%/' then null else rec.etag end) ); l_count := l_count + 1; diff --git a/database/tests/obj_store_list_objects.sql b/database/tests/obj_store_list_objects.sql new file mode 100644 index 0000000..1872684 --- /dev/null +++ b/database/tests/obj_store_list_objects.sql @@ -0,0 +1,28 @@ +declare + l_file_text clob; + l_file blob; +begin + -- l_file := + l_file_text :=apex_web_service.make_rest_request ( + p_url => 'https://frhqaxi5sgcg.objectstorage.eu-frankfurt-1.oci.customer-oci.com/n/frhqaxi5sgcg/b/INKA_NET_STORAGE/o/' + ,p_http_method => 'GET' + ,p_credential_static_id => 'OCI_INKA_NET_STORE' + ,p_wallet_path => 'file:/u01/app/oracle/product/19.0.0.0/dbhome_1/wallets/digicert-global-root-g2-wallet' + ); + + --dbms_output.put_line('File size: ' || dbms_lob.getlength(l_file) ); + dbms_output.put_line('Response: ' || l_file_text); +end; +/ + + +declare +begin + for rec in (select object_name, object_size, last_modified, is_folder + from pck_net_storage.f_list_objects (i_parent_folder => 'testmandant-42/BA/Eingang/Verarbeitet 2026/', i_include_subfolders => 'N')) --i_parent_folder => 'testmandant-42/BA/Eingang/Verarbeitet 2026/' + loop + --dbms_output.put_line('Obj: ' || rec.object_name || ', object_size: ' || rec.object_size || ', last_modified: ' || rec.last_modified|| ', is_folder: ' || rec.is_folder); + dbms_output.put_line('is_folder: ' || rec.is_folder || ', name: ' || rec.object_name || ', object_size: ' || rec.object_size || ', last_modified: ' || to_char(rec.last_modified, 'DD.MM.YYYY HH24:MI:SS')); + end loop; +end; +/ \ No newline at end of file