Migrate User and ActivityLog modules to unified type system

- Added ae_User and ae_ActivityLog interfaces to ae_types.ts.
- Replaced local interfaces in User and ActivityLog logic files with unified imports.
- Standardized Promise return types for all core data loading, creation, and update functions.
- Verified permission field alignment for User type to support hierarchical access logic.
This commit is contained in:
Scott Idem
2026-01-08 12:20:21 -05:00
parent 25b51e1081
commit 324b65394a
3 changed files with 92 additions and 151 deletions

View File

@@ -3,44 +3,10 @@ import { api } from '$lib/api/api';
import { db_save_ae_obj_li__ae_obj } from '$lib/ae_core/core__idb_dexie'; import { db_save_ae_obj_li__ae_obj } from '$lib/ae_core/core__idb_dexie';
import { db_core } from '$lib/ae_core/db_core'; import { db_core } from '$lib/ae_core/db_core';
import type { ae_User } from '$lib/types/ae_types';
const ae_promises: key_val = {}; const ae_promises: key_val = {};
export interface User {
id: string;
user_id: string;
user_id_random: string;
username: string;
name: string;
email: string;
allow_auth_key: boolean;
super: boolean;
manager: boolean;
administrator: boolean;
verified: boolean;
public: boolean;
person_id?: string;
person_id_random?: string;
enable: null | boolean;
enable_from?: null | Date;
enable_to?: null | Date;
hide?: null | boolean;
priority?: null | boolean;
sort?: null | number;
group?: null | string;
notes?: null | string;
created_on: Date;
updated_on?: null | Date;
tmp_sort_1?: string;
tmp_sort_2?: string;
}
// Updated 2026-01-06 // Updated 2026-01-06
export async function load_ae_obj_id__user({ export async function load_ae_obj_id__user({
api_cfg, api_cfg,
@@ -56,7 +22,7 @@ export async function load_ae_obj_id__user({
params?: key_val; params?: key_val;
try_cache?: boolean; try_cache?: boolean;
log_lvl?: number; log_lvl?: number;
}) { }): Promise<ae_User | null> {
if (log_lvl) { if (log_lvl) {
console.log(`*** load_ae_obj_id__user() *** user_id=${user_id}`); console.log(`*** load_ae_obj_id__user() *** user_id=${user_id}`);
} }
@@ -119,7 +85,7 @@ export async function load_ae_obj_li__user({
params?: key_val; params?: key_val;
try_cache?: boolean; try_cache?: boolean;
log_lvl?: number; log_lvl?: number;
}) { }): Promise<ae_User[]> {
let promise; let promise;
if (qry_str) { if (qry_str) {
@@ -187,7 +153,7 @@ export async function create_ae_obj__user({
params?: key_val; params?: key_val;
try_cache?: boolean; try_cache?: boolean;
log_lvl?: number; log_lvl?: number;
}) { }): Promise<ae_User | null> {
const result = await api.create_ae_obj_v3({ const result = await api.create_ae_obj_v3({
api_cfg, api_cfg,
obj_type: 'user', obj_type: 'user',
@@ -228,7 +194,7 @@ export async function update_ae_obj__user({
params?: key_val; params?: key_val;
try_cache?: boolean; try_cache?: boolean;
log_lvl?: number; log_lvl?: number;
}) { }): Promise<ae_User | null> {
const result = await api.update_ae_obj_v3({ const result = await api.update_ae_obj_v3({
api_cfg, api_cfg,
obj_type: 'user', obj_type: 'user',

View File

@@ -1,42 +1,9 @@
import type { key_val } from '$lib/stores/ae_stores'; import type { key_val } from '$lib/stores/ae_stores';
import { api } from '$lib/api/api'; import { api } from '$lib/api/api';
import type { ae_ActivityLog } from '$lib/types/ae_types';
const ae_promises: key_val = {}; const ae_promises: key_val = {};
export interface Activity_Log {
id: string;
activity_log_id: string;
activity_log_id_random: string;
account_id: string;
account_id_random: string;
for_type?: string;
for_id?: string;
for_id_random?: string;
person_id?: string;
person_id_random?: string;
event_id?: string;
event_id_random?: string;
action: string;
action_with?: string;
summary?: string;
description?: string;
data_json?: any;
enable: null | boolean;
hide?: null | boolean;
priority?: null | boolean;
sort?: null | number;
group?: null | string;
notes?: null | string;
created_on: Date;
updated_on?: null | Date;
}
// Updated 2026-01-06 // Updated 2026-01-06
export async function load_ae_obj_id__activity_log({ export async function load_ae_obj_id__activity_log({
api_cfg, api_cfg,
@@ -50,7 +17,7 @@ export async function load_ae_obj_id__activity_log({
view?: string; view?: string;
params?: key_val; params?: key_val;
log_lvl?: number; log_lvl?: number;
}) { }): Promise<ae_ActivityLog | null> {
if (log_lvl) { if (log_lvl) {
console.log(`*** load_ae_obj_id__activity_log() *** activity_log_id=${activity_log_id}`); console.log(`*** load_ae_obj_id__activity_log() *** activity_log_id=${activity_log_id}`);
} }
@@ -92,7 +59,7 @@ export async function load_ae_obj_li__activity_log({
order_by_li?: Record<string, 'ASC' | 'DESC'>; order_by_li?: Record<string, 'ASC' | 'DESC'>;
params?: key_val; params?: key_val;
log_lvl?: number; log_lvl?: number;
}) { }): Promise<ae_ActivityLog[]> {
if (log_lvl) { if (log_lvl) {
console.log(`*** load_ae_obj_li__activity_log() *** for_obj_id=${for_obj_id}`); console.log(`*** load_ae_obj_li__activity_log() *** for_obj_id=${for_obj_id}`);
} }
@@ -127,7 +94,7 @@ export async function create_ae_obj__activity_log({
data_kv: key_val; data_kv: key_val;
params?: key_val; params?: key_val;
log_lvl?: number; log_lvl?: number;
}) { }): Promise<ae_ActivityLog | null> {
if (log_lvl) { if (log_lvl) {
console.log(`*** create_ae_obj__activity_log() *** account_id=${account_id}`); console.log(`*** create_ae_obj__activity_log() *** account_id=${account_id}`);
} }
@@ -164,7 +131,7 @@ export async function update_ae_obj__activity_log({
data_kv: key_val; data_kv: key_val;
params?: key_val; params?: key_val;
log_lvl?: number; log_lvl?: number;
}) { }): Promise<ae_ActivityLog | null> {
if (log_lvl) { if (log_lvl) {
console.log(`*** update_ae_obj__activity_log() *** activity_log_id=${activity_log_id}`); console.log(`*** update_ae_obj__activity_log() *** activity_log_id=${activity_log_id}`);
} }
@@ -231,7 +198,7 @@ export async function qry__activity_log({
log_lvl?: number; log_lvl?: number;
}) { }): Promise<ae_ActivityLog[]> {
const search_query: any = {}; const search_query: any = {};

View File

@@ -182,99 +182,107 @@ export interface ae_Person extends ae_BaseObj {
} }
/** /**
* Event - A discrete conference or show * User - A login entity with permissions
*/ */
export interface ae_Event extends ae_BaseObj { export interface ae_User extends ae_BaseObj {
event_id: string; user_id: string;
event_id_random: string; user_id_random: string;
account_id: string;
account_id_random: string;
person_id?: string;
person_id_random?: string;
username: string;
email?: string;
// Permissions (Maps to $ae_loc logic)
super: boolean;
manager: boolean;
administrator: boolean;
public: boolean;
status_name?: string;
logged_in_on?: string | Date;
last_activity_on?: string | Date;
}
/**
* Address - Geographic location data
*/
export interface ae_Address extends ae_BaseObj {
address_id: string;
address_id_random: string;
account_id: string; account_id: string;
account_id_random: string; account_id_random: string;
conference: boolean; for_type?: string;
type?: string; for_id_random?: string;
summary?: string;
format?: string; attention_to?: string;
organization_name?: string;
line_1: string;
line_2?: string;
line_3?: string;
city: string;
state_province?: string;
postal_code?: string;
country?: string;
country_name?: string;
timezone?: string; timezone?: string;
start_datetime?: string | Date; latitude?: string;
end_datetime?: string | Date; longitude?: string;
location_text?: string;
location_address_json?: any;
status?: string;
approve?: boolean;
ready?: boolean;
ready_on?: string | Date;
cfg_json?: any;
data_json?: any;
} }
/** /**
* EventBadge - An attendee's printed credentials * Contact - Electronic communication details (Phone, Email, Web)
*/ */
export interface ae_EventBadge extends ae_BaseObj { export interface ae_Contact extends ae_BaseObj {
event_badge_id: string; contact_id: string;
event_badge_id_random: string; contact_id_random: string;
event_id: string; account_id: string;
event_id_random: string; account_id_random: string;
person_id: string;
person_id_random: string;
event_person_id?: string;
event_person_id_random?: string;
event_badge_template_id?: string; address_id_random?: string;
event_badge_template_id_random?: string; for_type?: string;
for_id_random?: string;
badge_type_code?: string; title?: string;
badge_type?: string; tagline?: string;
member_type_code?: string;
member_status?: string;
pronouns?: string;
given_name?: string;
middle_name?: string;
family_name?: string;
full_name?: string;
affiliations?: string;
professional_title?: string;
email?: string; email?: string;
city?: string; phone_mobile?: string;
state_province?: string; phone_office?: string;
country?: string; website_url?: string;
print_count?: number; facebook_url?: string;
print_first_datetime?: string | Date; instagram_url?: string;
print_last_datetime?: string | Date; linkedin_url?: string;
ticket_list?: any[];
data_json?: any;
} }
/** /**
* EventBadgeTemplate - Layout and style for badges * ActivityLog - System audit trail
*/ */
export interface ae_EventBadgeTemplate extends ae_BaseObj { export interface ae_ActivityLog extends ae_BaseObj {
event_badge_template_id: string; activity_log_id: string;
event_badge_template_id_random: string; activity_log_id_random: string;
event_id: string; account_id: string;
event_id_random: string; account_id_random: string;
logo_path?: string; person_id_random?: string;
header_path?: string; user_id_random?: string;
header_row_1?: string;
header_row_2?: string;
footer_path?: string; external_client_id?: string;
footer_title?: string; source?: string;
badge_type_list?: any; object_type?: string;
ticket_list?: any; object_id_random?: string;
layout?: string; action: string;
style_href?: string; action_on_type?: string;
passcode?: string; action_on_id_random?: string;
}
details?: string;
other_json?: any;
}