diff --git a/app/db_sql.py b/app/db_sql.py index 31e78ba..3ae304a 100644 --- a/app/db_sql.py +++ b/app/db_sql.py @@ -929,6 +929,7 @@ def sql_select( def run_sql_select( sql: str|None = None, data: dict|None = None, + commit: bool = False, log_lvl: int = logging.WARNING, # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL ) -> None|bool|dict|list: log.setLevel(log_lvl) @@ -953,12 +954,18 @@ def run_sql_select( # https://docs.sqlalchemy.org/en/13/core/sqlelement.html#sqlalchemy.sql.expression.TextClause.columns # https://docs.sqlalchemy.org/en/13/core/type_basics.html sql = sql.columns(recurring_start_time=Time, recurring_end_time=Time) + if commit: + trans = db.begin() + if data: log.info('Executing with SQL statement and data...') result = db.execute(sql, data) else: log.info('Executing with SQL statement only...') result = db.execute(sql) + + if commit: + trans.commit() except OperationalError as e: log.error('An operational error exception happened. This is likely a "MySQL server has gone away" error. Going to try again...') log.exception('**** *** ** * ### BEGIN ### Operational Exception Happened: Trying again... * ** *** ****') @@ -1037,7 +1044,7 @@ def run_sql_select( return False # Not successful else: - log.debug('Successfully executed the SQL on the first try.') + log.info('Successfully executed the SQL on the first try.') pass return result # ### END ### Core Help CRUD ### run_sql_select() ### diff --git a/app/main.py b/app/main.py index 6f407a8..345bfeb 100644 --- a/app/main.py +++ b/app/main.py @@ -15,7 +15,7 @@ from . import config from app.log import log, logging # Import the routers here first: -from app.routers import aether_cfg, api_crud, api_crud_v2, api, importing, sql, account, activity_log, address, archive, archive_content, contact, cont_edu_cert, cont_edu_cert_person, data_store, event, event_abstract, event_badge, event_badge_importing, event_badge_template, event_device, event_exhibit, event_exhibit_tracking, event_file, event_importing, event_location, event_person, event_person_detail, event_person_tracking, event_presentation, event_presenter, event_registration, event_session, flask_cfg, fundraising, grant, hosted_file, journal, journal_entry, log_client_viewing, lookup, membership_cfg, membership_group, membership_person_group, membership_person, membership_person_profile, membership_type, membership_person_type, order, order_v3, order_line, order_cart, organization, page, person, person_user, post, post_comment, product, qr, site, site_domain, user, util_email, websockets_redis, e_confex, e_cvent, c_idaa, e_impexium, e_stripe +from app.routers import ae_obj, aether_cfg, api_crud, api_crud_v2, api, importing, sql, account, activity_log, address, archive, archive_content, contact, cont_edu_cert, cont_edu_cert_person, data_store, event, event_abstract, event_badge, event_badge_importing, event_badge_template, event_device, event_exhibit, event_exhibit_tracking, event_file, event_importing, event_location, event_person, event_person_detail, event_person_tracking, event_presentation, event_presenter, event_registration, event_session, flask_cfg, fundraising, grant, hosted_file, journal, journal_entry, log_client_viewing, lookup, membership_cfg, membership_group, membership_person_group, membership_person, membership_person_profile, membership_type, membership_person_type, order, order_v3, order_line, order_cart, organization, page, person, person_user, post, post_comment, product, qr, site, site_domain, user, util_email, websockets_redis, e_confex, e_cvent, c_idaa, e_impexium, e_stripe # from app.routers import aether_cfg, sql @@ -88,6 +88,11 @@ app.mount('/static', StaticFiles(directory='static'), name='static') # Set up each route once the router has been imported +app.include_router( + ae_obj.router, + prefix='/ae_obj', + tags=['AE Object'], +) app.include_router( aether_cfg.router, tags=['Aether Config'], diff --git a/app/routers/ae_obj.py b/app/routers/ae_obj.py new file mode 100644 index 0000000..a4a05f7 --- /dev/null +++ b/app/routers/ae_obj.py @@ -0,0 +1,663 @@ +import datetime, json, requests, time +from fastapi import APIRouter, Body, Depends, Header, HTTPException, Path, Query, Response, status +from fastapi.responses import FileResponse +from typing import Dict, List, Optional, Set, Union + +from sqlalchemy import text + +from app.lib_general import log, logging, common_route_params, Common_Route_Params +from app.db_sql import sql_insert, sql_update, sql_insert_or_update, sql_select, sql_delete, run_sql_select + +from app.ae_obj_types_def import * +from app.models.core_object_models import Core_Std_Obj_Base, Core_Object_Base + + +router = APIRouter() + +obj_type_map = { + 'account': { + 'tbl_name': 'account', + 'obj_id': '`id_random`', + 'obj_ext_uid': 'NULL', + 'obj_ext_id': 'NULL', + 'obj_code': '`code`', + 'obj_type_ver_id': '`id`', + 'obj_account_id': 'NULL', + 'obj_parent_type': 'NULL', + 'obj_parent_id': 'NULL', + 'obj_passcode': 'NULL', + 'obj_name': '`name`', + 'obj_description': '`description`', + 'obj_alert': 'NULL', + 'obj_alert_msg': 'NULL', + 'obj_status': 'NULL', + 'obj_approve': 'NULL', + 'obj_approved_on': 'NULL', + 'obj_enable': '`enable`', + 'obj_enable_on': '`enable_from`', + 'obj_archive_on': '`enable_to`', + 'obj_restricted': 'NULL', + 'obj_hide': 'FALSE', + 'obj_priority': 'NULL', + 'obj_sort': 'NULL', + 'obj_group': 'NULL', + 'obj_ver': 'NULL', + 'obj_staff_notes': 'NULL', + 'obj_data_json': 'NULL', + 'obj_cfg_json': 'NULL', + 'obj_meta_json': 'NULL', + 'obj_other_json': 'NULL', + 'obj_notes': '`notes`', + 'obj_created_on': '`created_on`', + 'obj_updated_on': '`updated_on`', + }, + 'user': { + 'tbl_name': 'user', + 'obj_id': '`id_random`', + 'obj_ext_uid': 'NULL', + 'obj_ext_id': 'NULL', + 'obj_code': '`email`', + 'obj_type_ver_id': '`id`', + 'obj_account_id': '`account_id`', + 'obj_parent_type': 'NULL', + 'obj_parent_id': 'NULL', + 'obj_passcode': '`auth_key`', + 'obj_name': '`name`', + 'obj_description': 'NULL', + 'obj_alert': 'NULL', + 'obj_alert_msg': 'NULL', + 'obj_status': 'NULL', + 'obj_approve': 'NULL', + 'obj_approved_on': 'NULL', + 'obj_enable': '`enable`', + 'obj_enable_on': '`enable_from`', + 'obj_archive_on': '`enable_to`', + 'obj_restricted': 'NULL', + 'obj_hide': 'FALSE', + 'obj_priority': 'NULL', + 'obj_sort': 'NULL', + 'obj_group': 'NULL', + 'obj_ver': 'NULL', + 'obj_staff_notes': 'NULL', + 'obj_data_json': 'NULL', + 'obj_cfg_json': 'NULL', + 'obj_meta_json': 'NULL', + 'obj_other_json': 'NULL', + 'obj_notes': '`notes`', + 'obj_created_on': '`created_on`', + 'obj_updated_on': '`updated_on`', + }, + 'hosted_file': { + 'tbl_name': 'hosted_file', + 'obj_id': '`id_random`', + 'obj_ext_uid': 'NULL', + 'obj_ext_id': 'NULL', + 'obj_code': 'NULL', + 'obj_type_ver_id': '`id`', + 'obj_account_id': '`account_id`', + 'obj_parent_type': 'NULL', + 'obj_parent_id': 'NULL', + 'obj_passcode': 'NULL', + 'obj_name': '`filename`', + 'obj_description': 'NULL', + 'obj_alert': 'NULL', + 'obj_alert_msg': 'NULL', + 'obj_status': 'NULL', + 'obj_approve': 'NULL', + 'obj_approved_on': 'NULL', + 'obj_enable': '`enable`', + 'obj_enable_on': 'NULL', + 'obj_archive_on': 'NULL', + 'obj_restricted': 'NULL', + 'obj_hide': '`hide`', + 'obj_priority': 'NULL', + 'obj_sort': 'NULL', + 'obj_group': 'NULL', + 'obj_ver': 'NULL', + 'obj_staff_notes': 'NULL', + 'obj_data_json': 'NULL', + 'obj_cfg_json': 'NULL', + 'obj_meta_json': 'NULL', + 'obj_other_json': 'NULL', + 'obj_notes': '`notes`', + 'obj_created_on': '`created_on`', + 'obj_updated_on': '`updated_on`', + }, +} + +# Updated 2024-07-31 +@router.get('/{obj_type}/convert') +def convert_obj_type( + obj_type: str = Path(min_length=2, max_length=50), + + # for_obj_type: Optional[str] = Query(None, max_length=50), + # for_obj_id: Optional[str] = Query(None, max_length=22), + + # tbl_alt: Optional[str] = Query('default', max_length=50), # This is used as a lookup for the real SQL database table or view name to use. + # mdl_alt: Optional[str] = Query('default', max_length=50), # This is used as a lookup for the real Python Pydantic model name to use. + # exp_alt: Optional[str] = Query('default', max_length=50), # This is used as a lookup for a list of column names to use. + + # Get the "json" param from the query string. This is a JSON formatted string of the data to be inserted. + # jp: Optional[Union[str, None]] = None, + + commons: Common_Route_Params = Depends(common_route_params), + ): + log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) + + # ### SECTION ### Get the field map for the object type + # Check the URL to read the JSON formatted mapping data. + url = 'https://dev-api.oneskyit.com/static/ae/obj_type_maps.json' + # url = f'https://dev-api.oneskyit.com/static/ae/obj_type_map__{obj_type}.json' + resp = requests.get(url=url, headers={'Content-Type': 'application/json', 'Cache-Control': 'no-cache'}) + log.debug(f'Status Code: {resp.status_code}') + log.debug(f'Headers: {resp.headers}') + + obj_type_maps = resp.json() + + log.debug(obj_type_maps) + + if obj_type not in obj_type_maps: + url = f'https://dev-api.oneskyit.com/static/ae/obj_type_map__{obj_type}.json' + resp = requests.get(url=url, headers={'Content-Type': 'application/json', 'Cache-Control': 'no-cache'}) + log.debug(f'Status Code: {resp.status_code}') + log.debug(f'Headers: {resp.headers}') + if resp.status_code == 200: + obj_type_maps[obj_type] = resp.json() + else: + log.warning(f"Object type '{obj_type}' not found.") + raise HTTPException(status_code=404, detail=f"Object type '{obj_type}' not found.") + + field_map = obj_type_maps[obj_type] + log.debug(field_map) + + # ### SECTION ### Call generic function to convert the object type to the new model + result = handle_convert_obj_type( + obj_type=obj_type, + field_map=field_map, + ) + + data = { + 'result_count': result.rowcount, + 'result_id': result.lastrowid, + 'obj_type': obj_type, + } + + return mk_resp(data=data, response=commons.response) + + +# Example SQL statements +# -- Core to obj conversion + +# INSERT INTO obj (`obj_id`, `obj_code`, `obj_account_id`, `obj_type`, `obj_type_ver_id`, `obj_name`, `obj_description`, `obj_enable`, `obj_enable_on`, `obj_archive_on`, `obj_hide`, `obj_notes`, `obj_created_on`, `obj_updated_on`) +# SELECT +# `id_random` AS `obj_id`, +# `code` AS `obj_code`, +# NULL AS `obj_account_id`, +# 'account' AS `obj_type`, +# `id` AS `obj_type_ver_id`, +# `name` AS `obj_name`, +# `description` AS `obj_description`, +# `enable` AS `obj_enable`, +# `enable_from` AS `obj_enable_on`, +# `enable_to` AS `obj_archive_on`, +# FALSE AS `obj_hide`, +# `notes` AS `obj_notes`, +# `created_on` AS `obj_created_on`, +# `updated_on` AS `obj_updated_on` +# FROM +# `account` +# ON DUPLICATE KEY UPDATE +# `obj_id` = VALUES(`obj_id`), +# `obj_code` = VALUES(`obj_code`), +# `obj_account_id` = VALUES(`obj_account_id`), +# `obj_name` = VALUES(`obj_name`), +# `obj_description` = VALUES(`obj_description`), +# `obj_enable` = VALUES(`obj_enable`), +# `obj_enable_on` = VALUES(`obj_enable_on`), +# `obj_archive_on` = VALUES(`obj_archive_on`), +# `obj_hide` = VALUES(`obj_hide`), +# `obj_notes` = VALUES(`obj_notes`), +# `obj_created_on` = VALUES(`obj_created_on`), +# `obj_updated_on` = VALUES(`obj_updated_on`); + + +# INSERT INTO obj (`obj_id`, `obj_ext_uid`, `obj_ext_id`, `obj_code`, `obj_type`, `obj_type_ver_id`, `obj_account_id`, `obj_passcode`, `obj_name`, `obj_description`, `obj_enable`, `obj_hide`, `obj_group`, `obj_notes`, `obj_created_on`, `obj_updated_on`) +# SELECT +# `id_random` AS `obj_id`, +# `external_sys_id` AS `obj_ext_uid`, +# `external_id` AS `obj_ext_id`, +# `primary_email` AS `obj_code`, +# 'person' AS `obj_type`, +# `id` AS `obj_type_ver_id`, +# `account_id` AS `obj_account_id`, +# `passcode` AS `obj_passcode`, +# `full_name` AS `obj_name`, +# `description` AS `obj_description`, +# `enable` AS `obj_enable`, +# `hide` AS `obj_hide`, +# `group` AS `obj_group`, +# `notes` AS `obj_notes`, +# `created_on` AS `obj_created_on`, +# `updated_on` AS `obj_updated_on` +# FROM +# `person` +# ON DUPLICATE KEY UPDATE +# `obj_id` = VALUES(`obj_id`), +# `obj_ext_uid` = VALUES(`obj_ext_uid`), +# `obj_ext_id` = VALUES(`obj_ext_id`), +# `obj_code` = VALUES(`obj_code`), +# `obj_account_id` = VALUES(`obj_account_id`), +# `obj_passcode` = VALUES(`obj_passcode`), +# `obj_name` = VALUES(`obj_name`), +# `obj_description` = VALUES(`obj_description`), +# `obj_enable` = VALUES(`obj_enable`), +# `obj_hide` = VALUES(`obj_hide`), +# `obj_group` = VALUES(`obj_group`), +# `obj_notes` = VALUES(`obj_notes`), +# `obj_created_on` = VALUES(`obj_created_on`), +# `obj_updated_on` = VALUES(`obj_updated_on`); + + +# INSERT INTO obj (`obj_id`, `obj_code`, `obj_type`, `obj_type_ver_id`, `obj_account_id`, `obj_passcode`, `obj_name`, `obj_enable`, `obj_enable_on`, `obj_archive_on`, `obj_hide`, `obj_priority`, `obj_sort`, `obj_group`, `obj_notes`, `obj_created_on`, `obj_updated_on`) +# SELECT +# `id_random` AS `obj_id`, +# `email` AS `obj_code`, +# 'user' AS `obj_type`, +# `id` AS `obj_type_ver_id`, +# `account_id` AS `obj_account_id`, +# `auth_key` AS `obj_passcode`, +# `name` AS `obj_name`, +# `enable` AS `obj_enable`, +# `enable_from` AS `obj_enable_on`, +# `enable_to` AS `obj_archive_on`, +# `hide` AS `obj_hide`, +# `priority` AS `obj_priority`, +# `sort` AS `obj_sort`, +# `group` AS `obj_group`, +# `notes` AS `obj_notes`, +# `created_on` AS `obj_created_on`, +# `updated_on` AS `obj_updated_on` +# FROM +# `user` +# ON DUPLICATE KEY UPDATE +# `obj_id` = VALUES(`obj_id`), +# `obj_code` = VALUES(`obj_code`), +# `obj_account_id` = VALUES(`obj_account_id`), +# `obj_passcode` = VALUES(`obj_passcode`), +# `obj_name` = VALUES(`obj_name`), +# `obj_enable` = VALUES(`obj_enable`), +# `obj_enable_on` = VALUES(`obj_enable_on`), +# `obj_archive_on` = VALUES(`obj_archive_on`), +# `obj_hide` = VALUES(`obj_hide`), +# `obj_priority` = VALUES(`obj_priority`), +# `obj_sort` = VALUES(`obj_sort`), +# `obj_group` = VALUES(`obj_group`), +# `obj_notes` = VALUES(`obj_notes`), +# `obj_created_on` = VALUES(`obj_created_on`), +# `obj_updated_on` = VALUES(`obj_updated_on`); + + +# INSERT INTO obj (`obj_id`, `obj_code`, `obj_type`, `obj_type_ver_id`, `obj_account_id`, `obj_passcode`, `obj_name`, `obj_description`, `obj_enable`, `obj_enable_on`, `obj_archive_on`, `obj_hide`, `obj_priority`, `obj_sort`, `obj_group`, `obj_cfg_json`, `obj_notes`, `obj_created_on`, `obj_updated_on`) +# SELECT +# `id_random` AS `obj_id`, +# NULL AS `obj_code`, +# 'hosted_file' AS `obj_type`, +# `id` AS `obj_type_ver_id`, +# `account_id` AS `obj_account_id`, +# NULL AS `obj_passcode`, +# `filename` AS `obj_name`, +# NULL AS `obj_description`, +# `enable` AS `obj_enable`, +# NULL AS `obj_enable_on`, +# NULL AS `obj_archive_on`, +# `hide` AS `obj_hide`, +# NULL AS `obj_priority`, +# NULL AS `obj_sort`, +# NULL AS `obj_group`, +# NULL AS `obj_cfg_json`, +# `notes` AS `obj_notes`, +# `created_on` AS `obj_created_on`, +# `updated_on` AS `obj_updated_on` +# FROM +# `hosted_file` +# ON DUPLICATE KEY UPDATE +# `obj_id` = VALUES(`obj_id`), +# `obj_code` = VALUES(`obj_code`), +# `obj_account_id` = VALUES(`obj_account_id`), +# `obj_passcode` = VALUES(`obj_passcode`), +# `obj_name` = VALUES(`obj_name`), +# `obj_description` = VALUES(`obj_description`), +# `obj_enable` = VALUES(`obj_enable`), +# `obj_enable_on` = VALUES(`obj_enable_on`), +# `obj_archive_on` = VALUES(`obj_archive_on`), +# `obj_hide` = VALUES(`obj_hide`), +# `obj_priority` = VALUES(`obj_priority`), +# `obj_sort` = VALUES(`obj_sort`), +# `obj_group` = VALUES(`obj_group`), +# `obj_cfg_json` = VALUES(`obj_cfg_json`), +# `obj_notes` = VALUES(`obj_notes`), +# `obj_created_on` = VALUES(`obj_created_on`), +# `obj_updated_on` = VALUES(`obj_updated_on`); + + +# -- Event to obj conversion + +# INSERT INTO obj (`id_random`, `code`, `type_name`, `type_ver_id`, `account_id`, `passcode`, `name`, `description`, `enable`, `enable_on`, `archive_on`, `hide`, `priority`, `sort`, `group`, `cfg_json`, `notes`, `created_on`, `updated_on`) +# SELECT +# `id_random`, +# `code` AS `code`, +# 'event' AS `type_name`, +# `id` AS `type_ver_id`, +# `account_id` AS `account_id`, +# NULL AS `passcode`, +# `name` AS `name`, +# `description` AS `description`, +# `enable` AS `enable`, +# `enable_from` AS `enable_on`, +# `enable_to` AS `archive_on`, +# `hide` AS `hide`, +# `priority` AS `priority`, +# `sort` AS `sort`, +# `group` AS `group`, +# `cfg_json` AS `cfg_json`, +# `notes` AS `notes`, +# `created_on` AS `created_on`, +# `updated_on` AS `updated_on` +# FROM +# `event` +# ON DUPLICATE KEY UPDATE +# `id_random` = VALUES(`id_random`), +# `code` = VALUES(`code`), +# `account_id` = VALUES(`account_id`), +# `passcode` = VALUES(`passcode`), +# `name` = VALUES(`name`), +# `description` = VALUES(`description`), +# `enable` = VALUES(`enable`), +# `enable_on` = VALUES(`enable_on`), +# `archive_on` = VALUES(`archive_on`), +# `hide` = VALUES(`hide`), +# `priority` = VALUES(`priority`), +# `sort` = VALUES(`sort`), +# `group` = VALUES(`group`), +# `cfg_json` = VALUES(`cfg_json`), +# `notes` = VALUES(`notes`), +# `created_on` = VALUES(`created_on`), +# `updated_on` = VALUES(`updated_on`); + + +# INSERT INTO obj (`id_random`, `code`, `type_name`, `type_ver_id`, `account_id`, `parent_type`, `parent_id`, `passcode`, `name`, `description`, `status`, `enable`, `enable_on`, `archive_on`, `restricted`, `hide`, `priority`, `sort`, `group`, `cfg_json`, `notes`, `created_on`, `updated_on`) +# SELECT +# `id_random`, +# NULL AS `code`, +# 'event_file' AS `type_name`, +# `id` AS `type_ver_id`, +# `account_id` AS `account_id`, +# 'event' AS `parent_type`, +# `event_id` AS `parent_id`, +# NULL AS `passcode`, +# `filename` AS `name`, +# NULL AS `description`, +# `status` AS `status`, +# `enable` AS `enable`, +# `enable_after_datetime` AS `enable_on`, +# `enable_before_datetime` AS `archive_on`, +# `internal_use` AS `restricted`, +# `hide` AS `hide`, +# `priority` AS `priority`, +# `sort` AS `sort`, +# `group` AS `group`, +# NULL AS `cfg_json`, +# NULL AS `notes`, +# `created_on` AS `created_on`, +# `updated_on` AS `updated_on` +# FROM +# `v_event_file` +# ON DUPLICATE KEY UPDATE +# `id_random` = VALUES(`id_random`), +# `code` = VALUES(`code`), +# `account_id` = VALUES(`account_id`), +# `parent_type` = VALUES(`parent_type`), +# `parent_id` = VALUES(`parent_id`), +# `passcode` = VALUES(`passcode`), +# `name` = VALUES(`name`), +# `description` = VALUES(`description`), +# `status` = VALUES(`status`), +# `enable` = VALUES(`enable`), +# `enable_on` = VALUES(`enable_on`), +# `archive_on` = VALUES(`archive_on`), +# `restricted` = VALUES(`restricted`), +# `hide` = VALUES(`hide`), +# `priority` = VALUES(`priority`), +# `sort` = VALUES(`sort`), +# `group` = VALUES(`group`), +# `cfg_json` = VALUES(`cfg_json`), +# `notes` = VALUES(`notes`), +# `created_on` = VALUES(`created_on`), +# `updated_on` = VALUES(`updated_on`); + + +# INSERT INTO obj (`id_random`, `external_uid`, `external_id`, `code`, `type_name`, `type_ver_id`, `account_id`, `parent_type`, `parent_id`, `passcode`, `name`, `description`, `status`, `enable`, `enable_on`, `archive_on`, `restricted`, `hide`, `priority`, `sort`, `group`, `data_json`, `cfg_json`, `notes`, `created_on`, `updated_on`) +# SELECT +# `id_random`, +# NULL AS `external_uid`, +# `external_id` AS `external_id`, +# NULL AS `code`, +# 'event_badge' AS `type_name`, +# `id` AS `type_ver_id`, +# `account_id` AS `account_id`, +# 'event' AS `parent_type`, +# `event_id` AS `parent_id`, +# NULL AS `passcode`, +# `full_name` AS `name`, +# NULL AS `description`, +# NULL AS `status`, +# `enable` AS `enable`, +# NULL AS `enable_on`, +# NULL AS `archive_on`, +# NULL AS `restricted`, +# `hide` AS `hide`, +# `priority` AS `priority`, +# `sort` AS `sort`, +# `group` AS `group`, +# `data_json` AS `data_json`, +# `cfg_json` AS `cfg_json`, +# `notes` AS `notes`, +# `created_on` AS `created_on`, +# `updated_on` AS `updated_on` +# FROM +# `v_event_badge` +# ON DUPLICATE KEY UPDATE +# `id_random` = VALUES(`id_random`), +# `external_uid` = VALUES(`external_uid`), +# `external_id` = VALUES(`external_id`), +# `code` = VALUES(`code`), +# `account_id` = VALUES(`account_id`), +# `parent_type` = VALUES(`parent_type`), +# `parent_id` = VALUES(`parent_id`), +# `passcode` = VALUES(`passcode`), +# `name` = VALUES(`name`), +# `description` = VALUES(`description`), +# `status` = VALUES(`status`), +# `enable` = VALUES(`enable`), +# `enable_on` = VALUES(`enable_on`), +# `archive_on` = VALUES(`archive_on`), +# `restricted` = VALUES(`restricted`), +# `hide` = VALUES(`hide`), +# `priority` = VALUES(`priority`), +# `sort` = VALUES(`sort`), +# `group` = VALUES(`group`), +# `data_json` = VALUES(`data_json`), +# `cfg_json` = VALUES(`cfg_json`), +# `notes` = VALUES(`notes`), +# `created_on` = VALUES(`created_on`), +# `updated_on` = VALUES(`updated_on`); + + +# INSERT INTO obj (`id_random`, `external_uid`, `external_id`, `code`, `type_name`, `type_ver_id`, `account_id`, `parent_type`, `parent_id`, `passcode`, `name`, `description`, `status`, `enable`, `enable_on`, `archive_on`, `restricted`, `hide`, `priority`, `sort`, `group`, `data_json`, `cfg_json`, `notes`, `created_on`, `updated_on`) +# SELECT +# `id_random`, +# 'external_person_id' AS `external_uid`, +# `external_id` AS `external_id`, +# NULL AS `code`, +# 'event_person' AS `type_name`, +# `id` AS `type_ver_id`, +# `account_id` AS `account_id`, +# 'event' AS `parent_type`, +# `event_id` AS `parent_id`, +# NULL AS `passcode`, +# NULL AS `name`, +# NULL AS `description`, +# `status` AS `status`, +# `enable` AS `enable`, +# NULL AS `enable_on`, +# NULL AS `archive_on`, +# NULL AS `restricted`, +# `hide` AS `hide`, +# `priority` AS `priority`, +# `sort` AS `sort`, +# `group` AS `group`, +# NULL AS `data_json`, +# NULL AS `cfg_json`, +# `notes` AS `notes`, +# `created_on` AS `created_on`, +# `updated_on` AS `updated_on` +# FROM +# `v_event_person` +# ON DUPLICATE KEY UPDATE +# `id_random` = VALUES(`id_random`), +# `external_uid` = VALUES(`external_uid`), +# `external_id` = VALUES(`external_id`), +# `code` = VALUES(`code`), +# `account_id` = VALUES(`account_id`), +# `parent_type` = VALUES(`parent_type`), +# `parent_id` = VALUES(`parent_id`), +# `passcode` = VALUES(`passcode`), +# `name` = VALUES(`name`), +# `description` = VALUES(`description`), +# `status` = VALUES(`status`), +# `enable` = VALUES(`enable`), +# `enable_on` = VALUES(`enable_on`), +# `archive_on` = VALUES(`archive_on`), +# `restricted` = VALUES(`restricted`), +# `hide` = VALUES(`hide`), +# `priority` = VALUES(`priority`), +# `sort` = VALUES(`sort`), +# `group` = VALUES(`group`), +# `data_json` = VALUES(`data_json`), +# `cfg_json` = VALUES(`cfg_json`), +# `notes` = VALUES(`notes`), +# `created_on` = VALUES(`created_on`), +# `updated_on` = VALUES(`updated_on`); + + +# This will run the generated SQL statement based on the object type and field map provided. +def handle_convert_obj_type( + obj_type: str, + field_map: Dict[str, str] + ) -> Dict[str, Union[str, int]]: + log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) + + # ### SECTION ### Create the SQL statement to convert the object type to the new model + sql = text(f""" + INSERT INTO obj + ( + `obj_id`, `obj_ext_uid`, `obj_ext_id`, + `obj_code`, + `obj_type`, `obj_type_ver_id`, + `obj_account_id`, + `obj_parent_type`, `obj_parent_id`, + `obj_passcode`, + `obj_name`, `obj_description`, + `obj_alert`, `obj_alert_msg`, + `obj_status`, `obj_approve`, `obj_approved_on`, + `obj_enable`, `obj_enable_on`, `obj_archive_on`, + `obj_restricted`, `obj_hide`, `obj_priority`, `obj_sort`, `obj_group`, + `obj_ver`, `obj_staff_notes`, + `obj_data_json`, `obj_cfg_json`, `obj_meta_json`, `obj_other_json`, + `obj_notes`, `obj_created_on`, `obj_updated_on` + ) + SELECT + {field_map['obj_id']} AS `obj_id`, + {field_map['obj_ext_uid']} AS `obj_ext_uid`, + {field_map['obj_ext_id']} AS `obj_ext_id`, + {field_map['obj_code']} AS `obj_code`, + '{obj_type}' AS `obj_type`, + {field_map['obj_type_ver_id']} AS `obj_type_ver_id`, + {field_map['obj_account_id']} AS `obj_account_id`, + {field_map['obj_parent_type']} AS `obj_parent_type`, + {field_map['obj_parent_id']} AS `obj_parent_id`, + {field_map['obj_passcode']} AS `obj_passcode`, + {field_map['obj_name']} AS `obj_name`, + {field_map['obj_description']} AS `obj_description`, + {field_map['obj_alert']} AS `obj_alert`, + {field_map['obj_alert_msg']} AS `obj_alert_msg`, + {field_map['obj_status']} AS `obj_status`, + {field_map['obj_approve']} AS `obj_approve`, + {field_map['obj_approved_on']} AS `obj_approved_on`, + {field_map['obj_enable']} AS `obj_enable`, + {field_map['obj_enable_on']} AS `obj_enable_on`, + {field_map['obj_archive_on']} AS `obj_archive_on`, + {field_map['obj_restricted']} AS `obj_restricted`, + {field_map['obj_hide']} AS `obj_hide`, + {field_map['obj_priority']} AS `obj_priority`, + {field_map['obj_sort']} AS `obj_sort`, + {field_map['obj_group']} AS `obj_group`, + {field_map['obj_ver']} AS `obj_ver`, + {field_map['obj_staff_notes']} AS `obj_staff_notes`, + {field_map['obj_data_json']} AS `obj_data_json`, + {field_map['obj_cfg_json']} AS `obj_cfg_json`, + {field_map['obj_meta_json']} AS `obj_meta_json`, + {field_map['obj_other_json']} AS `obj_other_json`, + {field_map['obj_notes']} AS `obj_notes`, + {field_map['obj_created_on']} AS `obj_created_on`, + {field_map['obj_updated_on']} AS `obj_updated_on` + FROM + `{field_map['tbl_name']}` + ON DUPLICATE KEY UPDATE + `obj_id` = VALUES(`obj_id`), + `obj_ext_uid` = VALUES(`obj_ext_uid`), + `obj_ext_id` = VALUES(`obj_ext_id`), + `obj_code` = VALUES(`obj_code`), + `obj_type` = VALUES(`obj_type`), + `obj_type_ver_id` = VALUES(`obj_type_ver_id`), + `obj_account_id` = VALUES(`obj_account_id`), + `obj_parent_type` = VALUES(`obj_parent_type`), + `obj_parent_id` = VALUES(`obj_parent_id`), + `obj_passcode` = VALUES(`obj_passcode`), + `obj_name` = VALUES(`obj_name`), + `obj_description` = VALUES(`obj_description`), + `obj_alert` = VALUES(`obj_alert`), + `obj_alert_msg` = VALUES(`obj_alert_msg`), + `obj_status` = VALUES(`obj_status`), + `obj_approve` = VALUES(`obj_approve`), + `obj_approved_on` = VALUES(`obj_approved_on`), + `obj_enable` = VALUES(`obj_enable`), + `obj_enable_on` = VALUES(`obj_enable_on`), + `obj_archive_on` = VALUES(`obj_archive_on`), + `obj_restricted` = VALUES(`obj_restricted`), + `obj_hide` = VALUES(`obj_hide`), + `obj_priority` = VALUES(`obj_priority`), + `obj_sort` = VALUES(`obj_sort`), + `obj_group` = VALUES(`obj_group`), + `obj_ver` = VALUES(`obj_ver`), + `obj_staff_notes` = VALUES(`obj_staff_notes`), + `obj_data_json` = VALUES(`obj_data_json`), + `obj_cfg_json` = VALUES(`obj_cfg_json`), + `obj_meta_json` = VALUES(`obj_meta_json`), + `obj_other_json` = VALUES(`obj_other_json`), + `obj_notes` = VALUES(`obj_notes`), + `obj_created_on` = VALUES(`obj_created_on`), + `obj_updated_on` = VALUES(`obj_updated_on`) + ; + """) + log.debug(sql) + # return False + + # ### SECTION ### Execute the SQL statement + result = run_sql_select(sql, commit=True, log_lvl=logging.DEBUG) + log.info(result.rowcount) + log.debug(result.lastrowid) + + return result diff --git a/static/ae/obj_type_map__account.json b/static/ae/obj_type_map__account.json new file mode 100644 index 0000000..24832b8 --- /dev/null +++ b/static/ae/obj_type_map__account.json @@ -0,0 +1,36 @@ +{ + "tbl_name": "account", + "obj_id": "`id_random`", + "obj_ext_uid": "NULL", + "obj_ext_id": "NULL", + "obj_code": "`code`", + "obj_type_ver_id": "`id`", + "obj_account_id": "NULL", + "obj_parent_type": "NULL", + "obj_parent_id": "NULL", + "obj_passcode": "NULL", + "obj_name": "`name`", + "obj_description": "`description`", + "obj_alert": "NULL", + "obj_alert_msg": "NULL", + "obj_status": "NULL", + "obj_approve": "NULL", + "obj_approved_on": "NULL", + "obj_enable": "`enable`", + "obj_enable_on": "`enable_from`", + "obj_archive_on": "`enable_to`", + "obj_restricted": "NULL", + "obj_hide": "FALSE", + "obj_priority": "NULL", + "obj_sort": "NULL", + "obj_group": "NULL", + "obj_ver": "NULL", + "obj_staff_notes": "NULL", + "obj_data_json": "NULL", + "obj_cfg_json": "NULL", + "obj_meta_json": "NULL", + "obj_other_json": "NULL", + "obj_notes": "`notes`", + "obj_created_on": "`created_on`", + "obj_updated_on": "`updated_on`" +} diff --git a/static/ae/obj_type_map__event.json b/static/ae/obj_type_map__event.json new file mode 100644 index 0000000..3ae3e42 --- /dev/null +++ b/static/ae/obj_type_map__event.json @@ -0,0 +1,36 @@ +{ + "tbl_name": "event", + "obj_id": "`id_random`", + "obj_ext_uid": "NULL", + "obj_ext_id": "NULL", + "obj_code": "`code`", + "obj_type_ver_id": "`id`", + "obj_account_id": "`account_id`", + "obj_parent_type": "'account'", + "obj_parent_id": "`account_id`", + "obj_passcode": "NULL", + "obj_name": "`name`", + "obj_description": "`description`", + "obj_alert": "NULL", + "obj_alert_msg": "NULL", + "obj_status": "NULL", + "obj_approve": "NULL", + "obj_approved_on": "NULL", + "obj_enable": "`enable`", + "obj_enable_on": "`enable_from`", + "obj_archive_on": "`enable_to`", + "obj_restricted": "NULL", + "obj_hide": "`hide`", + "obj_priority": "`priority`", + "obj_sort": "`sort`", + "obj_group": "`group`", + "obj_ver": "NULL", + "obj_staff_notes": "NULL", + "obj_data_json": "NULL", + "obj_cfg_json": "`cfg_json`", + "obj_meta_json": "NULL", + "obj_other_json": "NULL", + "obj_notes": "`notes`", + "obj_created_on": "`created_on`", + "obj_updated_on": "`updated_on`" +} diff --git a/static/ae/obj_type_map__event_presenter.json b/static/ae/obj_type_map__event_presenter.json new file mode 100644 index 0000000..e69de29 diff --git a/static/ae/obj_type_map__event_session.json b/static/ae/obj_type_map__event_session.json new file mode 100644 index 0000000..5db099d --- /dev/null +++ b/static/ae/obj_type_map__event_session.json @@ -0,0 +1,36 @@ +{ + "tbl_name": "v_event_session", + "obj_id": "`id_random`", + "obj_ext_uid": "NULL", + "obj_ext_id": "`external_id`", + "obj_code": "`code`", + "obj_type_ver_id": "`id`", + "obj_account_id": "`account_id`", + "obj_parent_type": "'event'", + "obj_parent_id": "`event_id`", + "obj_passcode": "NULL", + "obj_name": "`name`", + "obj_description": "`description`", + "obj_alert": "`alert`", + "obj_alert_msg": "`alert_msg`", + "obj_status": "`status`", + "obj_approve": "`approve`", + "obj_approved_on": "NULL", + "obj_enable": "`enable`", + "obj_enable_on": "`enable_after_datetime`", + "obj_archive_on": "`enable_before_datetime`", + "obj_restricted": "NULL", + "obj_hide": "`hide`", + "obj_priority": "`priority`", + "obj_sort": "`sort`", + "obj_group": "`group`", + "obj_ver": "NULL", + "obj_staff_notes": "NULL", + "obj_data_json": "NULL", + "obj_cfg_json": "NULL", + "obj_meta_json": "NULL", + "obj_other_json": "NULL", + "obj_notes": "`notes`", + "obj_created_on": "`created_on`", + "obj_updated_on": "`updated_on`" + } diff --git a/static/ae/obj_type_map__hosted_file.json b/static/ae/obj_type_map__hosted_file.json new file mode 100644 index 0000000..cdc0104 --- /dev/null +++ b/static/ae/obj_type_map__hosted_file.json @@ -0,0 +1,36 @@ +{ + "tbl_name": "hosted_file", + "obj_id": "`id_random`", + "obj_ext_uid": "NULL", + "obj_ext_id": "NULL", + "obj_code": "NULL", + "obj_type_ver_id": "`id`", + "obj_account_id": "`account_id`", + "obj_parent_type": "NULL", + "obj_parent_id": "NULL", + "obj_passcode": "NULL", + "obj_name": "`filename`", + "obj_description": "NULL", + "obj_alert": "NULL", + "obj_alert_msg": "NULL", + "obj_status": "NULL", + "obj_approve": "NULL", + "obj_approved_on": "NULL", + "obj_enable": "`enable`", + "obj_enable_on": "NULL", + "obj_archive_on": "NULL", + "obj_restricted": "NULL", + "obj_hide": "`hide`", + "obj_priority": "NULL", + "obj_sort": "NULL", + "obj_group": "NULL", + "obj_ver": "NULL", + "obj_staff_notes": "NULL", + "obj_data_json": "NULL", + "obj_cfg_json": "NULL", + "obj_meta_json": "NULL", + "obj_other_json": "NULL", + "obj_notes": "`notes`", + "obj_created_on": "`created_on`", + "obj_updated_on": "`updated_on`" +} diff --git a/static/ae/obj_type_map__person.json b/static/ae/obj_type_map__person.json new file mode 100644 index 0000000..19d9933 --- /dev/null +++ b/static/ae/obj_type_map__person.json @@ -0,0 +1,36 @@ +{ + "tbl_name": "person", + "obj_id": "`id_random`", + "obj_ext_uid": "`external_sys_id`", + "obj_ext_id": "`external_id`", + "obj_code": "`primary_email`", + "obj_type_ver_id": "`id`", + "obj_account_id": "`account_id`", + "obj_parent_type": "NULL", + "obj_parent_id": "NULL", + "obj_passcode": "`passcode`", + "obj_name": "`full_name`", + "obj_description": "`description`", + "obj_alert": "NULL", + "obj_alert_msg": "NULL", + "obj_status": "NULL", + "obj_approve": "NULL", + "obj_approved_on": "NULL", + "obj_enable": "`enable`", + "obj_enable_on": "NULL", + "obj_archive_on": "NULL", + "obj_restricted": "NULL", + "obj_hide": "`hide`", + "obj_priority": "`priority`", + "obj_sort": "`sort`", + "obj_group": "`group`", + "obj_ver": "NULL", + "obj_staff_notes": "NULL", + "obj_data_json": "NULL", + "obj_cfg_json": "NULL", + "obj_meta_json": "NULL", + "obj_other_json": "NULL", + "obj_notes": "`notes`", + "obj_created_on": "`created_on`", + "obj_updated_on": "`updated_on`" +} diff --git a/static/ae/obj_type_map__site.json b/static/ae/obj_type_map__site.json new file mode 100644 index 0000000..3a3781d --- /dev/null +++ b/static/ae/obj_type_map__site.json @@ -0,0 +1,36 @@ +{ + "tbl_name": "site", + "obj_id": "`id_random`", + "obj_ext_uid": "NULL", + "obj_ext_id": "NULL", + "obj_code": "`code`", + "obj_type_ver_id": "`id`", + "obj_account_id": "`account_id`", + "obj_parent_type": "NULL", + "obj_parent_id": "NULL", + "obj_passcode": "NULL", + "obj_name": "`name`", + "obj_description": "`description`", + "obj_alert": "NULL", + "obj_alert_msg": "NULL", + "obj_status": "NULL", + "obj_approve": "NULL", + "obj_approved_on": "NULL", + "obj_enable": "`enable`", + "obj_enable_on": "`enable_from`", + "obj_archive_on": "`enable_to`", + "obj_restricted": "NULL", + "obj_hide": "`hide`", + "obj_priority": "NULL", + "obj_sort": "NULL", + "obj_group": "NULL", + "obj_ver": "NULL", + "obj_staff_notes": "NULL", + "obj_data_json": "NULL", + "obj_cfg_json": "`cfg_json`", + "obj_meta_json": "NULL", + "obj_other_json": "NULL", + "obj_notes": "`notes`", + "obj_created_on": "`created_on`", + "obj_updated_on": "`updated_on`" +} diff --git a/static/ae/obj_type_map__site_domain.json b/static/ae/obj_type_map__site_domain.json new file mode 100644 index 0000000..9a8b5da --- /dev/null +++ b/static/ae/obj_type_map__site_domain.json @@ -0,0 +1,36 @@ +{ + "tbl_name": "site_domain", + "obj_id": "`id_random`", + "obj_ext_uid": "NULL", + "obj_ext_id": "NULL", + "obj_code": "NULL", + "obj_type_ver_id": "`id`", + "obj_account_id": "NULL", + "obj_parent_type": "'site'", + "obj_parent_id": "`site_id`", + "obj_passcode": "NULL", + "obj_name": "`fqdn`", + "obj_description": "NULL", + "obj_alert": "NULL", + "obj_alert_msg": "NULL", + "obj_status": "NULL", + "obj_approve": "NULL", + "obj_approved_on": "NULL", + "obj_enable": "`enable`", + "obj_enable_on": "NULL", + "obj_archive_on": "NULL", + "obj_restricted": "NULL", + "obj_hide": "NULL", + "obj_priority": "NULL", + "obj_sort": "NULL", + "obj_group": "NULL", + "obj_ver": "NULL", + "obj_staff_notes": "NULL", + "obj_data_json": "NULL", + "obj_cfg_json": "NULL", + "obj_meta_json": "NULL", + "obj_other_json": "NULL", + "obj_notes": "NULL", + "obj_created_on": "`created_on`", + "obj_updated_on": "`updated_on`" +} diff --git a/static/ae/obj_type_map__user.json b/static/ae/obj_type_map__user.json new file mode 100644 index 0000000..cdc0104 --- /dev/null +++ b/static/ae/obj_type_map__user.json @@ -0,0 +1,36 @@ +{ + "tbl_name": "hosted_file", + "obj_id": "`id_random`", + "obj_ext_uid": "NULL", + "obj_ext_id": "NULL", + "obj_code": "NULL", + "obj_type_ver_id": "`id`", + "obj_account_id": "`account_id`", + "obj_parent_type": "NULL", + "obj_parent_id": "NULL", + "obj_passcode": "NULL", + "obj_name": "`filename`", + "obj_description": "NULL", + "obj_alert": "NULL", + "obj_alert_msg": "NULL", + "obj_status": "NULL", + "obj_approve": "NULL", + "obj_approved_on": "NULL", + "obj_enable": "`enable`", + "obj_enable_on": "NULL", + "obj_archive_on": "NULL", + "obj_restricted": "NULL", + "obj_hide": "`hide`", + "obj_priority": "NULL", + "obj_sort": "NULL", + "obj_group": "NULL", + "obj_ver": "NULL", + "obj_staff_notes": "NULL", + "obj_data_json": "NULL", + "obj_cfg_json": "NULL", + "obj_meta_json": "NULL", + "obj_other_json": "NULL", + "obj_notes": "`notes`", + "obj_created_on": "`created_on`", + "obj_updated_on": "`updated_on`" +} diff --git a/static/ae/obj_type_maps.json b/static/ae/obj_type_maps.json new file mode 100644 index 0000000..6c01418 --- /dev/null +++ b/static/ae/obj_type_maps.json @@ -0,0 +1,218 @@ +{ +"account": { + "tbl_name": "account", + "obj_id": "`id_random`", + "obj_ext_uid": "NULL", + "obj_ext_id": "NULL", + "obj_code": "`code`", + "obj_type_ver_id": "`id`", + "obj_account_id": "NULL", + "obj_parent_type": "NULL", + "obj_parent_id": "NULL", + "obj_passcode": "NULL", + "obj_name": "`name`", + "obj_description": "`description`", + "obj_alert": "NULL", + "obj_alert_msg": "NULL", + "obj_status": "NULL", + "obj_approve": "NULL", + "obj_approved_on": "NULL", + "obj_enable": "`enable`", + "obj_enable_on": "`enable_from`", + "obj_archive_on": "`enable_to`", + "obj_restricted": "NULL", + "obj_hide": "FALSE", + "obj_priority": "NULL", + "obj_sort": "NULL", + "obj_group": "NULL", + "obj_ver": "NULL", + "obj_staff_notes": "NULL", + "obj_data_json": "NULL", + "obj_cfg_json": "NULL", + "obj_meta_json": "NULL", + "obj_other_json": "NULL", + "obj_notes": "`notes`", + "obj_created_on": "`created_on`", + "obj_updated_on": "`updated_on`" + }, +"user": { + "tbl_name": "user", + "obj_id": "`id_random`", + "obj_ext_uid": "NULL", + "obj_ext_id": "NULL", + "obj_code": "`email`", + "obj_type_ver_id": "`id`", + "obj_account_id": "NULL", + "obj_parent_type": "NULL", + "obj_parent_id": "NULL", + "obj_passcode": "`auth_key`", + "obj_name": "`name`", + "obj_description": "`description`", + "obj_alert": "NULL", + "obj_alert_msg": "NULL", + "obj_status": "NULL", + "obj_approve": "NULL", + "obj_approved_on": "NULL", + "obj_enable": "`enable`", + "obj_enable_on": "`enable_from`", + "obj_archive_on": "`enable_to`", + "obj_restricted": "NULL", + "obj_hide": "FALSE", + "obj_priority": "NULL", + "obj_sort": "NULL", + "obj_group": "NULL", + "obj_ver": "NULL", + "obj_staff_notes": "NULL", + "obj_data_json": "NULL", + "obj_cfg_json": "NULL", + "obj_meta_json": "NULL", + "obj_other_json": "NULL", + "obj_notes": "`notes`", + "obj_created_on": "`created_on`", + "obj_updated_on": "`updated_on`" + }, +"hosted_file": { + "tbl_name": "hosted_file", + "obj_id": "`id_random`", + "obj_ext_uid": "NULL", + "obj_ext_id": "NULL", + "obj_code": "NULL", + "obj_type_ver_id": "`id`", + "obj_account_id": "`account_id`", + "obj_parent_type": "NULL", + "obj_parent_id": "NULL", + "obj_passcode": "NULL", + "obj_name": "`filename`", + "obj_description": "NULL", + "obj_alert": "NULL", + "obj_alert_msg": "NULL", + "obj_status": "NULL", + "obj_approve": "NULL", + "obj_approved_on": "NULL", + "obj_enable": "`enable`", + "obj_enable_on": "NULL", + "obj_archive_on": "NULL", + "obj_restricted": "NULL", + "obj_hide": "`hide`", + "obj_priority": "NULL", + "obj_sort": "NULL", + "obj_group": "NULL", + "obj_ver": "NULL", + "obj_staff_notes": "NULL", + "obj_data_json": "NULL", + "obj_cfg_json": "NULL", + "obj_meta_json": "NULL", + "obj_other_json": "NULL", + "obj_notes": "`notes`", + "obj_created_on": "`created_on`", + "obj_updated_on": "`updated_on`" + }, +"person": { + "tbl_name": "person", + "obj_id": "`id_random`", + "obj_ext_uid": "`external_sys_id`", + "obj_ext_id": "`external_id`", + "obj_code": "`primary_email`", + "obj_type_ver_id": "`id`", + "obj_account_id": "`account_id`", + "obj_parent_type": "NULL", + "obj_parent_id": "NULL", + "obj_passcode": "`passcode`", + "obj_name": "`full_name`", + "obj_description": "`description`", + "obj_alert": "NULL", + "obj_alert_msg": "NULL", + "obj_status": "NULL", + "obj_approve": "NULL", + "obj_approved_on": "NULL", + "obj_enable": "`enable`", + "obj_enable_on": "NULL", + "obj_archive_on": "NULL", + "obj_restricted": "NULL", + "obj_hide": "`hide`", + "obj_priority": "`priority`", + "obj_sort": "`sort`", + "obj_group": "`group`", + "obj_ver": "NULL", + "obj_staff_notes": "NULL", + "obj_data_json": "NULL", + "obj_cfg_json": "NULL", + "obj_meta_json": "NULL", + "obj_other_json": "NULL", + "obj_notes": "`notes`", + "obj_created_on": "`created_on`", + "obj_updated_on": "`updated_on`" + }, +"event": { + "tbl_name": "event", + "obj_id": "`id_random`", + "obj_ext_uid": "NULL", + "obj_ext_id": "NULL", + "obj_code": "`code`", + "obj_type_ver_id": "`id`", + "obj_account_id": "`account_id`", + "obj_parent_type": "'account'", + "obj_parent_id": "`account_id`", + "obj_passcode": "NULL", + "obj_name": "`name`", + "obj_description": "`description`", + "obj_alert": "NULL", + "obj_alert_msg": "NULL", + "obj_status": "NULL", + "obj_approve": "NULL", + "obj_approved_on": "NULL", + "obj_enable": "`enable`", + "obj_enable_on": "`enable_from`", + "obj_archive_on": "`enable_to`", + "obj_restricted": "NULL", + "obj_hide": "`hide`", + "obj_priority": "`priority`", + "obj_sort": "`sort`", + "obj_group": "`group`", + "obj_ver": "NULL", + "obj_staff_notes": "NULL", + "obj_data_json": "NULL", + "obj_cfg_json": "`cfg_json`", + "obj_meta_json": "NULL", + "obj_other_json": "NULL", + "obj_notes": "`notes`", + "obj_created_on": "`created_on`", + "obj_updated_on": "`updated_on`" + }, +"event_session": { + "tbl_name": "v_event_session", + "obj_id": "`id_random`", + "obj_ext_uid": "NULL", + "obj_ext_id": "`external_id`", + "obj_code": "`code`", + "obj_type_ver_id": "`id`", + "obj_account_id": "`account_id`", + "obj_parent_type": "'event'", + "obj_parent_id": "`event_id`", + "obj_passcode": "NULL", + "obj_name": "`name`", + "obj_description": "`description`", + "obj_alert": "`alert`", + "obj_alert_msg": "`alert_msg`", + "obj_status": "`status`", + "obj_approve": "`approve`", + "obj_approved_on": "NULL", + "obj_enable": "`enable`", + "obj_enable_on": "`enable_after_datetime`", + "obj_archive_on": "`enable_before_datetime`", + "obj_restricted": "NULL", + "obj_hide": "`hide`", + "obj_priority": "`priority`", + "obj_sort": "`sort`", + "obj_group": "`group`", + "obj_ver": "NULL", + "obj_staff_notes": "NULL", + "obj_data_json": "NULL", + "obj_cfg_json": "NULL", + "obj_meta_json": "NULL", + "obj_other_json": "NULL", + "obj_notes": "`notes`", + "obj_created_on": "`created_on`", + "obj_updated_on": "`updated_on`" + } +} \ No newline at end of file