diff --git a/src/lib/ae_core/core__crud_generic.ts b/src/lib/ae_core/core__crud_generic.ts index e7683914..7a941102 100644 --- a/src/lib/ae_core/core__crud_generic.ts +++ b/src/lib/ae_core/core__crud_generic.ts @@ -187,115 +187,7 @@ export async function delete_ae_obj_id( -/** - * @deprecated This function is deprecated. Use module-specific `process_ae_obj__*_props` functions instead. - * This generic processor with dynamic field detection is an older implementation. - * Module-specific processors now handle ID aliasing, content processing, and computed properties more effectively. - */ -export async function process_ae_obj__props({ - obj_li, - log_lvl = 0, -}: { - obj_li: any[]; - log_lvl?: number; -}) { - if (log_lvl) { - console.log(`*** process_ae_obj__props() ***`, obj_li); - } - if (!obj_li || obj_li.length === 0) { - return []; - } - - const processed = obj_li.map(obj => { - // Extract fields with fallbacks and detect existence - const group = obj.group || ''; - const priority = obj.priority !== undefined ? obj.priority : 0; - const sort = obj.sort !== undefined ? obj.sort : 0; - const created_on = obj.created_on || ''; - const updated_on = obj.updated_on || ''; - const name = obj.name || ''; - - // const description = obj.description || ''; - // // Handle special case with description that has markdown - // // Remove the most common zerowidth characters from the start of the file - // const description_cleaned: string = obj.description.replace(/^[\u200B\u200C\u200D\u200E\u200F\uFEFF]/,""); - // const description_md_html: null|string = marked.parse(description_cleaned ?? '') ?? null; - // // Add processed description - // obj.description_md_html = description_md_html; - - // Handle special case with content that has markdown - // Remove the most common zerowidth characters from the start of the file - const has_content = obj.content !== undefined && obj.content !== null; - if (has_content) { - const content_cleaned: string = obj.content.replace(/^[\u200B\u200C\u200D\u200E\u200F\uFEFF]/,""); - const content_md_html: null|string = marked.parse(content_cleaned ?? '') ?? null; - // Add processed content - obj.content_md_html = content_md_html; - } - - // Check which fields actually exist for this object - const has_group = obj.group !== undefined && obj.group !== null; - const has_priority = obj.priority !== undefined && obj.priority !== null; - const has_sort = obj.sort !== undefined && obj.sort !== null; - const has_created = obj.created_on !== undefined && obj.created_on !== null; - const has_updated = obj.updated_on !== undefined && obj.updated_on !== null; - const has_name = obj.name !== undefined && obj.name !== null; - - // Generate standardized tmp_sort fields with proper zero-padding - const sort_str = sort?.toString().padStart(3, '0') ?? '000'; - - // Build dynamic sorting combinations based on what exists - let tmp_sort_1 = ''; - let tmp_sort_2 = ''; - let tmp_sort_3 = ''; - - // Build based on existing fields - if (has_group && has_priority && has_sort) { - tmp_sort_1 = `${group}_${priority}_${sort_str}`; - tmp_sort_2 = `${group}_${priority}_${sort_str}_${name || ''}`; - tmp_sort_3 = `${priority}_${sort_str}_${group}`; - } else if (has_priority && has_sort) { - tmp_sort_1 = `${priority}_${sort_str}`; - tmp_sort_2 = `${priority}_${sort_str}_${name || ''}`; - tmp_sort_3 = `${priority}_${sort_str}`; - } else if (has_sort) { - tmp_sort_1 = `${sort_str}`; - tmp_sort_2 = `${sort_str}_${name || ''}`; - tmp_sort_3 = `${sort_str}`; - } else { - // Fallback for minimal data - tmp_sort_1 = `${created_on || ''}`; - tmp_sort_2 = `${created_on || ''}_${name || ''}`; - tmp_sort_3 = `${updated_on || ''}`; - } - - // Add time-based sorting for better ordering - if (has_created && has_updated) { - tmp_sort_1 += `_${created_on}_${updated_on}`; - tmp_sort_2 += `_${created_on}_${updated_on}`; - tmp_sort_3 += `_${updated_on}`; - } else if (has_created) { - tmp_sort_1 += `_${created_on}`; - tmp_sort_2 += `_${created_on}`; - tmp_sort_3 += `_${created_on}`; - } - - // Return processed object with standardized fields - return { - ...obj, - tmp_sort_1, - tmp_sort_2, - tmp_sort_3 - }; - }); - - if (log_lvl) { - console.log(`Processed objects:`, processed); - } - - return processed; -} // Additional Modules that might be needed for reloads @@ -315,49 +207,7 @@ import { load_ae_obj_id__post_comment } from "$lib/ae_posts/ae_posts__post_comme import { load_ae_obj_id__person } from "$lib/ae_core/core__person"; -/** - * @deprecated Use update_ae_obj_id_crud_v2 instead. This is the older version. - */ -export async function update_ae_obj_id_crud( - { - api_cfg, - object_type, - object_id, - field_name, - new_field_value, - log_lvl = 0 - }: { - api_cfg: any, - object_type: string, - object_id: string, - field_name: string, - new_field_value: any, - log_lvl: number - }) { - try { - 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) { - console.log(`Patched - Field Name: ${field_name} with new Field Value: ${new_field_value}`); - return true; - } else { - console.log(`Not Patched - Field Name: ${field_name} with new Field Value: ${new_field_value}; Account ID: ${api_cfg.account_id}`); - return false; - } - } catch (error) { - console.log('Something went wrong patching the record.', error); - return false; - } -} export async function update_ae_obj_id_crud_v2( diff --git a/src/lib/ae_core/core__idb_dexie.ts b/src/lib/ae_core/core__idb_dexie.ts index 6b5deecd..87c9a57f 100644 --- a/src/lib/ae_core/core__idb_dexie.ts +++ b/src/lib/ae_core/core__idb_dexie.ts @@ -7,8 +7,8 @@ import type { Dexie, Table } from 'dexie'; * @param log_lvl The logging level. * @returns The found ID, or undefined if no ID could be found. */ -function findObjectId(obj: any, table_name: string, log_lvl: number): string | number | undefined { - const potentialKeys = ['id', `${table_name}_id`, `${table_name}_id_random`]; +function find_object_id(obj: any, table_name: string, log_lvl: number): string | number | undefined { + const potential_keys = ['id', `${table_name}_id`, `${table_name}_id_random`]; for (const key of potentialKeys) { if (obj[key]) { @@ -67,12 +67,12 @@ export async function db_save_ae_obj_li__ae_obj>({ const db_table: Table = db_instance.table(table_name); if (!db_table) { - const errorMsg = `Table not found in Dexie instance: ${table_name}`; + const error_msg = `Table not found in Dexie instance: ${table_name}`; console.error(errorMsg); throw new Error(errorMsg); } - const dataToSave = obj_li + const data_to_save = obj_li .map((obj) => { const record: Partial = {}; @@ -82,7 +82,7 @@ export async function db_save_ae_obj_li__ae_obj>({ } // Ensure the primary key is included, attempting to find it from various legacy keys. - const id = findObjectId(obj, table_name, log_lvl); + const id = find_object_id(obj, table_name, log_lvl); if (id === undefined) { return null; // Skip objects without a valid ID. @@ -93,7 +93,7 @@ export async function db_save_ae_obj_li__ae_obj>({ }) .filter(Boolean) as T[]; - if (dataToSave.length === 0) { + if (data_to_save.length === 0) { if (log_lvl > 0) { console.warn('All objects were skipped, likely due to missing IDs.'); } @@ -102,7 +102,7 @@ export async function db_save_ae_obj_li__ae_obj>({ try { // bulkPut efficiently handles both inserts and updates. - const keys = await db_table.bulkPut(dataToSave); + const keys = await db_table.bulkPut(data_to_save); if (log_lvl > 0) { console.log(`Successfully saved ${keys.length} objects to "${table_name}".`); } diff --git a/src/lib/ae_core/core__person.ts b/src/lib/ae_core/core__person.ts index 8f68f45e..605320cf 100644 --- a/src/lib/ae_core/core__person.ts +++ b/src/lib/ae_core/core__person.ts @@ -687,13 +687,13 @@ async function _process_generic_props>({ // The API often returns fields like 'person_id_random', which need to be aliased to 'person_id'. for (const key in processed_obj) { if (key.endsWith('_random')) { - const newKey = key.slice(0, -7); // Remove '_random' suffix + const new_key = key.slice(0, -7); // Remove '_random' suffix processed_obj[newKey] = processed_obj[key]; } } // Ensure 'id' is set from '[obj_type]_id_random' - const randomIdKey = `${obj_type}_id_random`; - if (processed_obj[randomIdKey]) { + const random_id_key = `${obj_type}_id_random`; + if (processed_obj[random_id_key]) { processed_obj.id = processed_obj[randomIdKey]; } diff --git a/src/lib/ae_core/core__qr_code.ts b/src/lib/ae_core/core__qr_code.ts index f8a927d9..54fc2a6e 100644 --- a/src/lib/ae_core/core__qr_code.ts +++ b/src/lib/ae_core/core__qr_code.ts @@ -164,26 +164,26 @@ export async function js_generate_qr_code(qr_type, params = {}) { console.log(`*** js_generate_qr_code() *** qr_type=${qr_type}`, params); - let qrData = null; + let qr_data = null; // --- 1. Replicate Data Formatting Logic --- switch (qr_type) { case 'mecard': // Format: MECARD:N:name;EMAIL:email;ADR:address;; // Note: The original Python code had adr, but we'll use n and email as a minimum. - qrData = `MECARD:N:${n};EMAIL:${email};;`; + qr_data = `MECARD:N:${n};EMAIL:${email};;`; // You can enhance this with other MeCard fields if needed. break; case 'vcard': // Format: BEGIN:VCARD...END:VCARD - qrData = `BEGIN:VCARD\nVERSION:3.0\nN:${n}\nFN:${fn}\nORG:${org}\nEMAIL:${email}\n`; + qr_data = `BEGIN:VCARD\nVERSION:3.0\nN:${n}\nFN:${fn}\nORG:${org}\nEMAIL:${email}\n`; - if (url) { qrData += `URL:${url}\n`; } - if (tel) { qrData += `TEL:${tel}\n`; } + if (url) { qr_data += `URL:${url}\n`; } + if (tel) { qr_data += `TEL:${tel}\n`; } if (adr_loc) { // ADR format: TYPE=postal:Po box;Ext;Street;Locality;Region;Postal code;Country - qrData += `ADR:${adr_poa};${adr_ext};${adr_str};${adr_loc};${adr_reg};${adr_postal};${adr_country}\n`; + qr_data += `ADR:${adr_poa};${adr_ext};${adr_str};${adr_loc};${adr_reg};${adr_postal};${adr_country}\n`; } qrData += 'END:VCARD'; break; @@ -191,32 +191,32 @@ export async function js_generate_qr_code(qr_type, params = {}) { case 'obj': // Custom format: OBJ:ot:obj_type,oi:obj_id if (!obj_type || !obj_id) throw new Error('Missing obj_type or obj_id for type "obj".'); - qrData = `OBJ:ot:${obj_type},oi:${obj_id}`; + qr_data = `OBJ:ot:${obj_type},oi:${obj_id}`; break; case 'kv': // Custom format: KV:k:"key",v:"val" if (!key || !val) throw new Error('Missing key or val for type "kv".'); - qrData = `KV:k:"${key}",v:"${val}"`; + qr_data = `KV:k:"${key}",v:"${val}"`; break; case 'js': // Assumes 'js' is a stringified JSON object if (!js) throw new Error('Missing js string for type "js".'); - qrData = `JS:${js}`; + qr_data = `JS:${js}`; break; case 'str': // Raw string data if (!str) throw new Error('Missing raw string data for type "str".'); - qrData = str; + qr_data = str; break; default: throw new Error(`Unknown QR type: ${qr_type}`); } - if (!qrData) { + if (!qr_data) { throw new Error('Failed to create QR code data string.'); } @@ -225,14 +225,14 @@ export async function js_generate_qr_code(qr_type, params = {}) { // Options match the Python 'qrcode' library defaults closely: // error_correction = qrcode.constants.ERROR_CORRECT_M // box_size = 10, border = 1 - const dataUrl = await QRCode.toDataURL(qrData, { + const data_url = await QRCode.toDataURL(qr_data, { errorCorrectionLevel: 'M', margin: 1, // Corresponds to border scale: 10, // Corresponds to box_size type: 'image/png', }); - console.log('Generated QR code data URL:', dataUrl); - return dataUrl; + console.log('Generated QR code data URL:', data_url); + return data_url; } catch (error) { console.error('Error generating QR code:', error); throw new Error('Could not generate QR code image.');