chore(api): remove legacy CRUD wrappers and dead commented code

Deleted `delete_ae_obj_id_crud` from api.ts (last legacy export, no callers)
and purged ~200 lines of commented-out dead functions from ae_core_functions.ts
(`load_ae_obj_id__site_domain`, `update_ae_obj_id_crud`, `update_ae_obj_id_crud_v2`).
V3 CRUD migration is now 100% complete with no legacy remnants. TODO updated.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Scott Idem
2026-06-23 19:14:21 -04:00
parent 00364b00d2
commit c18b32c2d6
3 changed files with 4 additions and 276 deletions

View File

@@ -55,11 +55,10 @@ Axonius DC (June 9) is done — the show happened and the badge layout work that
--- ---
## 🚧 V3 CRUD Migration (Surgical Cleanup) ## V3 CRUD Migration (complete 2026-06-23)
Finalizing the 100% adoption of V3 Standard endpoints and retirement of legacy wrappers.
- [ ] **[Core] Legacy Utility Helpers** — Refactor `ae_core_functions.ts` to use V3 helpers. - [x] **[Core] Legacy Utility Helpers** — `ae_core_functions.ts` confirmed using V3 helpers throughout; three commented-out dead functions (`load_ae_obj_id__site_domain`, `update_ae_obj_id_crud`, `update_ae_obj_id_crud_v2`) removed (2026-06-23).
- [ ] **[Cleanup] Delete Legacy Wrappers** — Once all callsites are migrated, remove `src/lib/ae_api/api_get__crud_obj_id.ts` and the legacy exports from `api.ts`. - [x] **[Cleanup] Delete Legacy Wrappers** — `api_get__crud_obj_id.ts` already absent; `delete_ae_obj_id_crud` (last legacy export in `api.ts`) removed; commented dead code in `ae_core_functions.ts` purged. 271 lines deleted, 0 callers (2026-06-23).
--- ---
@@ -119,7 +118,7 @@ Sorting baseline is now `build_tmp_sort` (ASC chain, no `.reverse()` on tmp-sort
## ⚙️ DevOps & Backend ## ⚙️ DevOps & Backend
- [ ] **[Cleanup] Remove unused legacy API wrappers** — `create_ae_obj_crud()`, `get_ae_obj_id_crud()`, and `update_ae_obj_id_crud()` are still exported from `api.ts` but no longer called anywhere in production code. V3 migration is 100% complete. Safe to delete: definitions in `api.ts` (lines 109-260), `src/lib/ae_api/api_get__crud_obj_id.ts`, unused wrapper in `ae_core_functions.ts` (`get_site_domain_obj_from_fqdn`, `update_ae_obj_id_crud`). - [x] **[Cleanup] Remove unused legacy API wrappers** — Complete (2026-06-23). See V3 CRUD Migration section above.
- [ ] **[Backend] `event_file` — add `cfg_json` column (post-CMSC)** — The per-file display override currently uses a localStorage workaround (`launcher_loc.current.file_display_overrides`) because `event_file` has no JSON blob column. Proper fix: add `cfg_json` to the `event_file` DB table, expose it through the FastAPI model, then migrate the frontend back to reading/writing the backend field (restoring global/cross-device persistence). Frontend code is in `launcher_file_cont.svelte` — search for `file_display_overrides`. - [ ] **[Backend] `event_file` — add `cfg_json` column (post-CMSC)** — The per-file display override currently uses a localStorage workaround (`launcher_loc.current.file_display_overrides`) because `event_file` has no JSON blob column. Proper fix: add `cfg_json` to the `event_file` DB table, expose it through the FastAPI model, then migrate the frontend back to reading/writing the backend field (restoring global/cross-device persistence). Frontend code is in `launcher_file_cont.svelte` — search for `file_display_overrides`.
- [x] **[Backend] Hosted file delete — V3 CRUD regression fix** — `DELETE /v3/action/event_file/{id}` now handles atomic cleanup (link removal, physical file, hosted_file record). Frontend updated to use this endpoint directly (2026-06-18, commit `5689bfebb`). - [x] **[Backend] Hosted file delete — V3 CRUD regression fix** — `DELETE /v3/action/event_file/{id}` now handles atomic cleanup (link removal, physical file, hosted_file record). Frontend updated to use this endpoint directly (2026-06-18, commit `5689bfebb`).
- [x] **[Backend] Hosted file orphan scan endpoint** — `GET /v3/action/hosted_file/orphan_scan` live. `/core/files/` "Check Orphans" updated to use it — single call replaces N+1 per-file link fetches (2026-06-18, commit `5689bfebb`). - [x] **[Backend] Hosted file orphan scan endpoint** — `GET /v3/action/hosted_file/orphan_scan` live. `/core/files/` "Check Orphans" updated to use it — single call replaces N+1 per-file link fetches (2026-06-18, commit `5689bfebb`).

View File

@@ -104,73 +104,6 @@ export const get_ae_obj_li_for_lu = async function get_ae_obj_li_for_lu({
} }
}; };
// Updated 2023-11-14
export const delete_ae_obj_id_crud = async function delete_ae_obj_id_crud({
api_cfg,
obj_type,
obj_id,
key,
jwt = null,
headers = {},
params = {},
data = {},
method = 'delete', // 'delete', 'disable', 'hide'
return_meta = false,
log_lvl = 0
}: {
api_cfg: any;
obj_type: string;
obj_id: string;
key: string;
jwt?: null | string;
headers?: any;
params?: any;
data?: any;
method?: string;
return_meta?: boolean;
log_lvl?: number;
}) {
if (log_lvl) {
console.log(
`*** delete_ae_obj_id_crud() *** obj_type: ${obj_type} obj_id: ${obj_id}`
);
}
data['super_key'] = key;
data['jwt'] = jwt;
// NOTE: The key and or JWT should be in the header of the DELETE, GET, PATCH, POST
// V3 Standard: Unified endpoint for all objects
const endpoint = `/v3/crud/${obj_type}/${obj_id}`;
if (log_lvl) {
console.log('Endpoint:', endpoint);
}
if (method) {
// NOTE: method options: 'delete', 'disable', 'hide'
params['method'] = method;
}
if (log_lvl) {
console.log('Params:', params);
}
const object_obj_delete_promise = await delete_object({
api_cfg: api_cfg,
endpoint: endpoint,
params: params,
data: data,
log_lvl: log_lvl
});
if (log_lvl > 1) {
console.log(object_obj_delete_promise);
}
return object_obj_delete_promise;
};
/* BEGIN: Hosted File Related */ /* BEGIN: Hosted File Related */
// Updated 2026-01-07 // Updated 2026-01-07
@@ -395,7 +328,6 @@ const obj = {
update_nested_obj: update_nested_obj, update_nested_obj: update_nested_obj,
delete_ae_obj: delete_ae_obj, delete_ae_obj: delete_ae_obj,
delete_nested_ae_obj: delete_nested_ae_obj, delete_nested_ae_obj: delete_nested_ae_obj,
delete_ae_obj_id_crud: delete_ae_obj_id_crud,
download_hosted_file: download_hosted_file, download_hosted_file: download_hosted_file,
delete_hosted_file: delete_hosted_file, delete_hosted_file: delete_hosted_file,
get_data_store: get_data_store, get_data_store: get_data_store,

View File

@@ -47,208 +47,6 @@ import { add_url_params, clean_headers } from '$lib/ae_core/core__api_helpers';
import { download_export__obj_type } from '$lib/ae_core/core__export'; import { download_export__obj_type } from '$lib/ae_core/core__export';
// DEAD CODE — no callers; pending removal. Updated 2024-03-29
// async function load_ae_obj_id__site_domain({
// api_cfg,
// fqdn,
// timeout = 7000,
// log_lvl = 0
// }: {
// api_cfg: any;
// fqdn: string;
// timeout?: number;
// log_lvl?: number;
// }) {
// if (log_lvl) {
// console.log(
// `*** load_ae_obj_id__site_domain() *** api.base_url=${api_cfg.base_url}, fqdn=${fqdn}, timeout=${timeout}`
// );
// }
//
// let no_account_id = false;
// if (!api_cfg.account_id) {
// no_account_id = true;
// }
// // LEGACY BOOTSTRAP SPECIAL CASE: this helper is effectively a remove
// // candidate once all site-domain lookups use the cache-first/bootstrap
// // path in ae_core__site.ts.
// no_account_id = true;
//
// const params = {};
//
// ae_promises.load__site_domain_obj = api
// .get_ae_obj({
// api_cfg: api_cfg,
// obj_type: 'site_domain',
// obj_id: fqdn,
// params: params,
// log_lvl: log_lvl
// })
// .then(function (site_domain_obj_get_result: any) {
// if (site_domain_obj_get_result) {
// return site_domain_obj_get_result;
// } else {
// console.log('No results returned.');
// return null;
// }
// })
// .catch(function (error: any) {
// console.log('No results returned or failed.', error);
// });
//
// return ae_promises.load__site_domain_obj;
// }
// DEAD CODE — no callers; pending removal. Updated 2024-03-27
// async function update_ae_obj_id_crud({
// api_cfg,
// object_type,
// object_id,
// object_reload = false,
// field_name,
// new_field_value,
// params = {},
// log_lvl = 0
// }: {
// api_cfg: any;
// object_type: string;
// object_id: string;
// object_reload?: boolean;
// field_name: string;
// new_field_value: any;
// params?: any | key_val;
// log_lvl?: number;
// }) {
// let patch_result: any = null;
//
// ae_promises.api_update__ae_obj = api
// .update_ae_obj({
// api_cfg: api_cfg,
// obj_type: object_type,
// obj_id: object_id,
// fields: { [field_name]: new_field_value },
// log_lvl: log_lvl
// })
// .then(function (results: any) {
// console.log('PATCH Promise', results);
//
// if (results) {
// patch_result = 'PATCH complete';
// } else {
// patch_result = 'PATCH failed';
// return false;
// }
// return true;
// })
// .catch(function (error: any) {
// console.log('Something went wrong patching the record.');
// console.log(error);
// return false;
// })
// .finally(function () {
// console.log('PATCH Promise finally');
// });
//
// return ae_promises.api_update__ae_obj;
// }
// // Core - Already imported above
// // import { load_ae_obj_id__person } from "$lib/ae_core/core__person";
// // import { load_ae_obj_id__user } from "$lib/ae_core/core__user";
// // Additional Modules
// import { load_ae_obj_id__archive } from '$lib/ae_archives/ae_archives__archive';
// import { load_ae_obj_id__archive_content } from '$lib/ae_archives/ae_archives__archive_content';
// import { load_ae_obj_id__event } from '$lib/ae_events/ae_events__event';
// // import { load_ae_obj_id__event_badge } from "$lib/ae_events/ae_events__event_badge";
// import { load_ae_obj_id__event_exhibit } from '$lib/ae_events/ae_events__exhibit';
// import { load_ae_obj_id__event_device } from '$lib/ae_events/ae_events__event_device';
// // import { load_ae_obj_id__event_exhibit } from "$lib/ae_events/ae_events__event_exhibit";
// import { load_ae_obj_id__event_file } from '$lib/ae_events/ae_events__event_file';
// import { load_ae_obj_id__event_location } from '$lib/ae_events/ae_events__event_location';
// import { load_ae_obj_id__event_presentation } from '$lib/ae_events/ae_events__event_presentation';
// import { load_ae_obj_id__event_presenter } from '$lib/ae_events/ae_events__event_presenter';
// import { load_ae_obj_id__event_session } from '$lib/ae_events/ae_events__event_session';
// import { load_ae_obj_id__journal } from '$lib/ae_journals/ae_journals__journal';
// import { load_ae_obj_id__journal_entry } from '$lib/ae_journals/ae_journals__journal_entry';
// import { load_ae_obj_id__post } from '$lib/ae_posts/ae_posts__post';
// import { load_ae_obj_id__post_comment } from '$lib/ae_posts/ae_posts__post_comment';
// Updated 2025-09-30
// async function update_ae_obj_id_crud_v2({
// api_cfg,
// object_type,
// object_id,
// object_reload = false,
// field_name,
// new_field_value,
// params = {},
// log_lvl = 0
// }: {
// api_cfg: any;
// object_type: string;
// object_id: string;
// object_reload?: boolean;
// field_name: string;
// new_field_value: any;
// params?: any | key_val;
// log_lvl?: number;
// }) {
// if (log_lvl) {
// console.log(
// `*** update_ae_obj_id_crud_v2() *** object_type=${object_type}, object_id=${object_id}, object_reload=${object_reload}, field_name=${field_name}, new_field_value=`,
// new_field_value
// );
// }
// const results = await api.update_ae_obj_id_crud({
// api_cfg: api_cfg,
// obj_type: object_type,
// obj_id: object_id,
// field_name: field_name,
// field_value: new_field_value,
// key: api_cfg.api_crud_super_key,
// log_lvl: log_lvl
// });
// if (results) {
// if (log_lvl) {
// console.log(`Patched - Field Name: ${field_name} with new Field Value: ${new_field_value}`);
// }
// if (object_reload) {
// if (log_lvl) {
// console.log(`Reloading the object after patching...`);
// }
// // Trigger reloads based on object type. These are fire-and-forget or awaited internally by the library functions.
// if (object_type == 'person') load_ae_obj_id__person({ api_cfg, person_id: object_id, log_lvl });
// if (object_type == 'archive') load_ae_obj_id__archive({ api_cfg, archive_id: object_id, log_lvl });
// if (object_type == 'archive_content') load_ae_obj_id__archive_content({ api_cfg, archive_content_id: object_id, log_lvl });
// if (object_type == 'journal') load_ae_obj_id__journal({ api_cfg, journal_id: object_id, log_lvl });
// if (object_type == 'journal_entry') load_ae_obj_id__journal_entry({ api_cfg, journal_entry_id: object_id, log_lvl });
// if (object_type == 'event') load_ae_obj_id__event({ api_cfg, event_id: object_id, log_lvl });
// if (object_type == 'event_exhibit') load_ae_obj_id__event_exhibit({ api_cfg, exhibit_id: object_id, log_lvl });
// if (object_type == 'event_device') load_ae_obj_id__event_device({ api_cfg, event_device_id: object_id, log_lvl });
// if (object_type == 'event_file') load_ae_obj_id__event_file({ api_cfg, event_file_id: object_id, log_lvl });
// if (object_type == 'event_location') load_ae_obj_id__event_location({ api_cfg, event_location_id: object_id, log_lvl });
// if (object_type == 'event_presentation') load_ae_obj_id__event_presentation({ api_cfg, event_presentation_id: object_id, log_lvl });
// if (object_type == 'event_presenter') load_ae_obj_id__event_presenter({ api_cfg, event_presenter_id: object_id, log_lvl });
// if (object_type == 'event_session') load_ae_obj_id__event_session({ api_cfg, event_session_id: object_id, log_lvl });
// if (object_type == 'post') load_ae_obj_id__post({ api_cfg, post_id: object_id, log_lvl });
// if (object_type == 'post_comment') load_ae_obj_id__post_comment({ api_cfg, post_comment_id: object_id, log_lvl });
// }
// } else {
// if (log_lvl) {
// console.log(`PATCH failed for ${object_type} ${object_id}`);
// }
// }
// return results;
// }
const export_obj = { const export_obj = {
check_hosted_file_obj_w_hash: check_hosted_file_obj_w_hash, check_hosted_file_obj_w_hash: check_hosted_file_obj_w_hash,
@@ -284,7 +82,6 @@ const export_obj = {
qry_ae_obj_li__user_email: qry_ae_obj_li__user_email, qry_ae_obj_li__user_email: qry_ae_obj_li__user_email,
auth_ae_obj__user_id_change_password: auth_ae_obj__user_id_change_password, auth_ae_obj__user_id_change_password: auth_ae_obj__user_id_change_password,
// update_ae_obj_id_crud_v2: update_ae_obj_id_crud_v2,
download_export__obj_type: download_export__obj_type, download_export__obj_type: download_export__obj_type,
generate_qr_code: generate_qr_code, generate_qr_code: generate_qr_code,
js_generate_qr_code: js_generate_qr_code js_generate_qr_code: js_generate_qr_code