From d066da90476769433e0800efe460e8652de9cc0b Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Mon, 5 Jan 2026 19:10:07 -0500 Subject: [PATCH] The ability to use V3 Create Nested works. --- src/lib/ae_api/api_post__crud_obj_v3.ts | 190 ++++++++++++++++++++++++ src/lib/ae_api/api_post_object.ts | 5 +- src/lib/api/api.ts | 12 ++ src/routes/testing/+page.svelte | 36 ++++- 4 files changed, 237 insertions(+), 6 deletions(-) create mode 100644 src/lib/ae_api/api_post__crud_obj_v3.ts diff --git a/src/lib/ae_api/api_post__crud_obj_v3.ts b/src/lib/ae_api/api_post__crud_obj_v3.ts new file mode 100644 index 00000000..1bdaf3e3 --- /dev/null +++ b/src/lib/ae_api/api_post__crud_obj_v3.ts @@ -0,0 +1,190 @@ +import type { key_val } from '$lib/stores/ae_stores'; +import { post_object } from './api_post_object'; +import { patch_object } from './api_patch_object'; +import { delete_object } from './api_delete_object'; + +/** + * --- POST (CREATE) WRAPPERS --- + */ + +interface CreateAeObjV3Params { + api_cfg: any; + obj_type: string; + fields: key_val; + params?: key_val; + log_lvl?: number; +} + +export async function create_ae_obj_v3({ + api_cfg, + obj_type, + fields, + params = {}, + log_lvl = 0 +}: CreateAeObjV3Params) { + const endpoint = `/v3/crud/${obj_type}/`; + + if (log_lvl) { + console.log('*** create_ae_obj_v3 ***'); + console.log('Endpoint:', endpoint); + console.log('Fields:', fields); + } + + return await post_object({ + api_cfg, + endpoint, + params, + data: fields, + log_lvl + }); +} + +interface CreateNestedObjV3Params { + api_cfg: any; + parent_type: string; + parent_id: string; + child_type: string; + fields: key_val; + params?: key_val; + log_lvl?: number; +} + +export async function create_nested_obj_v3({ + api_cfg, + parent_type, + parent_id, + child_type, + fields, + params = {}, + log_lvl = 0 +}: CreateNestedObjV3Params) { + const endpoint = `/v3/crud/${parent_type}/${parent_id}/${child_type}/`; + + if (log_lvl) { + console.log('*** create_nested_obj_v3 ***'); + console.log('Endpoint:', endpoint); + console.log('Fields:', fields); + } + + return await post_object({ + api_cfg, + endpoint, + params, + data: fields, + log_lvl + }); +} + +/** + * --- PATCH (UPDATE) WRAPPERS --- + */ + +interface UpdateAeObjV3Params { + api_cfg: any; + obj_type: string; + obj_id: string; + fields: key_val; + params?: key_val; + log_lvl?: number; +} + +export async function update_ae_obj_v3({ + api_cfg, + obj_type, + obj_id, + fields, + params = {}, + log_lvl = 0 +}: UpdateAeObjV3Params) { + const endpoint = `/v3/crud/${obj_type}/${obj_id}`; + + if (log_lvl) { + console.log('*** update_ae_obj_v3 ***'); + console.log('Endpoint:', endpoint); + console.log('Fields:', fields); + } + + return await patch_object({ + api_cfg, + endpoint, + params, + data: fields, + log_lvl + }); +} + +interface UpdateNestedObjV3Params { + api_cfg: any; + parent_type: string; + parent_id: string; + child_type: string; + child_id: string; + fields: key_val; + params?: key_val; + log_lvl?: number; +} + +export async function update_nested_obj_v3({ + api_cfg, + parent_type, + parent_id, + child_type, + child_id, + fields, + params = {}, + log_lvl = 0 +}: UpdateNestedObjV3Params) { + const endpoint = `/v3/crud/${parent_type}/${parent_id}/${child_type}/${child_id}`; + + if (log_lvl) { + console.log('*** update_nested_obj_v3 ***'); + console.log('Endpoint:', endpoint); + console.log('Fields:', fields); + } + + return await patch_object({ + api_cfg, + endpoint, + params, + data: fields, + log_lvl + }); +} + +/** + * --- DELETE WRAPPERS --- + */ + +interface DeleteAeObjV3Params { + api_cfg: any; + obj_type: string; + obj_id: string; + method?: 'delete' | 'soft_delete'; + params?: key_val; + log_lvl?: number; +} + +export async function delete_ae_obj_v3({ + api_cfg, + obj_type, + obj_id, + method = 'delete', + params = {}, + log_lvl = 0 +}: DeleteAeObjV3Params) { + const endpoint = `/v3/crud/${obj_type}/${obj_id}`; + const query_params = { ...params, method }; + + if (log_lvl) { + console.log('*** delete_ae_obj_v3 ***'); + console.log('Endpoint:', endpoint); + console.log('Params:', query_params); + } + + return await delete_object({ + api_cfg, + endpoint, + params: query_params, + log_lvl + }); +} diff --git a/src/lib/ae_api/api_post_object.ts b/src/lib/ae_api/api_post_object.ts index bb34835c..0266737e 100644 --- a/src/lib/ae_api/api_post_object.ts +++ b/src/lib/ae_api/api_post_object.ts @@ -124,7 +124,10 @@ export const post_object = async function post_object({ console.warn('404 Not Found. Returning null.'); return null; // Returning null since there were no results } - throw new Error(`HTTP error! status: ${response.status}`); + + const errorBody = await response.text(); + console.error(`HTTP error! status: ${response.status}`, errorBody); + throw new Error(`HTTP error! status: ${response.status} - ${errorBody}`); } if (!return_blob) { diff --git a/src/lib/api/api.ts b/src/lib/api/api.ts index 057d576e..fb9ba72b 100644 --- a/src/lib/api/api.ts +++ b/src/lib/api/api.ts @@ -19,6 +19,13 @@ import { get_nested_obj_li_v3 } from '$lib/ae_api/api_get__crud_obj_li_v3'; import { search_ae_obj_v3 } from '$lib/ae_api/api_post__crud_search_v3'; +import { + create_ae_obj_v3, + create_nested_obj_v3, + update_ae_obj_v3, + update_nested_obj_v3, + delete_ae_obj_v3 +} from '$lib/ae_api/api_post__crud_obj_v3'; // This new function has not been tested yet!!! // Updated 2024-08-07 @@ -928,6 +935,11 @@ const obj = { get_ae_obj_li_v3: get_ae_obj_li_v3, get_nested_obj_li_v3: get_nested_obj_li_v3, search_ae_obj_v3: search_ae_obj_v3, + create_ae_obj_v3: create_ae_obj_v3, + create_nested_obj_v3: create_nested_obj_v3, + update_ae_obj_v3: update_ae_obj_v3, + update_nested_obj_v3: update_nested_obj_v3, + delete_ae_obj_v3: delete_ae_obj_v3, create_ae_obj_crud: create_ae_obj_crud, update_ae_obj_id_crud: update_ae_obj_id_crud, delete_ae_obj_id_crud: delete_ae_obj_id_crud, diff --git a/src/routes/testing/+page.svelte b/src/routes/testing/+page.svelte index dcc8e1af..fb82d872 100644 --- a/src/routes/testing/+page.svelte +++ b/src/routes/testing/+page.svelte @@ -21,7 +21,7 @@ async function test_v3_get_id() { console.log('*** test_v3_get_id() ***'); v3_test_result = 'loading...'; - + // Test standard V3 GET ID const result = await api.get_ae_obj_v3({ api_cfg: $ae_api, @@ -30,7 +30,7 @@ view: 'base', log_lvl: 1 }); - + v3_test_result = result; console.log('V3 GET ID Result:', result); } @@ -38,7 +38,7 @@ async function test_v3_get_nested_id() { console.log('*** test_v3_get_nested_id() ***'); v3_test_result = 'loading...'; - + // Test nested V3 GET ID const result = await api.get_nested_ae_obj_v3({ api_cfg: $ae_api, @@ -49,23 +49,49 @@ view: 'base', log_lvl: 1 }); - + v3_test_result = result; console.log('V3 GET Nested ID Result:', result); } + + async function test_v3_create_nested() { + console.log('*** test_v3_create_nested() ***'); + v3_test_result = 'loading...'; + + // Test creating a journal entry under the test journal + const result = await api.create_nested_obj_v3({ + api_cfg: $ae_api, + parent_type: 'journal', + parent_id: 'JGEB-80-92-50', + child_type: 'journal_entry', + fields: { + account_id_random: 'nqOzejLCDXM', + name: 'Test V3 Nested Create', + content: 'This was created using the new V3 nested create wrapper!', + enable: true + }, + log_lvl: 1 + }); + + v3_test_result = result; + console.log('V3 Create Nested Result:', result); + }

Aether - V3 API Testing

-
+
+