Documentation Archive: Retire static SQL snapshots and legacy logs

- Archived 'aether_sql_tables' and 'legacy_router_logs' to documentation/archive/.
- Static schema documentation is now superseded by the 'ae_obj_info' MCP tool and shared agents_sync metadata.
This commit is contained in:
Scott Idem
2026-01-28 12:33:20 -05:00
parent 860cf80a4e
commit 0f8c5dc825
50 changed files with 0 additions and 0 deletions

View File

@@ -0,0 +1,24 @@
# Router: __init__
**File:** app/routers/__init__.py
**Routes found:** 0
**Functions:** 0 —
**Classes:** 0 —
## Routes
- (no @router.<method> decorators found)
## File preview (first 20 lines)
```python
```

View File

@@ -0,0 +1,78 @@
# Router: activity_log
**File:** app/routers/activity_log.py
**Routes found:** 6
**Functions:** 0 —
**Classes:** 0 —
## Routes
- **POST** `/activity_log`
- **PATCH** `/activity_log/{activity_log_id}`
- **GET** `/activity_log/list`
- **GET** `/activity_log/{obj_id}`
- **GET** `/account/{account_id}/activity_log/list`
- **DELETE** `/activity_log/{obj_id}`
## From-imports
- app.config
- app.db_sql
- app.lib_general
- app.methods.activity_log_methods
- app.models.activity_log_models
- app.models.response_models
- app.routers.api_crud
- fastapi
- pydantic
- typing
## File preview (first 20 lines)
```python
import datetime
#from datetime import datetime, time, timedelta
from fastapi import APIRouter, Body, Depends, Header, HTTPException, Path, Query, Response, status
from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union
from app.lib_general import log, logging
#from ..log import *
from app.config import settings
from app.db_sql import *
from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.methods.activity_log_methods import get_activity_log_rec_list, load_activity_log_obj
from app.models.activity_log_models import Activity_Log_Base
from app.models.response_models import *
router = APIRouter()
```

View File

@@ -0,0 +1,76 @@
# Router: address
**File:** app/routers/address.py
**Routes found:** 5
**Functions:** 0 —
**Classes:** 0 —
## Routes
- **PATCH** `/{address_obj_id}`
- **PATCH** `/{address_id}/json`
- **GET** `/list`
- **GET** `/{obj_id}`
- **DELETE** `/{obj_id}`
## From-imports
- app.config
- app.db_sql
- app.lib_general
- app.methods.address_methods
- app.models.address_models
- app.models.response_models
- app.routers.api_crud
- fastapi
- pydantic
- typing
## File preview (first 20 lines)
```python
import datetime
from fastapi import APIRouter, Body, Depends, Header, HTTPException, Path, Query, Response, status
from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union
from app.lib_general import log, logging
from app.config import settings
from app.db_sql import *
from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.methods.address_methods import load_address_obj, update_address_obj
from app.models.address_models import Address_Base
from app.models.response_models import *
router = APIRouter()
```

View File

@@ -0,0 +1,68 @@
# Router: agent_bridge
**File:** app/routers/agent_bridge.py
**Routes found:** 6
**Functions:** 1 — is_admin
**Classes:** 0 —
## Routes
- **GET** `/status`
- **GET** `/system/usage`
- **GET** `/logs`
- **GET** `/logs/list`
- **GET** `/processes`
- **GET** `/container/metadata`
## From-imports
- app.lib_general_v3
- app.models.response_models
- datetime
- fastapi
- typing
## File preview (first 20 lines)
```python
from fastapi import APIRouter, Depends, HTTPException, Query
import os
import platform
import json
import shutil
from typing import Dict, Any, List, Optional
from datetime import datetime
from app.lib_general_v3 import AccountContext, get_account_context
from app.models.response_models import Resp_Body_Base, mk_resp
router = APIRouter()
def is_admin(account: AccountContext):
if account.auth_method == 'bypass':
return True
if getattr(account, "administrator", False) or getattr(account, "manager", False):
return True
return False
```

View File

@@ -0,0 +1,72 @@
# Router: api_crud_v3_nested
**File:** app/routers/api_crud_v3_nested.py
**Routes found:** 5
**Functions:** 0 —
**Classes:** 0 —
## Routes
- **GET** `/{parent_obj_type}/{parent_obj_id}/{child_obj_type}/`
- **POST** `/{parent_obj_type}/{parent_obj_id}/{child_obj_type}/`
- **GET** `/{parent_obj_type}/{parent_obj_id}/{child_obj_type}/{child_obj_id}`
- **PATCH** `/{parent_obj_type}/{parent_obj_id}/{child_obj_type}/{child_obj_id}`
- **DELETE** `/{parent_obj_type}/{parent_obj_id}/{child_obj_type}/{child_obj_id}`
## From-imports
- app.ae_obj_types_def
- app.db_sql
- app.lib_api_crud_v3
- app.lib_general_v3
- app.models.response_models
- fastapi
- pydantic
- typing
## File preview (first 20 lines)
```python
from fastapi import APIRouter, Depends, Path, Query, Request, Response, Header
from pydantic import ValidationError
from typing import Optional, Union
import asyncio
import logging
log = logging.getLogger(__name__)
from app.lib_general_v3 import (
AccountContext, get_account_context,
PaginationParams, StatusFilterParams,
SerializationParams, DelayParams
)
from app.lib_api_crud_v3 import (
check_account_access, apply_forced_account_filter, filter_order_by,
get_supported_filters, safe_json_loads, sanitize_payload, format_db_error
)
from app.db_sql import get_last_sql_error
from app.models.response_models import *
from app.ae_obj_types_def import obj_type_kv_li
```

View File

@@ -0,0 +1,80 @@
# Router: archive
**File:** app/routers/archive.py
**Routes found:** 6
**Functions:** 0 —
**Classes:** 0 —
## Routes
- **POST** `/archive`
- **PATCH** `/archive/{obj_id}`
- **GET** `/archive/list`
- **GET** `/archive/{archive_id}`
- **GET** `/archive/{obj_id}`
- **DELETE** `/archive/{obj_id}`
## From-imports
- ..log
- .api_crud
- app.config
- app.db_sql
- app.lib_general
- app.methods.archive_methods
- app.models.archive_models
- app.models.response_models
- fastapi
- pydantic
- typing
## File preview (first 20 lines)
```python
import datetime
#from datetime import datetime, time, timedelta
from fastapi import APIRouter, Body, Depends, Header, HTTPException, Path, Query, Response, status
from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union
from app.lib_general import *
from ..log import *
from app.config import settings
from app.db_sql import *
from .api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.methods.archive_methods import load_archive_obj
from app.models.archive_models import Archive_Base
from app.models.response_models import *
router = APIRouter()
```

View File

@@ -0,0 +1,76 @@
# Router: archive_content
**File:** app/routers/archive_content.py
**Routes found:** 5
**Functions:** 0 —
**Classes:** 0 —
## Routes
- **PATCH** `/{obj_id}`
- **GET** `/list`
- **GET** `/{obj_id}`
- **DELETE** `/{obj_id}`
- **DELETE** `/{archive_content_id}`
## From-imports
- ..log
- .api_crud
- app.config
- app.db_sql
- app.lib_general
- app.models.archive_content_models
- app.models.response_models
- fastapi
- pydantic
- typing
## File preview (first 20 lines)
```python
import datetime
#from datetime import datetime, time, timedelta
from fastapi import APIRouter, Body, Depends, Header, HTTPException, Path, Query, Response, status
from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union
from app.lib_general import *
from ..log import *
from app.config import settings
from app.db_sql import *
from .api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.models.archive_content_models import Archive_Content_Base
from app.models.response_models import *
router = APIRouter()
```

View File

@@ -0,0 +1,80 @@
# Router: cont_edu_cert
**File:** app/routers/cont_edu_cert.py
**Routes found:** 7
**Functions:** 0 —
**Classes:** 0 —
## Routes
- **POST** `/cont_edu/cert`
- **PATCH** `/cont_edu/cert/{obj_id}`
- **PATCH** `/cont_edu/cert/{cont_edu_cert_id}/json`
- **GET** `/cont_edu/cert/list`
- **GET** `/cont_edu/cert/{obj_id}`
- **GET** `/account/{account_id}/cont_edu/cert/list`
- **DELETE** `/cont_edu/cert/{obj_id}`
## From-imports
- app.config
- app.db_sql
- app.lib_general
- app.methods.cont_edu_cert_methods
- app.models.cont_edu_cert_models
- app.models.response_models
- app.routers.api_crud
- fastapi
- pydantic
- typing
## File preview (first 20 lines)
```python
import datetime
from fastapi import APIRouter, Body, Depends, Header, HTTPException, Path, Query, Response, status
from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union
from app.lib_general import log, logging
from app.config import settings
from app.db_sql import sql_insert, sql_update, sql_insert_or_update, sql_select, sql_delete, redis_lookup_id_random
from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.methods.cont_edu_cert_methods import get_cont_edu_cert_rec_list, load_cont_edu_cert_obj
from app.models.cont_edu_cert_models import Cont_Edu_Cert_Base
from app.models.response_models import *
router = APIRouter()
```

View File

@@ -0,0 +1,86 @@
# Router: cont_edu_cert_person
**File:** app/routers/cont_edu_cert_person.py
**Routes found:** 10
**Functions:** 0 —
**Classes:** 0 —
## Routes
- **POST** `/cont_edu/cert/person`
- **PATCH** `/cont_edu/cert/person/{obj_id}`
- **PATCH** `/cont_edu/cert/person/{cont_edu_cert_person_id}/json`
- **GET** `/cont_edu/cert/person/list`
- **GET** `/cont_edu/cert/person/search`
- **GET** `/cont_edu/cert/person/{cont_edu_cert_person_id}`
- **GET** `/account/{account_id}/cont_edu/cert/person/list`
- **GET** `/person/{person_id}/cont_edu/cert/person/list`
- **GET** `/cont_edu/cert/{cont_edu_cert_id}/cont_edu/cert/person/list`
- **DELETE** `/cont_edu/cert/person/{obj_id}`
## From-imports
- app.config
- app.db_sql
- app.lib_general
- app.methods.cont_edu_cert_person_methods
- app.models.cont_edu_cert_person_models
- app.models.response_models
- app.routers.api_crud
- fastapi
- pydantic
- typing
## File preview (first 20 lines)
```python
import datetime
from fastapi import APIRouter, Body, Depends, Header, HTTPException, Path, Query, Response, status
from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union
from app.lib_general import log, logging
from app.config import settings
from app.db_sql import sql_insert, sql_update, sql_insert_or_update, sql_select, sql_delete, redis_lookup_id_random
from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.methods.cont_edu_cert_person_methods import get_cont_edu_cert_person_rec_list, load_cont_edu_cert_person_obj
from app.models.cont_edu_cert_person_models import Cont_Edu_Cert_Person_Base
from app.models.response_models import *
router = APIRouter()
```

View File

@@ -0,0 +1,80 @@
# Router: contact
**File:** app/routers/contact.py
**Routes found:** 7
**Functions:** 0 —
**Classes:** 0 —
## Routes
- **PATCH** `/{obj_id}`
- **POST** `/new_v4`
- **PATCH** `/{contact_id}/exist_v4`
- **PATCH** `/{contact_id}/json`
- **GET** `/list`
- **GET** `/{obj_id}`
- **DELETE** `/{obj_id}`
## From-imports
- app.config
- app.db_sql
- app.lib_general
- app.methods.contact_methods
- app.models.contact_models
- app.models.response_models
- app.routers.api_crud
- fastapi
- pydantic
- typing
## File preview (first 20 lines)
```python
import datetime
from fastapi import APIRouter, Body, Depends, Header, HTTPException, Path, Query, Response, status
from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union
from app.lib_general import log, logging
from app.config import settings
from app.db_sql import get_id_random, sql_insert, sql_update, sql_insert_or_update, sql_select, sql_delete, redis_lookup_id_random
from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.methods.contact_methods import create_update_contact_obj_v4, load_contact_obj, update_contact_obj
from app.models.contact_models import Contact_Base
from app.models.response_models import *
router = APIRouter()
```

View File

@@ -0,0 +1,53 @@
# Router: dependencies_v3
**File:** app/routers/dependencies_v3.py
**Routes found:** 0
**Functions:** 2 — get_account_context_optional, get_account_context
**Classes:** 4 — PaginationParams, StatusFilterParams, SerializationParams, DelayParams
## Routes
- (no @router.<method> decorators found)
## From-imports
- app.models.auth_models
- fastapi
- typing
## File preview (first 20 lines)
```python
from fastapi import Depends, Header, HTTPException, Query, Response, status
from typing import Optional, Union
import logging
import asyncio
from app.models.auth_models import AccountContext
log = logging.getLogger(__name__)
# --- Account Context Dependencies ---
def get_account_context_optional(
x_account_id: Optional[str] = Header(None, min_length=11, max_length=22),
x_no_account_id: Optional[str] = Header(None, min_length=3, max_length=100),
x_no_account_id_token: Optional[str] = Query(None, alias='jwt', min_length=11),
x_aether_api_key: Optional[str] = Header(None, min_length=11, max_length=22),
) -> AccountContext:
"""
Resolves the account context and enforces API Key validation.
Uses DEFERRED imports to prevent circular dependency at startup.
```

View File

@@ -0,0 +1,76 @@
# Router: event_abstract
**File:** app/routers/event_abstract.py
**Routes found:** 5
**Functions:** 0 —
**Classes:** 0 —
## Routes
- **POST** `/event/abstract`
- **PATCH** `/event/abstract/{event_abstract_id}`
- **GET** `/event/abstract/{event_abstract_id}`
- **GET** `/event/{event_id}/event/abstract/list`
- **DELETE** `/event/abstract/{event_abstract_id}`
## From-imports
- app.config
- app.db_sql
- app.lib_general
- app.methods.event_abstract_methods
- app.models.event_abstract_models
- app.models.response_models
- app.routers.api_crud
- fastapi
- pydantic
- typing
## File preview (first 20 lines)
```python
import datetime, json
from fastapi import APIRouter, Body, Depends, Header, HTTPException, Path, Query, Response, status
from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union
from app.lib_general import log, logging, common_route_params, Common_Route_Params
from app.config import settings
from app.db_sql import sql_insert, sql_update, sql_insert_or_update, sql_select, sql_delete, get_id_random, redis_lookup_id_random
from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.methods.event_abstract_methods import create_update_event_abstract_obj, load_event_abstract_obj, get_event_abstract_rec_list, remove_event_abstract_obj
from app.models.event_abstract_models import Event_Abstract_In
from app.models.response_models import Resp_Body_Base, mk_resp
router = APIRouter()
```

View File

@@ -0,0 +1,92 @@
# Router: event_person
**File:** app/routers/event_person.py
**Routes found:** 8
**Functions:** 0 —
**Classes:** 0 —
## Routes
- **POST** `/v4/event/person/new`
- **PATCH** `/v4/event/person/{event_person_id}/exist`
- **POST** `/v2/event/person/new`
- **PATCH** `/event/person/{event_person_id}/json`
- **GET** `/event/person/{event_person_id}`
- **GET** `/event/{event_id}/person/search`
- **GET** `/event/registration/{event_registration_id}/event/person/list`
- **GET** `/person/{person_id}/event/person/list`
## From-imports
- app.config
- app.db_sql
- app.lib_general
- app.methods.event_person_methods
- app.methods.person_methods
- app.methods.user_methods
- app.models.common_field_schema
- app.models.event_person_models
- app.models.person_models
- app.models.response_models
- app.models.user_models
- app.routers.api_crud
- fastapi
- pydantic
- typing
## File preview (first 20 lines)
```python
import datetime, secrets
from fastapi import APIRouter, Body, Depends, Header, HTTPException, Path, Query, Response, status
from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union
from app.lib_general import log, logging
from app.config import settings
from app.db_sql import sql_insert, sql_update, sql_insert_or_update, sql_select, sql_delete, get_id_random, redis_lookup_id_random
from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.methods.event_person_methods import create_event_person_obj, create_update_event_person_obj_v4, get_event_person_rec_list, load_event_person_obj, update_event_person_obj, update_event_person_obj_v3
from app.methods.person_methods import create_person_obj_v3, load_person_obj, update_person_obj
from app.methods.user_methods import create_user_obj, load_user_obj, update_user_obj
# from app.methods.user_load_methods import load_user_obj
from app.models.common_field_schema import default_num_bytes
from app.models.event_person_models import Event_Person_New_Base, Event_Person_Base
from app.models.person_models import Person_Base
from app.models.response_models import Resp_Body_Base, mk_resp
```

View File

@@ -0,0 +1,72 @@
# Router: event_person_detail
**File:** app/routers/event_person_detail.py
**Routes found:** 4
**Functions:** 0 —
**Classes:** 0 —
## Routes
- **PATCH** `/{obj_id}`
- **GET** `/list`
- **GET** `/{obj_id}`
- **DELETE** `/{obj_id}`
## From-imports
- app.config
- app.db_sql
- app.lib_general
- app.models.event_person_detail_models
- app.models.response_models
- app.routers.api_crud
- fastapi
- pydantic
- typing
## File preview (first 20 lines)
```python
import datetime
#from datetime import datetime, time, timedelta
from fastapi import APIRouter, Body, Depends, Header, HTTPException, Path, Query, Response, status
from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union
from app.lib_general import log, logging
#from ..log import *
from app.config import settings
from app.db_sql import *
from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.models.event_person_detail_models import Event_Person_Detail_Base
from app.models.response_models import *
router = APIRouter()
```

View File

@@ -0,0 +1,80 @@
# Router: event_person_tracking
**File:** app/routers/event_person_tracking.py
**Routes found:** 7
**Functions:** 0 —
**Classes:** 0 —
## Routes
- **POST** `/event/person/tracking`
- **PATCH** `/event/person/tracking/{event_person_tracking_id}`
- **GET** `/event/person/tracking/list`
- **GET** `/event/person/tracking/{obj_id}`
- **GET** `/event/person/{event_person_id}/tracking/list`
- **GET** `/event/session/{event_session_id}/event/person/tracking/list`
- **DELETE** `/event/person/tracking/{obj_id}`
## From-imports
- app.config
- app.db_sql
- app.lib_general
- app.methods.event_person_tracking_methods
- app.models.event_person_tracking_models
- app.models.response_models
- app.routers.api_crud
- fastapi
- pydantic
- typing
## File preview (first 20 lines)
```python
import datetime
#from datetime import datetime, time, timedelta
from fastapi import APIRouter, Body, Depends, Header, HTTPException, Path, Query, Response, status
from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union
from app.lib_general import log, logging
from app.config import settings
from app.db_sql import sql_insert, sql_update, sql_insert_or_update, sql_select, sql_delete, get_id_random,redis_lookup_id_random
from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.methods.event_person_tracking_methods import get_event_person_tracking_rec_list, load_event_person_tracking_obj
from app.models.event_person_tracking_models import Event_Person_Tracking_Base
from app.models.response_models import *
router = APIRouter()
```

View File

@@ -0,0 +1,76 @@
# Router: event_registration
**File:** app/routers/event_registration.py
**Routes found:** 4
**Functions:** 0 —
**Classes:** 0 —
## Routes
- **PATCH** `/{obj_id}`
- **GET** `/list`
- **GET** `/{event_registration_id}`
- **DELETE** `/{obj_id}`
## From-imports
- ..log
- .api_crud
- app.config
- app.db_sql
- app.lib_general
- app.methods.event_registration_methods
- app.models.event_registration_models
- app.models.response_models
- fastapi
- pydantic
- typing
## File preview (first 20 lines)
```python
import datetime
#from datetime import datetime, time, timedelta
from fastapi import APIRouter, Body, Depends, Header, HTTPException, Path, Query, Response, status
from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union
from app.lib_general import *
from ..log import *
from app.config import settings
from app.db_sql import *
from .api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.methods.event_registration_methods import load_event_registration_obj
from app.models.event_registration_models import Event_Registration_Base
from app.models.response_models import *
router = APIRouter()
```

View File

@@ -0,0 +1,66 @@
# Router: event_reports
**File:** app/routers/event_reports.py
**Routes found:** 1
**Functions:** 0 —
**Classes:** 0 —
## Routes
- **GET** `/event/{event_id}/rpt_presenter_links`
## From-imports
- app.config
- app.db_sql
- app.lib_general
- app.methods.event_presenter_methods
- app.models.response_models
- app.routers.api_crud
- fastapi
- pydantic
- typing
## File preview (first 20 lines)
```python
import datetime
from fastapi import APIRouter, Body, Depends, Header, HTTPException, Path, Query, Response, status
from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union
from app.lib_general import log, logging, common_route_params, Common_Route_Params
from app.config import settings
from app.db_sql import sql_insert, sql_update, sql_insert_or_update, sql_select, sql_delete, get_id_random, redis_lookup_id_random
from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.methods.event_presenter_methods import get_event_presenter_url_list
from app.models.response_models import Resp_Body_Base, mk_resp
router = APIRouter()
# ### BEGIN ### API Event Reports ### event_id_rpt_presenter_links() ###
```

View File

@@ -0,0 +1,68 @@
# Router: fundraising
**File:** app/routers/fundraising.py
**Routes found:** 1
**Functions:** 0 —
**Classes:** 0 —
## Routes
- **GET** `/account/{account_id}/fundraising/list`
## From-imports
- app.config
- app.db_sql
- app.lib_general
- app.methods.fundraising_methods
- app.models.fundraising_models
- app.models.response_models
- app.routers.api_crud
- fastapi
- pydantic
- typing
## File preview (first 20 lines)
```python
import datetime, time
from fastapi import APIRouter, Body, Depends, Header, HTTPException, Path, Query, Response, status
from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union
from app.lib_general import log, logging, secure_hash_string, verify_secure_hash_string, common_route_params, Common_Route_Params
from app.config import settings
from app.db_sql import sql_insert, sql_update, sql_insert_or_update, sql_select, sql_delete, redis_lookup_id_random
from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.methods.fundraising_methods import get_fundraising_rec_list, load_fundraising_obj
# from app.methods.fundraising_cfg_methods import load_fundraising_cfg_obj
from app.models.fundraising_models import Fundraising_Base
from app.models.response_models import Resp_Body_Base, mk_resp
router = APIRouter()
```

View File

@@ -0,0 +1,76 @@
# Router: grant
**File:** app/routers/grant.py
**Routes found:** 5
**Functions:** 0 —
**Classes:** 0 —
## Routes
- **POST** `/grant`
- **PATCH** `/grant/{grant_id}`
- **GET** `/grant/{grant_id}`
- **GET** `/event/{event_id}/grant/list`
- **DELETE** `/grant/{grant_id}`
## From-imports
- app.config
- app.db_sql
- app.lib_general
- app.methods.grant_methods
- app.models.grant_models
- app.models.response_models
- app.routers.api_crud
- fastapi
- pydantic
- typing
## File preview (first 20 lines)
```python
import datetime, json
from fastapi import APIRouter, Body, Depends, Header, HTTPException, Path, Query, Response, status
from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union
from app.lib_general import log, logging, common_route_params, Common_Route_Params
from app.config import settings
from app.db_sql import sql_insert, sql_update, sql_insert_or_update, sql_select, sql_delete, get_id_random, redis_lookup_id_random
from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.methods.grant_methods import create_update_grant_obj, load_grant_obj, get_grant_rec_list
# from app.methods.grant_methods import create_update_grant_obj, load_grant_obj, get_grant_rec_list, remove_grant_obj
from app.models.grant_models import Grant_In
from app.models.response_models import Resp_Body_Base, mk_resp
router = APIRouter()
```

View File

@@ -0,0 +1,74 @@
# Router: log_client_viewing
**File:** app/routers/log_client_viewing.py
**Routes found:** 4
**Functions:** 0 —
**Classes:** 0 —
## Routes
- **POST** `/log/client_viewing`
- **PATCH** `/log/client_viewing/{obj_id}`
- **GET** `/account/{account_id}/log/client_viewing/list`
- **DELETE** `/log/client_viewing/{log_client_viewing_obj_id}`
## From-imports
- app.config
- app.db_sql
- app.lib_general
- app.methods.log_client_viewing_methods
- app.models.log_client_viewing_models
- app.models.response_models
- app.routers.api_crud
- fastapi
- pydantic
- typing
## File preview (first 20 lines)
```python
import datetime, pytz, time
from fastapi import APIRouter, Body, Depends, Header, HTTPException, Path, Query, Response, status
from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union
from app.lib_general import log, logging
from app.config import settings
from app.db_sql import sql_insert, sql_update, sql_insert_or_update, sql_select, sql_delete, redis_lookup_id_random
from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.methods.log_client_viewing_methods import get_log_client_viewing_rec_list, load_log_client_viewing_obj
from app.models.log_client_viewing_models import Log_Client_Viewing_Base
from app.models.response_models import Resp_Body_Base, mk_resp
router = APIRouter()
```

View File

@@ -0,0 +1,66 @@
# Router: membership_cfg
**File:** app/routers/membership_cfg.py
**Routes found:** 1
**Functions:** 0 —
**Classes:** 0 —
## Routes
- **GET** `/account/{account_id}/membership/cfg`
## From-imports
- app.config
- app.db_sql
- app.lib_general
- app.methods.membership_cfg_methods
- app.models.response_models
- app.routers.api_crud
- fastapi
- pydantic
- typing
## File preview (first 20 lines)
```python
import datetime
from fastapi import APIRouter, Body, Depends, Header, HTTPException, Path, Query, Response, status
from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union
from app.lib_general import log, logging
from app.config import settings
from app.db_sql import redis_lookup_id_random
from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.methods.membership_cfg_methods import load_membership_cfg_obj
from app.models.response_models import Resp_Body_Base, mk_resp
router = APIRouter()
# ### BEGIN ### API Membership Cfg ### get_account_obj_membership_cfg() ###
```

View File

@@ -0,0 +1,80 @@
# Router: membership_group
**File:** app/routers/membership_group.py
**Routes found:** 7
**Functions:** 0 —
**Classes:** 0 —
## Routes
- **POST** `/membership/group`
- **PATCH** `/membership/group/{obj_id}`
- **GET** `/membership/group/list`
- **GET** `/account/{account_id}/membership/group/list`
- **GET** `/membership/group/lookup`
- **GET** `/membership/group/{membership_group_id}`
- **DELETE** `/membership/group/{obj_id}`
## From-imports
- app.config
- app.db_sql
- app.lib_general
- app.methods.membership_group_methods
- app.models.membership_group_models
- app.models.response_models
- app.routers.api_crud
- fastapi
- pydantic
- typing
## File preview (first 20 lines)
```python
import datetime
from fastapi import APIRouter, Body, Depends, Header, HTTPException, Path, Query, Response, status
from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union
from app.lib_general import log, logging
from app.config import settings
from app.db_sql import sql_insert, sql_update, sql_insert_or_update, sql_select, sql_delete, redis_lookup_id_random
from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.methods.membership_group_methods import get_membership_group_rec_list, load_membership_group_obj
from app.models.membership_group_models import Membership_Group_Base
from app.models.response_models import Resp_Body_Base, mk_resp
router = APIRouter()
```

View File

@@ -0,0 +1,82 @@
# Router: membership_person
**File:** app/routers/membership_person.py
**Routes found:** 7
**Functions:** 0 —
**Classes:** 0 —
## Routes
- **POST** `/membership/person`
- **PATCH** `/membership/person/{membership_person_id}`
- **GET** `/membership/person/{membership_person_id}`
- **GET** `/person/{person_id}/membership/person`
- **GET** `/account/{account_id}/membership/person/list`
- **GET** `/membership/person/lookup`
- **DELETE** `/membership/person/{obj_id}`
## From-imports
- app.config
- app.db_sql
- app.lib_general
- app.methods.membership_person_methods
- app.models.common_field_schema
- app.models.membership_person_models
- app.models.response_models
- app.routers.api_crud
- fastapi
- pydantic
- typing
## File preview (first 20 lines)
```python
import datetime
from fastapi import APIRouter, Body, Depends, Header, HTTPException, Path, Query, Response, status
from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union
from app.lib_general import log, logging, common_route_params, Common_Route_Params
from app.config import settings
from app.db_sql import sql_enable_part, sql_insert, sql_update, sql_insert_or_update, sql_limit_offset_part, sql_select, sql_delete, redis_lookup_id_random
from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.methods.membership_person_methods import create_membership_person_obj, get_membership_person_rec_list, load_membership_person_obj, update_membership_person_obj
from app.models.common_field_schema import default_num_bytes
from app.models.membership_person_models import Membership_Person_Base
from app.models.response_models import Resp_Body_Base, mk_resp
router = APIRouter()
```

View File

@@ -0,0 +1,74 @@
# Router: membership_person_group
**File:** app/routers/membership_person_group.py
**Routes found:** 4
**Functions:** 0 —
**Classes:** 0 —
## Routes
- **POST** `/membership/group/person`
- **PATCH** `/membership/group/person/{obj_id}`
- **GET** `/membership/group/person/{membership_person_group_id}`
- **DELETE** `/membership/group/person/{obj_id}`
## From-imports
- app.config
- app.db_sql
- app.lib_general
- app.methods.membership_person_group_methods
- app.models.membership_person_group_models
- app.models.response_models
- app.routers.api_crud
- fastapi
- pydantic
- typing
## File preview (first 20 lines)
```python
import datetime
from fastapi import APIRouter, Body, Depends, Header, HTTPException, Path, Query, Response, status
from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union
from app.lib_general import log, logging
from app.config import settings
from app.db_sql import sql_insert, sql_update, sql_insert_or_update, sql_select, sql_delete, redis_lookup_id_random
from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.methods.membership_person_group_methods import get_membership_person_group_rec_list, load_membership_person_group_obj
from app.models.membership_person_group_models import Membership_Person_Group_Base
from app.models.response_models import Resp_Body_Base, mk_resp
router = APIRouter()
```

View File

@@ -0,0 +1,72 @@
# Router: membership_person_profile
**File:** app/routers/membership_person_profile.py
**Routes found:** 3
**Functions:** 0 —
**Classes:** 0 —
## Routes
- **POST** `/membership/person/profile`
- **PATCH** `/membership/person/profile/{obj_id}`
- **GET** `/membership/person/{membership_person_id}/profile`
## From-imports
- app.config
- app.db_sql
- app.lib_general
- app.methods.membership_person_profile_methods
- app.models.membership_person_profile_models
- app.models.response_models
- app.routers.api_crud
- fastapi
- pydantic
- typing
## File preview (first 20 lines)
```python
import datetime
from fastapi import APIRouter, Body, Depends, Header, HTTPException, Path, Query, Response, status
from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union
from app.lib_general import log, logging
from app.config import settings
from app.db_sql import redis_lookup_id_random
from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.methods.membership_person_profile_methods import load_membership_person_profile_obj
from app.models.membership_person_profile_models import Membership_Person_Profile_Base, Membership_Person_Profile_Base_Up
from app.models.response_models import Resp_Body_Base, mk_resp
router = APIRouter()
```

View File

@@ -0,0 +1,74 @@
# Router: membership_person_type
**File:** app/routers/membership_person_type.py
**Routes found:** 4
**Functions:** 0 —
**Classes:** 0 —
## Routes
- **POST** `/membership/type/person`
- **PATCH** `/membership/type/person/{obj_id}`
- **GET** `/membership/type/person/{membership_person_type_id}`
- **DELETE** `/membership/type/person/{obj_id}`
## From-imports
- app.config
- app.db_sql
- app.lib_general
- app.methods.membership_person_type_methods
- app.models.membership_person_type_models
- app.models.response_models
- app.routers.api_crud
- fastapi
- pydantic
- typing
## File preview (first 20 lines)
```python
import datetime
from fastapi import APIRouter, Body, Depends, Header, HTTPException, Path, Query, Response, status
from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union
from app.lib_general import log, logging
from app.config import settings
from app.db_sql import sql_insert, sql_update, sql_insert_or_update, sql_select, sql_delete, redis_lookup_id_random
from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.methods.membership_person_type_methods import get_membership_person_type_rec_list, load_membership_person_type_obj
from app.models.membership_person_type_models import Membership_Person_Type_Base
from app.models.response_models import Resp_Body_Base, mk_resp
router = APIRouter()
```

View File

@@ -0,0 +1,82 @@
# Router: membership_type
**File:** app/routers/membership_type.py
**Routes found:** 8
**Functions:** 0 —
**Classes:** 0 —
## Routes
- **POST** `/membership/type`
- **PATCH** `/membership/type/{obj_id}`
- **GET** `/membership/type/list`
- **GET** `/account/{account_id}/membership/type/list`
- **GET** `/membership/type/lookup`
- **GET** `/membership/type/{membership_type_id}`
- **GET** `/membership/type/{obj_id}`
- **DELETE** `/membership/type/{obj_id}`
## From-imports
- app.config
- app.db_sql
- app.lib_general
- app.methods.membership_type_methods
- app.models.membership_type_models
- app.models.response_models
- app.routers.api_crud
- fastapi
- pydantic
- typing
## File preview (first 20 lines)
```python
import datetime
from fastapi import APIRouter, Body, Depends, Header, HTTPException, Path, Query, Response, status
from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union
from app.lib_general import log, logging, common_route_params, Common_Route_Params
from app.config import settings
from app.db_sql import sql_insert, sql_update, sql_insert_or_update, sql_select, sql_delete, redis_lookup_id_random
from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.methods.membership_type_methods import get_membership_type_rec_list, load_membership_type_obj
from app.models.membership_type_models import Membership_Type_Base
from app.models.response_models import Resp_Body_Base, mk_resp
router = APIRouter()
```

View File

@@ -0,0 +1,88 @@
# Router: order
**File:** app/routers/order.py
**Routes found:** 11
**Functions:** 0 —
**Classes:** 0 —
## Routes
- **POST** `/orde`
- **PATCH** `/order/{obj_id}`
- **PATCH** `/order/{order_id}/line/add`
- **GET** `/order/list`
- **GET** `/order/{order_id}`
- **GET** `/{obj_type}/{obj_id}/order/list`
- **GET** `/account/{account_id}/order/list`
- **GET** `/person/{person_id}/order/list`
- **GET** `/person/{person_id}/order/cart`
- **DELETE** `/order/{obj_id}`
- **DELETE** `/order/{order_id}/line/<order_line_id>/remove`
## From-imports
- app.config
- app.db_sql
- app.lib_general
- app.methods.order_methods
- app.models.order_models
- app.models.response_models
- app.routers.api_crud
- fastapi
- pydantic
- typing
## File preview (first 20 lines)
```python
import datetime
from fastapi import APIRouter, Body, Depends, Header, HTTPException, Path, Query, Response, status
from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union
from app.lib_general import *
from app.config import settings
from app.db_sql import *
from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.methods.order_methods import get_order_rec_list, load_order_obj, save_order_obj
from app.models.response_models import *
from app.models.order_models import Order_Base, Order_DB_Base
router = APIRouter()
```

View File

@@ -0,0 +1,78 @@
# Router: order_cart
**File:** app/routers/order_cart.py
**Routes found:** 5
**Functions:** 0 —
**Classes:** 0 —
## Routes
- **PATCH** `/{order_cart_id}`
- **GET** `/list`
- **GET** `/lookup`
- **GET** `/{order_cart_id}`
- **DELETE** `/{obj_id}`
## From-imports
- ..log
- .api_crud
- app.config
- app.db_sql
- app.lib_general
- app.methods.order_cart_methods
- app.models.order_cart_models
- app.models.response_models
- fastapi
- pydantic
- typing
## File preview (first 20 lines)
```python
import datetime
#from datetime import datetime, time, timedelta
from fastapi import APIRouter, Body, Depends, Header, HTTPException, Path, Query, Response, status
from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union
from app.lib_general import *
from ..log import *
from app.config import settings
from app.db_sql import *
from .api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.methods.order_cart_methods import update_order_cart_obj, load_order_cart_obj
from app.models.order_cart_models import Order_Cart_Base
from app.models.response_models import *
router = APIRouter()
```

View File

@@ -0,0 +1,66 @@
# Router: order_line
**File:** app/routers/order_line.py
**Routes found:** 1
**Functions:** 0 —
**Classes:** 0 —
## Routes
- **GET** `/{obj_type}/{obj_id}/order/line/list`
## From-imports
- app.config
- app.db_sql
- app.lib_general
- app.methods.order_line_methods
- app.models.response_models
- app.routers.api_crud
- fastapi
- pydantic
- typing
## File preview (first 20 lines)
```python
import datetime
from fastapi import APIRouter, Body, Depends, Header, HTTPException, Path, Query, Response, status
from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union
from app.lib_general import *
from app.config import settings
from app.db_sql import *
from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.methods.order_line_methods import get_order_line_rec_list, load_order_obj_line, load_order_obj_line_full_detail
from app.models.response_models import Resp_Body_Base, mk_resp
router = APIRouter()
# ### BEGIN ### API Order Line ### get_obj_id_order_line_list() ###
```

View File

@@ -0,0 +1,92 @@
# Router: order_v3
**File:** app/routers/order_v3.py
**Routes found:** 11
**Functions:** 0 —
**Classes:** 0 —
## Routes
- **POST** `/v3/orde`
- **POST** `/v3/person/{person_id}/orde`
- **PATCH** `/v3/order/{order_id}`
- **PATCH** `/v3/person/{person_id}/order/{order_id}`
- **PATCH** `/v3/order/{order_id}/line/add`
- **PATCH** `/v3/order/{order_id}/line/{order_line_id}/update`
- **PATCH** `/v3/order/{order_id}/line/{order_line_id}/remove`
- **GET** `/v3/{for_obj_type}/{for_obj_id}/order/list`
- **GET** `/v3/order/{order_id}`
- **GET** `/v3/person/{person_id}/order/cart`
- **DELETE** `/v3/order/{order_id}`
## From-imports
- app.config
- app.db_sql
- app.lib_general
- app.methods.order_line_methods
- app.methods.order_methods
- app.models.order_line_models_v3
- app.models.order_models_v3
- app.models.response_models
- app.routers.api_crud
- fastapi
- pydantic
- typing
## File preview (first 20 lines)
```python
import datetime
from fastapi import APIRouter, Body, Depends, Header, HTTPException, Path, Query, Response, status
from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union
from app.lib_general import *
from app.config import settings
from app.db_sql import *
from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.methods.order_methods import create_order_obj, update_order_obj, get_order_rec_list, load_order_obj, save_order_obj
from app.methods.order_line_methods import create_order_obj_line, update_order_obj_line, load_order_obj_line
from app.models.response_models import Resp_Body_Base, mk_resp
from app.models.order_models_v3 import Order_Base
from app.models.order_line_models_v3 import Order_Line_Base
router = APIRouter()
```

View File

@@ -0,0 +1,80 @@
# Router: post
**File:** app/routers/post.py
**Routes found:** 6
**Functions:** 0 —
**Classes:** 0 —
## Routes
- **POST** `/post`
- **PATCH** `/post/{obj_id}`
- **GET** `/post/list`
- **GET** `/account/{account_id}/post/list`
- **GET** `/post/{obj_id}`
- **DELETE** `/post/{obj_id}`
## From-imports
- ..log
- .api_crud
- app.config
- app.db_sql
- app.lib_general
- app.methods.post_methods
- app.models.post_models
- app.models.response_models
- fastapi
- pydantic
- typing
## File preview (first 20 lines)
```python
import datetime
#from datetime import datetime, time, timedelta
from fastapi import APIRouter, Body, Depends, Header, HTTPException, Path, Query, Response, status
from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union
from app.lib_general import *
from ..log import *
from app.config import settings
from app.db_sql import *
from .api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.methods.post_methods import get_post_rec_list, load_post_obj
from app.models.post_models import Post_Base
from app.models.response_models import *
router = APIRouter()
```

View File

@@ -0,0 +1,74 @@
# Router: post_comment
**File:** app/routers/post_comment.py
**Routes found:** 4
**Functions:** 0 —
**Classes:** 0 —
## Routes
- **PATCH** `/{obj_id}`
- **GET** `/list`
- **GET** `/{obj_id}`
- **DELETE** `/{obj_id}`
## From-imports
- ..log
- .api_crud
- app.config
- app.db_sql
- app.lib_general
- app.models.post_comment_models
- app.models.response_models
- fastapi
- pydantic
- typing
## File preview (first 20 lines)
```python
import datetime
#from datetime import datetime, time, timedelta
from fastapi import APIRouter, Body, Depends, Header, HTTPException, Path, Query, Response, status
from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union
from app.lib_general import *
from ..log import *
from app.config import settings
from app.db_sql import *
from .api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.models.post_comment_models import Post_Comment_Base
from app.models.response_models import *
router = APIRouter()
```

View File

@@ -0,0 +1,80 @@
# Router: product
**File:** app/routers/product.py
**Routes found:** 6
**Functions:** 0 —
**Classes:** 0 —
## Routes
- **POST** `/product`
- **PATCH** `/product/{obj_id}`
- **GET** `/product/list`
- **GET** `/account/{account_id}/product/list`
- **GET** `/product/{obj_id}`
- **DELETE** `/product/{obj_id}`
## From-imports
- ..log
- .api_crud
- app.config
- app.db_sql
- app.lib_general
- app.methods.product_methods
- app.models.product_models
- app.models.response_models
- fastapi
- pydantic
- typing
## File preview (first 20 lines)
```python
import datetime
#from datetime import datetime, time, timedelta
from fastapi import APIRouter, Body, Depends, Header, HTTPException, Path, Query, Response, status
from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union
from app.lib_general import *
from ..log import *
from app.config import settings
from app.db_sql import *
from .api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.methods.product_methods import get_product_rec_list, load_product_obj
from app.models.product_models import Product_Base
from app.models.response_models import *
router = APIRouter()
```

View File

@@ -0,0 +1,51 @@
# Router: registry
**File:** app/routers/registry.py
**Routes found:** 0
**Functions:** 1 — setup_routers
**Classes:** 0 —
## Routes
- (no @router.<method> decorators found)
## From-imports
- app.routers
- fastapi
## File preview (first 20 lines)
```python
from fastapi import FastAPI
from app.routers import (
ae_obj, aether_cfg, api_crud, api_crud_v2, api_crud_v3, api, importing, sql,
account, activity_log, address, archive, archive_content, contact, 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, api_v3_actions_hosted_file, 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, e_impexium, e_stripe
)
def setup_routers(app: FastAPI):
"""
Registers all application routers with their respective prefixes and tags.
"""
```

View File

@@ -0,0 +1,62 @@
# Router: websockets
**File:** app/routers/websockets.py
**Routes found:** 1
**Functions:** 0 —
**Classes:** 1 — ConnectionManager
## Routes
- **GET** `/ws_test`
## From-imports
- app.config
- app.db_sql
- app.lib_general
- fastapi
- fastapi.responses
- pydantic
- typing
## File preview (first 20 lines)
```python
from fastapi import APIRouter, FastAPI, Response, WebSocket, WebSocketDisconnect
from fastapi.responses import HTMLResponse
from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union
import redis, asyncio, base64, datetime, hashlib, json, os, pathlib, shutil, time
# import asyncio, base64, datetime, hashlib, json, os, pathlib, shutil, time
# import aioredis, redis, asyncio, base64, datetime, hashlib, json, os, pathlib, shutil, time
# from aioredis import from_url, Redis
# import asyncio
# import aioredis
# import async_timeout
from app.lib_general import log, logging, common_route_params, Common_Route_Params, common_route_params_min, Common_Route_Params_Min
from app.config import settings
from app.db_sql import sql_insert, sql_update, sql_insert_or_update, sql_select, sql_delete, redis_lookup_id_random
router = APIRouter()
html = """
```

View File

@@ -0,0 +1,105 @@
-- phpMyAdmin SQL Dump
-- version 5.2.3
-- https://www.phpmyadmin.net/
--
-- Host: localhost
-- Generation Time: Jan 06, 2026 at 06:25 PM
-- Server version: 12.1.2-MariaDB-log
-- PHP Version: 8.4.15
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `aether_dev`
--
-- --------------------------------------------------------
--
-- Table structure for table `account`
--
CREATE TABLE `account` (
`id` int(11) NOT NULL,
`id_random` varchar(22) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
`code` varchar(50) DEFAULT NULL,
`name` varchar(200) DEFAULT NULL,
`short_name` varchar(20) DEFAULT NULL,
`description` text DEFAULT NULL,
`hide` tinyint(1) DEFAULT 0,
`enable` tinyint(1) NOT NULL DEFAULT 0,
`enable_from` datetime DEFAULT NULL,
`enable_to` datetime DEFAULT NULL,
`notes` text DEFAULT NULL,
`created_on` timestamp NOT NULL DEFAULT current_timestamp(),
`updated_on` timestamp NULL DEFAULT NULL ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Triggers `account`
--
DELIMITER $$
CREATE TRIGGER `before_insert_account` BEFORE INSERT ON `account` FOR EACH ROW BEGIN
BEGIN
IF (NEW.id_random IS NULL OR NEW.id_random = '' OR LENGTH(NEW.id_random) < 6)
THEN
/* SET NEW.id_random = gen_rand_pattern('3C-2N-2N-2N'); */
/* SET NEW.id_random = gen_rand_pattern('4C-2N-2N-2N'); */
SET NEW.id_random = gen_rand_str(11, 'URL');
END IF;
END;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `before_update_account` BEFORE UPDATE ON `account` FOR EACH ROW BEGIN
BEGIN
IF (NEW.id_random IS NULL OR NEW.id_random = '' OR LENGTH(NEW.id_random) < 6)
THEN
/* SET NEW.id_random = gen_rand_pattern('3C-2N-2N-2N'); */
/* SET NEW.id_random = gen_rand_pattern('4C-2N-2N-2N'); */
SET NEW.id_random = gen_rand_str(11, 'URL');
END IF;
END;
END
$$
DELIMITER ;
--
-- Indexes for dumped tables
--
--
-- Indexes for table `account`
--
ALTER TABLE `account`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `id_random` (`id_random`),
ADD UNIQUE KEY `code` (`code`),
ADD KEY `enable` (`enable`),
ADD KEY `name` (`name`),
ADD KEY `created_on` (`created_on`),
ADD KEY `updated_on` (`updated_on`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `account`
--
ALTER TABLE `account`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

View File

@@ -0,0 +1,124 @@
-- phpMyAdmin SQL Dump
-- version 5.2.3
-- https://www.phpmyadmin.net/
--
-- Host: localhost
-- Generation Time: Jan 06, 2026 at 06:25 PM
-- Server version: 12.1.2-MariaDB-log
-- PHP Version: 8.4.15
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `aether_dev`
--
-- --------------------------------------------------------
--
-- Table structure for table `data_store`
--
CREATE TABLE `data_store` (
`id` int(11) NOT NULL,
`id_random` varchar(22) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
`account_id` int(11) DEFAULT NULL,
`for_type` varchar(50) DEFAULT NULL,
`for_id` int(11) DEFAULT NULL,
`person_id` int(11) DEFAULT NULL COMMENT 'the creator or owner',
`user_id` int(11) DEFAULT NULL COMMENT 'the creator or owner',
`code` varchar(75) NOT NULL COMMENT 'adding a record that matches an existing code should always have an account_id',
`name` varchar(150) DEFAULT NULL,
`description` text DEFAULT NULL,
`type` varchar(10) NOT NULL DEFAULT 'html' COMMENT 'html, json, md, text',
`json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'case sensitive',
`text` longtext DEFAULT NULL COMMENT 'case insensitive',
`meta_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`meta_json`)),
`meta_text` longtext DEFAULT NULL,
`access_read` varchar(20) DEFAULT NULL COMMENT '''super'', ''administrator'', ''trusted'', ''anonymous''',
`access_write` varchar(20) DEFAULT NULL COMMENT '''super'', ''administrator'', ''trusted'', ''anonymous''',
`access_delete` varchar(20) DEFAULT NULL COMMENT '''super'', ''administrator'', ''trusted'', ''anonymous''',
`enable` tinyint(1) NOT NULL DEFAULT 0,
`hide` tinyint(1) DEFAULT NULL,
`priority` tinyint(1) DEFAULT NULL,
`sort` int(11) DEFAULT NULL,
`group` varchar(100) DEFAULT NULL,
`notes` text DEFAULT NULL,
`created_on` timestamp NOT NULL DEFAULT current_timestamp(),
`updated_on` timestamp NULL DEFAULT NULL ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Triggers `data_store`
--
DELIMITER $$
CREATE TRIGGER `before_insert_data_store` BEFORE INSERT ON `data_store` FOR EACH ROW BEGIN
BEGIN
IF (NEW.id_random IS NULL OR NEW.id_random = '' OR LENGTH(NEW.id_random) < 6)
THEN
/* SET NEW.id_random = gen_rand_pattern('3C-2N-2N-2N'); */
/* SET NEW.id_random = gen_rand_pattern('4C-2N-2N-2N'); */
SET NEW.id_random = gen_rand_str(11, 'URL');
END IF;
END;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `before_update_data_store` BEFORE UPDATE ON `data_store` FOR EACH ROW BEGIN
BEGIN
IF (NEW.id_random IS NULL OR NEW.id_random = '' OR LENGTH(NEW.id_random) < 6)
THEN
/* SET NEW.id_random = gen_rand_pattern('3C-2N-2N-2N'); */
/* SET NEW.id_random = gen_rand_pattern('4C-2N-2N-2N'); */
SET NEW.id_random = gen_rand_str(11, 'URL');
END IF;
END;
END
$$
DELIMITER ;
--
-- Indexes for dumped tables
--
--
-- Indexes for table `data_store`
--
ALTER TABLE `data_store`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `id_random` (`id_random`),
ADD KEY `created_on` (`created_on`),
ADD KEY `updated_on` (`updated_on`),
ADD KEY `code` (`code`),
ADD KEY `account_id` (`account_id`),
ADD KEY `for_type` (`for_type`,`for_id`),
ADD KEY `enable` (`enable`),
ADD KEY `priority` (`priority`),
ADD KEY `sort` (`sort`),
ADD KEY `group` (`group`),
ADD KEY `hide` (`hide`),
ADD KEY `account_id_2` (`account_id`,`for_type`,`for_id`,`code`,`enable`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `data_store`
--
ALTER TABLE `data_store`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

View File

@@ -0,0 +1,259 @@
-- phpMyAdmin SQL Dump
-- version 5.2.3
-- https://www.phpmyadmin.net/
--
-- Host: localhost
-- Generation Time: Jan 06, 2026 at 06:24 PM
-- Server version: 12.1.2-MariaDB-log
-- PHP Version: 8.4.15
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `aether_dev`
--
-- --------------------------------------------------------
--
-- Table structure for table `event`
--
CREATE TABLE `event` (
`id` int(11) NOT NULL,
`id_random` varchar(22) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
`code` varchar(100) DEFAULT NULL,
`account_id` int(11) DEFAULT NULL,
`poc_event_person_id` int(11) DEFAULT NULL COMMENT 'use this when possible',
`poc_person_id` int(11) DEFAULT NULL COMMENT 'use this only if needed',
`external_person_id` varchar(75) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'person ID generated by external system',
`user_id` int(11) DEFAULT NULL COMMENT 'user that owns the event',
`lu_event_type_id` int(11) DEFAULT NULL,
`conference` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'yes allows for abstracts, sessions, presentations, presenters, badges, etc',
`type` varchar(50) DEFAULT NULL,
`name` varchar(200) NOT NULL,
`summary` text DEFAULT NULL,
`description` text DEFAULT NULL,
`format` text DEFAULT NULL COMMENT 'format of the event',
`lu_time_zone_id` int(11) DEFAULT NULL,
`timezone` varchar(100) DEFAULT NULL,
`start_datetime` datetime DEFAULT NULL,
`end_datetime` datetime DEFAULT NULL,
`recurring` tinyint(1) DEFAULT NULL COMMENT 'recurring event',
`recurring_pattern` varchar(50) DEFAULT NULL,
`recurring_start_time` time DEFAULT NULL COMMENT 'recurring event start time',
`recurring_end_time` time DEFAULT NULL COMMENT 'recurring event end time',
`recurring_text` text DEFAULT NULL COMMENT 'text describing how and when the event recurs',
`weekday_sunday` tinyint(1) DEFAULT NULL,
`weekday_monday` tinyint(1) DEFAULT NULL,
`weekday_tuesday` tinyint(1) DEFAULT NULL,
`weekday_wednesday` tinyint(1) DEFAULT NULL,
`weekday_thursday` tinyint(1) DEFAULT NULL,
`weekday_friday` tinyint(1) DEFAULT NULL,
`weekday_saturday` tinyint(1) DEFAULT NULL,
`address_location_id` int(11) DEFAULT NULL,
`location_address_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
`location_address_json_ext` longtext GENERATED ALWAYS AS (json_unquote(json_extract(`location_address_json`,'$'))) STORED,
`location_text` text DEFAULT NULL COMMENT 'text information about the location',
`online_start` datetime DEFAULT NULL,
`online_end` datetime DEFAULT NULL,
`reg_deadline_1` datetime DEFAULT NULL,
`reg_deadline_2` datetime DEFAULT NULL,
`reg_deadline_3` datetime DEFAULT NULL,
`reg_deadline_4` datetime DEFAULT NULL,
`max_registrants` int(11) DEFAULT NULL,
`private` tinyint(1) DEFAULT 0 COMMENT 'invite only event',
`physical` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'physical in person event',
`virtual` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'virtual remote access event',
`image_path` varchar(500) DEFAULT NULL,
`logo_path` varchar(500) DEFAULT NULL,
`logo_bg_color` varchar(25) DEFAULT NULL,
`banner_path` varchar(500) DEFAULT NULL,
`banner_bg_color` varchar(25) DEFAULT NULL,
`logo_filename` varchar(200) DEFAULT NULL,
`banner_image_filename` varchar(200) DEFAULT NULL,
`banner_html` text DEFAULT NULL,
`site_h1` varchar(500) DEFAULT NULL,
`site_h2` varchar(500) DEFAULT NULL,
`external_url` varchar(500) DEFAULT NULL,
`external_url_text` varchar(500) DEFAULT NULL,
`attend_url` varchar(500) DEFAULT NULL,
`attend_url_text` varchar(500) DEFAULT NULL,
`attend_url_code` varchar(50) DEFAULT NULL COMMENT 'id, code, nickname, alias',
`attend_url_passcode` varchar(50) DEFAULT NULL,
`attend_phone` varchar(50) DEFAULT NULL,
`attend_phone_passcode` varchar(50) DEFAULT NULL,
`attend_text` text DEFAULT NULL,
`attend_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`attend_json`)),
`contact_1_id` int(11) DEFAULT NULL,
`contact_2_id` int(11) DEFAULT NULL,
`contact_3_id` int(11) DEFAULT NULL,
`contact_li_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`contact_li_json`)),
`contact_li_json_ext` longtext GENERATED ALWAYS AS (json_unquote(json_extract(`contact_li_json`,'$'))) STORED,
`contact_name` varchar(200) DEFAULT NULL,
`contact_email` varchar(254) DEFAULT NULL,
`contact_phone` varchar(50) DEFAULT NULL,
`contact_other` text DEFAULT NULL,
`contact_text` text DEFAULT NULL,
`event_file_upload_information` text DEFAULT NULL,
`enable` tinyint(1) NOT NULL DEFAULT 1,
`enable_from` datetime DEFAULT NULL,
`enable_to` datetime DEFAULT NULL,
`enable_for_administrator` tinyint(1) NOT NULL DEFAULT 0,
`enable_for_support` tinyint(1) NOT NULL DEFAULT 0,
`enable_for_assistant` tinyint(1) NOT NULL DEFAULT 0,
`enable_for_trusted` tinyint(1) NOT NULL DEFAULT 0,
`enable_for_authenticated` tinyint(1) NOT NULL DEFAULT 0,
`enable_for_anonymous` tinyint(1) NOT NULL DEFAULT 0,
`enable_comments` tinyint(1) NOT NULL DEFAULT 0,
`send_moderator_email` tinyint(1) DEFAULT NULL,
`moderator_email` varchar(254) DEFAULT NULL,
`disable_navigation` tinyint(1) NOT NULL DEFAULT 0,
`enable_event_file_upload_for_event` tinyint(1) DEFAULT NULL,
`enable_event_file_upload_for_location` tinyint(1) DEFAULT NULL,
`enable_event_file_upload_for_session` tinyint(1) DEFAULT NULL,
`enable_event_file_upload_for_presentation` tinyint(1) DEFAULT NULL,
`enable_event_file_upload_for_presenter` tinyint(1) DEFAULT NULL,
`enable_event_file_upload_review_question` tinyint(1) DEFAULT NULL,
`enable_event_file_upload_email_question` tinyint(1) DEFAULT NULL,
`enable_event_file_upload_comments_question` tinyint(1) DEFAULT NULL,
`enable_event_file_approval_option` tinyint(1) DEFAULT NULL,
`enable_event_file_public_use_option` tinyint(1) DEFAULT NULL,
`enable_event_file_member_use_option` tinyint(1) DEFAULT NULL,
`enable_event_file_attendee_use_option` tinyint(1) DEFAULT NULL,
`enable_event_file_publish_option` tinyint(1) DEFAULT NULL,
`enable_event_file_purpose_option` tinyint(1) DEFAULT NULL,
`enable_event_file_os_selection_option` tinyint(1) DEFAULT NULL COMMENT 'allow selection between macOS and Windows',
`enable_event_file_os_change_option` tinyint(1) DEFAULT NULL,
`custom_event_file_upload_description` text DEFAULT NULL,
`custom_event_file_agreement_1_text` text DEFAULT NULL,
`custom_event_file_agreement_1_description` text DEFAULT NULL,
`ask_speaker_ready_room` tinyint(1) DEFAULT NULL,
`ask_presentation_publish_optout` tinyint(1) DEFAULT NULL,
`default_event_file_to_public_use` tinyint(1) DEFAULT NULL,
`ask_for_public_version` tinyint(1) DEFAULT NULL,
`hide_file_upload_presentation_name` tinyint(1) DEFAULT NULL,
`hide_session_codes` tinyint(1) DEFAULT NULL,
`custom_agreement_1_text` text DEFAULT NULL,
`custom_agreement_1_description` text DEFAULT NULL,
`unauthenticated_access` tinyint(1) NOT NULL DEFAULT 0,
`unauthenticated_access_public_endpoint` tinyint(1) NOT NULL DEFAULT 0,
`mod_abstracts_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`mod_abstracts_json`)),
`mod_badges_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'badges config options' CHECK (json_valid(`mod_badges_json`)),
`mod_exhibits_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'exhibits config options' CHECK (json_valid(`mod_exhibits_json`)),
`mod_meetings_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`mod_meetings_json`)),
`mod_pres_mgmt_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`mod_pres_mgmt_json`)),
`cfg_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'config in JSON format' CHECK (json_valid(`cfg_json`)),
`hide` tinyint(1) DEFAULT NULL,
`status` varchar(25) DEFAULT NULL,
`review` tinyint(1) DEFAULT NULL,
`approve` tinyint(1) DEFAULT NULL,
`ready` tinyint(1) DEFAULT NULL,
`ready_on` datetime DEFAULT NULL,
`archive` tinyint(1) DEFAULT NULL,
`archive_on` datetime DEFAULT NULL,
`priority` tinyint(1) DEFAULT NULL,
`sort` int(11) DEFAULT NULL,
`group` varchar(100) DEFAULT NULL,
`default_qry_str` text DEFAULT NULL COMMENT 'for FULLTEXT indexed searches',
`notes` text DEFAULT NULL,
`created_on` timestamp NOT NULL DEFAULT current_timestamp(),
`updated_on` timestamp NULL DEFAULT NULL ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Triggers `event`
--
DELIMITER $$
CREATE TRIGGER `before_insert_event` BEFORE INSERT ON `event` FOR EACH ROW BEGIN
BEGIN
IF (NEW.id_random IS NULL OR NEW.id_random = '' OR LENGTH(NEW.id_random) < 6)
THEN
/* SET NEW.id_random = gen_rand_pattern('3C-2N-2N-2N'); */
/* SET NEW.id_random = gen_rand_pattern('4C-2N-2N-2N'); */
SET NEW.id_random = gen_rand_pattern('3CN-2CN-2CN-2CN');
/* SET NEW.id_random = gen_rand_str(11, 'URL'); */
END IF;
SET NEW.default_qry_str = event_default_qry_str(NEW.id_random, NEW.type, NEW.name, NEW.description, NEW.timezone, NEW.recurring_pattern, NEW.recurring_text, NEW.location_text, NEW.attend_text, NEW.contact_text);
END;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `before_update_event` BEFORE UPDATE ON `event` FOR EACH ROW BEGIN
BEGIN
IF (NEW.id_random IS NULL OR NEW.id_random = '' OR LENGTH(NEW.id_random) < 6)
THEN
SET NEW.id_random = gen_rand_pattern('3CN-2CN-2CN-2CN');
END IF;
SET NEW.default_qry_str = event_default_qry_str(NEW.id_random, NEW.type, NEW.name, NEW.description, NEW.timezone, NEW.recurring_pattern, NEW.recurring_text, NEW.location_text, NEW.attend_text, NEW.contact_text);
END;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `event_after_delete` AFTER DELETE ON `event` FOR EACH ROW BEGIN
DELETE FROM event_person WHERE event_person.id = old.poc_event_person_id;
DELETE FROM address WHERE address.for_id = old.id AND address.for_type = 'event';
DELETE FROM address WHERE address.id = old.address_location_id;
DELETE FROM contact WHERE contact.for_id = old.id AND contact.for_type = 'event';
DELETE FROM contact WHERE contact.id = old.contact_1_id;
DELETE FROM contact WHERE contact.id = old.contact_2_id;
DELETE FROM contact WHERE contact.id = old.contact_3_id;
END
$$
DELIMITER ;
--
-- Indexes for dumped tables
--
--
-- Indexes for table `event`
--
ALTER TABLE `event`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `id_random` (`id_random`),
ADD KEY `account_id` (`account_id`),
ADD KEY `created_on` (`created_on`),
ADD KEY `updated_on` (`updated_on`),
ADD KEY `sort` (`sort`),
ADD KEY `conference` (`conference`),
ADD KEY `enable` (`enable`),
ADD KEY `archive` (`archive`),
ADD KEY `address_location_id` (`address_location_id`) USING HASH,
ADD KEY `poc_event_person_id` (`poc_event_person_id`) USING HASH,
ADD KEY `contact_id_1` (`contact_1_id`) USING HASH,
ADD KEY `contact_id_2` (`contact_2_id`) USING HASH,
ADD KEY `priority` (`priority`),
ADD KEY `hide` (`hide`);
ALTER TABLE `event` ADD FULLTEXT KEY `tbl_fulltext_default_qry_str` (`default_qry_str`);
ALTER TABLE `event` ADD FULLTEXT KEY `fulltext_location_address_json` (`location_address_json`);
ALTER TABLE `event` ADD FULLTEXT KEY `fulltext_contact_li_json` (`contact_li_json`);
ALTER TABLE `event` ADD FULLTEXT KEY `fulltext_location_address_json_ext` (`location_address_json_ext`);
ALTER TABLE `event` ADD FULLTEXT KEY `fulltext_contact_li_json_ext` (`contact_li_json_ext`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `event`
--
ALTER TABLE `event`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

View File

@@ -0,0 +1,235 @@
-- phpMyAdmin SQL Dump
-- version 5.2.3
-- https://www.phpmyadmin.net/
--
-- Host: localhost
-- Generation Time: Jan 06, 2026 at 06:24 PM
-- Server version: 12.1.2-MariaDB-log
-- PHP Version: 8.4.15
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `aether_dev`
--
-- --------------------------------------------------------
--
-- Table structure for table `event_badge`
--
CREATE TABLE `event_badge` (
`id` int(11) NOT NULL,
`id_random` varchar(22) NOT NULL,
`external_id` varchar(100) DEFAULT NULL,
`external_event_id` varchar(75) DEFAULT NULL COMMENT 'externally generated event ID',
`external_registration_id` varchar(75) DEFAULT NULL COMMENT 'registration ID generated by external system (was external_reg_id)',
`external_person_id` varchar(75) DEFAULT NULL COMMENT 'person ID generated by external system (was external_sys_id)',
`event_id_only` int(11) DEFAULT NULL COMMENT 'This should only be used when the event_person record can not be created.',
`event_person_id` int(11) DEFAULT NULL,
`event_badge_template_id` int(11) DEFAULT NULL COMMENT 'if null then use the "default" template for the event',
`pronouns` varchar(50) DEFAULT NULL COMMENT 'preferred pronouns',
`pronouns_override` varchar(50) DEFAULT NULL COMMENT 'override for pronouns',
`informal_name` varchar(50) DEFAULT NULL COMMENT 'nickname',
`title_names` varchar(100) DEFAULT NULL COMMENT 'prefix',
`given_name` varchar(50) DEFAULT NULL COMMENT 'first name',
`middle_name` varchar(50) DEFAULT NULL,
`family_name` varchar(100) DEFAULT NULL COMMENT 'last name',
`designations` varchar(100) DEFAULT NULL COMMENT 'designations and suffix',
`professional_title` varchar(150) DEFAULT NULL COMMENT 'includes degrees and credentials',
`professional_title_override` varchar(200) DEFAULT NULL COMMENT 'override for professional title',
`full_name` varchar(200) DEFAULT NULL,
`full_name_override` varchar(150) DEFAULT NULL COMMENT 'was display_name',
`affiliations` text DEFAULT NULL,
`affiliations_override` varchar(200) DEFAULT NULL COMMENT 'override for affiliations',
`email` varchar(254) DEFAULT NULL,
`email_override` varchar(254) DEFAULT NULL COMMENT 'override for email',
`phone` varchar(25) DEFAULT NULL,
`phone_override` varchar(25) DEFAULT NULL COMMENT 'override for phone',
`address_line_1` varchar(200) DEFAULT NULL,
`address_line_2` varchar(200) DEFAULT NULL,
`address_line_3` varchar(200) DEFAULT NULL,
`city` varchar(100) DEFAULT NULL,
`country_subdivision_code` varchar(8) DEFAULT NULL,
`state_province` varchar(100) DEFAULT NULL,
`state_province_abb` varchar(10) DEFAULT NULL COMMENT 'state/province abbreviation',
`postal_code` varchar(25) DEFAULT NULL,
`country_alpha_2_code` varchar(2) DEFAULT NULL,
`country` varchar(100) DEFAULT NULL,
`full_address` varchar(200) DEFAULT NULL,
`location` varchar(200) DEFAULT NULL,
`location_override` varchar(200) DEFAULT NULL COMMENT 'override for location',
`location_short` varchar(100) DEFAULT NULL COMMENT 'auto gen with trigger',
`location_long` varchar(200) DEFAULT NULL COMMENT 'auto gen with trigger',
`query_str` varchar(150) DEFAULT NULL,
`badge_type_code` varchar(50) DEFAULT NULL,
`badge_type_code_override` varchar(50) DEFAULT NULL,
`badge_type` varchar(100) DEFAULT NULL,
`badge_type_override` varchar(100) DEFAULT NULL,
`member_type_code` varchar(50) DEFAULT NULL,
`member_type` varchar(100) DEFAULT NULL,
`member_status` varchar(50) DEFAULT NULL,
`registration_type_code` varchar(50) DEFAULT NULL,
`registration_type` varchar(100) DEFAULT NULL,
`other_1` varchar(100) DEFAULT NULL,
`other_2` varchar(100) DEFAULT NULL,
`ticket_1_code` varchar(100) DEFAULT NULL,
`ticket_2_code` varchar(100) DEFAULT NULL,
`ticket_3_code` varchar(100) DEFAULT NULL,
`ticket_4_code` varchar(100) DEFAULT NULL,
`ticket_5_code` varchar(100) DEFAULT NULL,
`ticket_6_code` varchar(100) DEFAULT NULL,
`ticket_7_code` varchar(100) DEFAULT NULL,
`ticket_8_code` varchar(100) DEFAULT NULL,
`allow_tracking` tinyint(1) DEFAULT NULL,
`allow_tracking_field_li` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '[''given_name'', ''family_name'', ''email'']' CHECK (json_valid(`allow_tracking_field_li`)),
`agree_to_tc` tinyint(1) DEFAULT NULL COMMENT 'agree to terms and conditions',
`print_first_datetime` datetime DEFAULT NULL,
`print_last_datetime` datetime DEFAULT NULL,
`print_count` int(11) DEFAULT NULL,
`data_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`data_json`)),
`cfg_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`cfg_json`)),
`hide` tinyint(1) DEFAULT 0,
`priority` tinyint(1) DEFAULT NULL,
`sort` int(11) DEFAULT NULL,
`group` varchar(100) DEFAULT NULL,
`enable` tinyint(1) DEFAULT 1,
`default_qry_str` text DEFAULT NULL COMMENT 'for FULLTEXT indexed searches',
`notes` text DEFAULT NULL,
`created_on` timestamp NOT NULL DEFAULT current_timestamp(),
`updated_on` timestamp NULL DEFAULT NULL ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Triggers `event_badge`
--
DELIMITER $$
CREATE TRIGGER `before_insert_event_badge` BEFORE INSERT ON `event_badge` FOR EACH ROW BEGIN
BEGIN
IF (NEW.id_random IS NULL OR NEW.id_random = '' OR LENGTH(NEW.id_random) < 6)
THEN
SET NEW.id_random = gen_rand_pattern('4C-2N-2N-2N');
/* SET NEW.id_random = gen_rand_str(11, 'URL'); */
END IF;
SET NEW.full_name = name_for_full_name(NEW.informal_name, NEW.title_names, NEW.given_name, NEW.middle_name, NEW.family_name, NEW.designations);
IF (NEW.location IS NULL OR NEW.location = '')
THEN
SET NEW.location = make_location_str(NEW.city, NEW.state_province, NEW.country);
END IF;
IF (NEW.full_address IS NULL OR NEW.full_address = '')
THEN
SET NEW.full_address = make_full_address_str(NEW.address_line_1, NEW.address_line_2, NEW.address_line_3, NEW.city, NEW.state_province, NEW.postal_code, NEW.country);
/*SET NEW.notes = CONCAT(COALESCE(`NEW`.`notes`,''), ';;sys::overide empty full_address');*/
END IF;
IF (NEW.city IS NOT NULL OR NEW.state_province IS NOT NULL OR NEW.country IS NOT NULL)
THEN
SET NEW.location_long = badge_full_address(NEW.city, NEW.state_province, NEW.country);
/*SET NEW.notes = CONCAT(COALESCE(`NEW`.`notes`,''), ';;sys::overide empty location');*/
END IF;
IF (NEW.city IS NOT NULL OR NEW.state_province_abb IS NOT NULL OR NEW.country_alpha_2_code IS NOT NULL)
THEN
SET NEW.location_short = badge_location_short(NEW.city, NEW.state_province_abb, NEW.country_alpha_2_code);
/*SET NEW.notes = CONCAT(COALESCE(`NEW`.`notes`,''), ';;sys::overide empty location');*/
END IF;
SET NEW.default_qry_str = event_badge_default_qry_str(NEW.id_random, NEW.full_name, NEW.full_name_override, NEW.affiliations, NEW.affiliations_override, NEW.email, NEW.email_override, NEW.location, NEW.location_override);
SET NEW.query_str = badge_query_str(NEW.id_random, NEW.informal_name, NEW.given_name, NEW.middle_name, NEW.family_name, NEW.email);
END;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `before_update_event_badge` BEFORE UPDATE ON `event_badge` FOR EACH ROW BEGIN
BEGIN
IF (NEW.id_random IS NULL OR NEW.id_random = '' OR LENGTH(NEW.id_random) < 6)
THEN
SET NEW.id_random = gen_rand_pattern('4C-2N-2N-2N');
END IF;
SET NEW.full_name = name_for_full_name(NEW.informal_name, NEW.title_names, NEW.given_name, NEW.middle_name, NEW.family_name, NEW.designations);
IF (NEW.location IS NULL OR NEW.location = '')
THEN
SET NEW.location = make_location_str(NEW.city, NEW.state_province, NEW.country);
END IF;
IF (NEW.full_address IS NULL OR NEW.full_address = '')
THEN
SET NEW.full_address = make_full_address_str(NEW.address_line_1, NEW.address_line_2, NEW.address_line_3, NEW.city, NEW.state_province, NEW.postal_code, NEW.country);
/*SET NEW.notes = CONCAT(COALESCE(`NEW`.`notes`,''), ';;sys::overide empty full_address');*/
END IF;
IF (NEW.city IS NOT NULL OR NEW.state_province IS NOT NULL OR NEW.country IS NOT NULL)
THEN
SET NEW.location_long = badge_full_address(NEW.city, NEW.state_province, NEW.country);
/*SET NEW.notes = CONCAT(COALESCE(`NEW`.`notes`,''), ';;sys::overide empty location');*/
END IF;
IF (NEW.city IS NOT NULL OR NEW.state_province_abb IS NOT NULL OR NEW.country_alpha_2_code IS NOT NULL)
THEN
SET NEW.location_short = badge_location_short(NEW.city, NEW.state_province_abb, NEW.country_alpha_2_code);
/*SET NEW.notes = CONCAT(COALESCE(`NEW`.`notes`,''), ';;sys::overide empty location');*/
END IF;
SET NEW.default_qry_str = event_badge_default_qry_str(NEW.id_random, NEW.full_name, NEW.full_name_override, NEW.affiliations, NEW.affiliations_override, NEW.email, NEW.email_override, NEW.location, NEW.location_override);
SET NEW.query_str = badge_query_str(NEW.id_random, NEW.informal_name, NEW.given_name, NEW.middle_name, NEW.family_name, NEW.email);
END;
END
$$
DELIMITER ;
--
-- Indexes for dumped tables
--
--
-- Indexes for table `event_badge`
--
ALTER TABLE `event_badge`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `id_random` (`id_random`),
ADD KEY `external_id` (`external_id`),
ADD KEY `event_person_id` (`event_person_id`),
ADD KEY `given_name` (`given_name`),
ADD KEY `family_name` (`family_name`),
ADD KEY `display_name` (`full_name_override`),
ADD KEY `email` (`email`),
ADD KEY `badge_type_code` (`badge_type_code`),
ADD KEY `member_type_code` (`member_type_code`),
ADD KEY `registration_type_code` (`registration_type_code`),
ADD KEY `enable` (`enable`),
ADD KEY `created_on` (`created_on`),
ADD KEY `updated_on` (`updated_on`),
ADD KEY `external_event_id` (`external_event_id`),
ADD KEY `event_badge_template_id` (`event_badge_template_id`);
ALTER TABLE `event_badge` ADD FULLTEXT KEY `query_str` (`query_str`);
ALTER TABLE `event_badge` ADD FULLTEXT KEY `tbl_fulltext_default_qry_str` (`default_qry_str`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `event_badge`
--
ALTER TABLE `event_badge`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

View File

@@ -0,0 +1,242 @@
-- phpMyAdmin SQL Dump
-- version 5.2.3
-- https://www.phpmyadmin.net/
--
-- Host: localhost
-- Generation Time: Jan 06, 2026 at 06:25 PM
-- Server version: 12.1.2-MariaDB-log
-- PHP Version: 8.4.15
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `aether_dev`
--
-- --------------------------------------------------------
--
-- Table structure for table `event_file`
--
CREATE TABLE `event_file` (
`id` int(11) NOT NULL,
`id_random` varchar(22) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
`hosted_file_id` int(11) DEFAULT NULL,
`for_type` varchar(50) DEFAULT NULL,
`for_id` int(11) DEFAULT NULL,
`event_id` int(11) DEFAULT NULL COMMENT 'is this needed?',
`event_session_id` int(11) DEFAULT NULL COMMENT 'is this needed?',
`event_presentation_id` int(11) DEFAULT NULL COMMENT 'is this needed?',
`event_presenter_id` int(11) DEFAULT NULL COMMENT 'is this needed?',
`event_location_id` int(11) DEFAULT NULL COMMENT 'is this needed?',
`event_track_id` int(11) DEFAULT NULL COMMENT 'is this needed?',
`event_exhibit_id` int(11) DEFAULT NULL COMMENT 'is this needed?',
`filename` varchar(255) DEFAULT NULL,
`extension` varchar(10) DEFAULT NULL,
`title` varchar(500) DEFAULT NULL,
`description` text DEFAULT NULL,
`internal_use` tinyint(1) DEFAULT NULL COMMENT 'hide from non-support people',
`internal_start_datetime` datetime DEFAULT NULL,
`internal_end_datetime` datetime DEFAULT NULL,
`internal_filename` varchar(255) DEFAULT NULL,
`internal_extension` varchar(10) DEFAULT NULL,
`open_in_os` varchar(50) DEFAULT NULL COMMENT 'change to open_in: [mac,win,local browser/client,remote browser/client,api,websocket,download]',
`internal_hide` tinyint(1) DEFAULT NULL,
`private_use` tinyint(1) DEFAULT NULL,
`private_start_datetime` datetime DEFAULT NULL,
`private_end_datetime` datetime DEFAULT NULL,
`private_filename` varchar(255) DEFAULT NULL,
`private_extension` varchar(10) DEFAULT NULL,
`private_hide` tinyint(1) DEFAULT NULL,
`public_use` tinyint(1) DEFAULT NULL,
`public_start_datetime` datetime DEFAULT NULL,
`public_end_datetime` datetime DEFAULT NULL,
`public_filename` varchar(255) DEFAULT NULL,
`public_extension` varchar(10) DEFAULT NULL,
`public_hide` tinyint(1) DEFAULT NULL,
`lu_file_purpose_id` int(11) DEFAULT NULL,
`file_purpose` varchar(100) DEFAULT NULL,
`publish_optout` tinyint(1) DEFAULT NULL,
`download_start_datetime` datetime DEFAULT NULL,
`download_end_datetime` datetime DEFAULT NULL,
`approved` int(11) DEFAULT NULL,
`approved_on` timestamp NULL DEFAULT NULL,
`public` tinyint(1) DEFAULT NULL,
`hide` tinyint(1) DEFAULT NULL,
`priority` tinyint(1) DEFAULT NULL,
`sort` int(11) DEFAULT NULL,
`group` varchar(100) DEFAULT NULL,
`enable` tinyint(1) NOT NULL DEFAULT 1,
`enable_after_datetime` datetime DEFAULT NULL,
`enable_before_datetime` datetime DEFAULT NULL,
`enable_for_administrator` tinyint(1) NOT NULL DEFAULT 0,
`enable_for_support` tinyint(1) NOT NULL DEFAULT 0,
`enable_for_assistant` tinyint(1) NOT NULL DEFAULT 0,
`enable_for_trusted` tinyint(1) NOT NULL DEFAULT 0,
`enable_for_authenticated` tinyint(1) NOT NULL DEFAULT 0,
`status` int(11) DEFAULT NULL,
`review` tinyint(1) DEFAULT NULL,
`approve` tinyint(1) DEFAULT NULL,
`ready` tinyint(1) DEFAULT NULL,
`ready_datetime` datetime DEFAULT NULL,
`archive` tinyint(1) DEFAULT NULL,
`archive_datetime` datetime DEFAULT NULL,
`enable_for_anonymous` tinyint(1) NOT NULL DEFAULT 0,
`created_on` timestamp NOT NULL DEFAULT current_timestamp(),
`updated_on` timestamp NULL DEFAULT NULL ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Triggers `event_file`
--
DELIMITER $$
CREATE TRIGGER `before_insert_event_file` BEFORE INSERT ON `event_file` FOR EACH ROW BEGIN
BEGIN
IF (NEW.id_random IS NULL OR NEW.id_random = '' OR LENGTH(NEW.id_random) < 6)
THEN
/* SET NEW.id_random = gen_rand_pattern('3C-2N-2N-2N'); */
/* SET NEW.id_random = gen_rand_pattern('4C-2N-2N-2N'); */
SET NEW.id_random = gen_rand_str(11, 'URL');
END IF;
END;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `before_insert_event_file_fix_ids` BEFORE INSERT ON `event_file` FOR EACH ROW BEGIN
BEGIN
IF (NEW.for_type = 'event_location' AND NEW.for_id IS NOT NULL)
THEN
SET NEW.event_location_id = NEW.for_id;
SET NEW.event_id = (SELECT event_id FROM event_location WHERE event_location.id = NEW.for_id);
END IF;
IF (NEW.for_type = 'event_presenter' AND NEW.for_id IS NOT NULL)
THEN
SET NEW.event_presenter_id = NEW.for_id;
SET NEW.event_presentation_id = (SELECT event_presentation_id FROM event_presenter WHERE event_presenter.id = NEW.for_id);
SET NEW.event_session_id = (SELECT event_session_id FROM event_presentation WHERE event_presentation.id = NEW.event_presentation_id);
SET NEW.event_location_id = (SELECT event_location_id FROM event_session WHERE event_session.id = NEW.event_session_id);
SET NEW.event_id = (SELECT event_id FROM event_session WHERE event_session.id = NEW.event_session_id);
END IF;
IF (NEW.for_type = 'event_session' AND NEW.for_id IS NOT NULL)
THEN
SET NEW.event_session_id = NEW.for_id;
SET NEW.event_location_id = (SELECT event_location_id FROM event_session WHERE event_session.id = NEW.for_id);
SET NEW.event_id = (SELECT event_id FROM event_session WHERE event_session.id = NEW.for_id);
END IF;
END;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `before_update_event_file` BEFORE UPDATE ON `event_file` FOR EACH ROW BEGIN
BEGIN
IF (NEW.id_random IS NULL OR NEW.id_random = '' OR LENGTH(NEW.id_random) < 6)
THEN
/* SET NEW.id_random = gen_rand_pattern('3C-2N-2N-2N'); */
/* SET NEW.id_random = gen_rand_pattern('4C-2N-2N-2N'); */
SET NEW.id_random = gen_rand_str(11, 'URL');
END IF;
END;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `before_update_event_file_fix_ids` BEFORE UPDATE ON `event_file` FOR EACH ROW BEGIN
BEGIN
IF (NEW.for_type = 'event_location' AND NEW.for_id IS NOT NULL)
THEN
SET NEW.event_location_id = NEW.for_id;
SET NEW.event_id = (SELECT event_id FROM event_location WHERE event_location.id = NEW.for_id);
END IF;
IF (NEW.for_type = 'event_presenter' AND NEW.for_id IS NOT NULL)
THEN
SET NEW.event_presenter_id = NEW.for_id;
SET NEW.event_presentation_id = (SELECT event_presentation_id FROM event_presenter WHERE event_presenter.id = NEW.for_id);
SET NEW.event_session_id = (SELECT event_session_id FROM event_presentation WHERE event_presentation.id = NEW.event_presentation_id);
SET NEW.event_location_id = (SELECT event_location_id FROM event_session WHERE event_session.id = NEW.event_session_id);
SET NEW.event_id = (SELECT event_id FROM event_session WHERE event_session.id = NEW.event_session_id);
END IF;
IF (NEW.for_type = 'event_session' AND NEW.for_id IS NOT NULL)
THEN
SET NEW.event_session_id = NEW.for_id;
SET NEW.event_location_id = (SELECT event_location_id FROM event_session WHERE event_session.id = NEW.for_id);
SET NEW.event_id = (SELECT event_id FROM event_session WHERE event_session.id = NEW.for_id);
END IF;
END;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `event_file_after_delete` AFTER DELETE ON `event_file` FOR EACH ROW BEGIN
DELETE FROM hosted_file_link WHERE hosted_file_link.hosted_file_id = OLD.hosted_file_id AND hosted_file_link.link_to_type = OLD.for_type AND hosted_file_link.link_to_id = OLD.for_id;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `event_file_after_insert` AFTER INSERT ON `event_file` FOR EACH ROW BEGIN
INSERT IGNORE INTO hosted_file_link (hosted_file_id, link_to_type, link_to_id) VALUES (NEW.hosted_file_id, NEW.for_type, NEW.for_id);
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `update approved_on` BEFORE UPDATE ON `event_file` FOR EACH ROW IF NEW.approved = 1 THEN SET NEW.approved_on = CURRENT_TIMESTAMP; END IF
$$
DELIMITER ;
--
-- Indexes for dumped tables
--
--
-- Indexes for table `event_file`
--
ALTER TABLE `event_file`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `id_random` (`id_random`),
ADD UNIQUE KEY `hosted_file_id_for` (`hosted_file_id`,`for_type`,`for_id`),
ADD KEY `event_session_id` (`event_session_id`),
ADD KEY `event_id` (`event_id`),
ADD KEY `hosted_file_id` (`hosted_file_id`),
ADD KEY `event_presentation_id` (`event_presentation_id`),
ADD KEY `event_presenter_id` (`event_presenter_id`),
ADD KEY `event_location_id` (`event_location_id`),
ADD KEY `created_on` (`created_on`),
ADD KEY `updated_on` (`updated_on`),
ADD KEY `event_track_id` (`event_track_id`),
ADD KEY `event_exhibit_id` (`event_exhibit_id`),
ADD KEY `hide` (`hide`),
ADD KEY `enable` (`enable`),
ADD KEY `sort` (`sort`),
ADD KEY `priority` (`priority`),
ADD KEY `for_type` (`for_type`,`for_id`),
ADD KEY `filename` (`filename`),
ADD KEY `extension` (`extension`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `event_file`
--
ALTER TABLE `event_file`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

View File

@@ -0,0 +1,201 @@
-- phpMyAdmin SQL Dump
-- version 5.2.3
-- https://www.phpmyadmin.net/
--
-- Host: localhost
-- Generation Time: Jan 06, 2026 at 06:26 PM
-- Server version: 12.1.2-MariaDB-log
-- PHP Version: 8.4.15
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `aether_dev`
--
-- --------------------------------------------------------
--
-- Table structure for table `event_session`
--
CREATE TABLE `event_session` (
`id` int(11) NOT NULL,
`id_random` varchar(22) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
`external_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
`code` varchar(100) DEFAULT NULL,
`number` int(11) DEFAULT NULL,
`for_type` varchar(50) DEFAULT NULL COMMENT 'avoid using',
`for_id` int(11) DEFAULT NULL COMMENT 'avoid using',
`event_id` int(11) DEFAULT NULL,
`event_type_id` int(11) DEFAULT NULL,
`type_id` int(11) DEFAULT NULL COMMENT 'not used',
`type_code` varchar(25) DEFAULT NULL COMMENT 'from client',
`event_location_id` int(11) DEFAULT NULL,
`event_track_id` int(11) DEFAULT NULL,
`poc_event_person_id` int(11) DEFAULT NULL COMMENT 'still needed?',
`poc_person_id` int(11) DEFAULT NULL,
`poc_agree` tinyint(1) DEFAULT NULL COMMENT 'catchall for agreement or consent',
`poc_kv_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'advocate, chair, champion, moderator, organizer',
`passcode` varchar(25) DEFAULT NULL COMMENT 'for basic access',
`name` varchar(300) DEFAULT NULL,
`description` text DEFAULT NULL,
`proposal_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'responses to proposal questions in JSON format' CHECK (json_valid(`proposal_json`)),
`start_datetime` datetime DEFAULT NULL,
`end_datetime` datetime DEFAULT NULL,
`attend_url` text DEFAULT NULL,
`attend_url_text` text DEFAULT NULL,
`attend_url_passcode` varchar(15) DEFAULT NULL,
`attend_phone` varchar(15) DEFAULT NULL,
`attend_phone_passcode` varchar(15) DEFAULT NULL,
`attend_text` text DEFAULT NULL,
`rehearsal_start_datetime` datetime DEFAULT NULL,
`rehearsal_end_datetime` datetime DEFAULT NULL,
`rehearsal_url` text DEFAULT NULL,
`rehearsal_url_passcode` varchar(15) DEFAULT NULL COMMENT 'remove field?',
`rehearsal_phone` varchar(15) DEFAULT NULL COMMENT 'remove field?',
`rehearsal_phone_passcode` varchar(15) DEFAULT NULL COMMENT 'remove field?',
`rehearsal_text` text DEFAULT NULL,
`image_path` varchar(7) DEFAULT NULL COMMENT 'remove field?',
`download_start_datetime` datetime DEFAULT NULL,
`download_end_datetime` datetime DEFAULT NULL,
`internal_use` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'hide from non-support people',
`record_audio` tinyint(1) DEFAULT 0 COMMENT 'record presentations',
`record_video` tinyint(1) DEFAULT 0 COMMENT 'record presentations',
`internal_notes` text DEFAULT NULL COMMENT 'general notes',
`internal_notes_access` text DEFAULT NULL COMMENT 'accessibility and accommodations',
`internal_notes_av` text DEFAULT NULL COMMENT 'audio video',
`internal_notes_fb` text DEFAULT NULL COMMENT 'food and beverage',
`internal_notes_it` text DEFAULT NULL COMMENT 'IT and networking',
`internal_notes_staff` text DEFAULT NULL COMMENT 'staffing and labor',
`ux_mode` varchar(50) DEFAULT NULL COMMENT 'colloquium, lecture, panel, poster, symposium, workshop; replaces type_code',
`enable` tinyint(1) NOT NULL DEFAULT 1,
`enable_after_datetime` datetime DEFAULT NULL,
`enable_before_datetime` datetime DEFAULT NULL,
`enable_event_file_approval_option` tinyint(1) DEFAULT NULL,
`hide` tinyint(1) DEFAULT 0,
`public` tinyint(1) DEFAULT NULL,
`public_hide` tinyint(1) DEFAULT NULL,
`hide_event_launcher` tinyint(1) DEFAULT NULL,
`status` int(11) DEFAULT NULL,
`review` tinyint(1) DEFAULT NULL COMMENT 'ready for or needs review',
`approve` tinyint(1) DEFAULT NULL COMMENT 'approved',
`ready` tinyint(1) DEFAULT NULL,
`ready_on` datetime DEFAULT NULL,
`archive` tinyint(1) DEFAULT NULL,
`archive_on` datetime DEFAULT NULL,
`alert` tinyint(1) DEFAULT NULL,
`alert_msg` text DEFAULT NULL COMMENT 'a short message from user',
`priority` tinyint(1) DEFAULT 0,
`sort` int(11) DEFAULT 0,
`group` varchar(100) DEFAULT NULL,
`default_qry_str` text DEFAULT NULL COMMENT 'for FULLTEXT indexed searches',
`notes` text DEFAULT NULL,
`created_on` timestamp NOT NULL DEFAULT current_timestamp(),
`updated_on` timestamp NULL DEFAULT NULL ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Triggers `event_session`
--
DELIMITER $$
CREATE TRIGGER `after_update_event_session` AFTER UPDATE ON `event_session` FOR EACH ROW BEGIN
IF (NEW.event_location_id) THEN
UPDATE `event_file`
SET `event_file`.event_location_id = NEW.event_location_id
WHERE `event_file`.event_session_id = OLD.id OR (`event_file`.for_type = 'event_session' AND `event_file`.for_id = OLD.id);
END IF;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `before_insert_event_session` BEFORE INSERT ON `event_session` FOR EACH ROW BEGIN
BEGIN
IF (NEW.id_random IS NULL OR NEW.id_random = '' OR LENGTH(NEW.id_random) < 6)
THEN
/* SET NEW.id_random = gen_rand_pattern('3C-2N-2N-2N'); */
SET NEW.id_random = gen_rand_pattern('4C-2N-2N-2N');
/* SET NEW.id_random = gen_rand_str(11, 'URL'); */
END IF;
SET NEW.default_qry_str = event_session_default_qry_str(NEW.id_random, NEW.name, NEW.description, NEW.code, NEW.type_code, NEW.start_datetime);
END;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `before_update_event_session` BEFORE UPDATE ON `event_session` FOR EACH ROW BEGIN
BEGIN
IF (NEW.id_random IS NULL OR NEW.id_random = '' OR LENGTH(NEW.id_random) < 6)
THEN
/* SET NEW.id_random = gen_rand_pattern('3C-2N-2N-2N'); */
SET NEW.id_random = gen_rand_pattern('4C-2N-2N-2N');
/* SET NEW.id_random = gen_rand_str(11, 'URL'); */
END IF;
SET NEW.default_qry_str = event_session_default_qry_str(NEW.id_random, NEW.name, NEW.description, NEW.code, NEW.type_code, NEW.start_datetime);
END;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `event_session_after_delete` AFTER DELETE ON `event_session` FOR EACH ROW BEGIN
DELETE FROM event_file WHERE event_file.for_type = 'event_session' AND event_file.for_id = OLD.id;
DELETE FROM event_presentation WHERE event_presentation.event_session_id = OLD.id;
END
$$
DELIMITER ;
--
-- Indexes for dumped tables
--
--
-- Indexes for table `event_session`
--
ALTER TABLE `event_session`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `id_random` (`id_random`),
ADD KEY `event_id` (`event_id`),
ADD KEY `start_datetime` (`start_datetime`),
ADD KEY `event_location_id` (`event_location_id`),
ADD KEY `poc_event_person_id` (`poc_event_person_id`),
ADD KEY `created_on` (`created_on`),
ADD KEY `updated_on` (`updated_on`),
ADD KEY `sort` (`sort`),
ADD KEY `enable` (`enable`),
ADD KEY `hide` (`hide`),
ADD KEY `priority` (`priority`),
ADD KEY `name` (`name`),
ADD KEY `external_id` (`external_id`),
ADD KEY `code` (`code`),
ADD KEY `event_track_id` (`event_track_id`),
ADD KEY `hide_event_launcher` (`hide_event_launcher`),
ADD KEY `type_code` (`type_code`),
ADD KEY `poc_person_id` (`poc_person_id`),
ADD KEY `poc_agree` (`poc_agree`);
ALTER TABLE `event_session` ADD FULLTEXT KEY `tbl_fulltext_default_qry_str` (`default_qry_str`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `event_session`
--
ALTER TABLE `event_session`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

View File

@@ -0,0 +1,121 @@
-- phpMyAdmin SQL Dump
-- version 5.2.3
-- https://www.phpmyadmin.net/
--
-- Host: localhost
-- Generation Time: Jan 03, 2026 at 12:03 AM
-- Server version: 12.1.2-MariaDB-log
-- PHP Version: 8.4.15
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `aether_dev`
--
-- --------------------------------------------------------
--
-- Table structure for table `hosted_file`
--
CREATE TABLE `hosted_file` (
`id` int(11) NOT NULL,
`id_random` varchar(22) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
`hash_sha256` varchar(64) DEFAULT NULL,
`account_id` varchar(22) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
`title` varchar(500) DEFAULT NULL,
`description` text DEFAULT NULL,
`version` int(11) DEFAULT NULL,
`directory_path` varchar(1000) DEFAULT NULL,
`subdirectory_path` varchar(1000) DEFAULT NULL COMMENT 'new as of 2021-08-26',
`filename` varchar(255) DEFAULT NULL,
`extension` varchar(10) DEFAULT NULL,
`content_type` varchar(100) DEFAULT NULL,
`mimetype` varchar(100) DEFAULT NULL,
`size` int(11) UNSIGNED DEFAULT NULL COMMENT 'bytes',
`cloud_storage` text DEFAULT NULL,
`owner_user_id` int(11) DEFAULT NULL,
`group_user_id` int(11) DEFAULT NULL,
`package_name` varchar(500) DEFAULT NULL,
`hide` tinyint(1) DEFAULT 0,
`priority` tinyint(1) DEFAULT NULL,
`sort` int(11) DEFAULT NULL,
`group` varchar(100) DEFAULT NULL,
`enable` tinyint(1) DEFAULT 1,
`notes` text DEFAULT NULL,
`created_on` timestamp NOT NULL DEFAULT current_timestamp(),
`updated_on` timestamp NULL DEFAULT NULL ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Triggers `hosted_file`
--
DELIMITER $$
CREATE TRIGGER `before_insert_hosted_file` BEFORE INSERT ON `hosted_file` FOR EACH ROW BEGIN
BEGIN
IF (NEW.id_random IS NULL OR NEW.id_random = '' OR LENGTH(NEW.id_random) < 6)
THEN
/* SET NEW.id_random = gen_rand_pattern('3C-2N-2N-2N'); */
/* SET NEW.id_random = gen_rand_pattern('4C-2N-2N-2N'); */
SET NEW.id_random = gen_rand_str(11, 'URL');
END IF;
END;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `before_update_hosted_file` BEFORE UPDATE ON `hosted_file` FOR EACH ROW BEGIN
BEGIN
IF (NEW.id_random IS NULL OR NEW.id_random = '' OR LENGTH(NEW.id_random) < 6)
THEN
/* SET NEW.id_random = gen_rand_pattern('3C-2N-2N-2N'); */
/* SET NEW.id_random = gen_rand_pattern('4C-2N-2N-2N'); */
SET NEW.id_random = gen_rand_str(11, 'URL');
END IF;
END;
END
$$
DELIMITER ;
--
-- Indexes for dumped tables
--
--
-- Indexes for table `hosted_file`
--
ALTER TABLE `hosted_file`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `id_random` (`id_random`),
ADD UNIQUE KEY `hash_sha256` (`hash_sha256`),
ADD KEY `account_id` (`account_id`),
ADD KEY `created_on` (`created_on`),
ADD KEY `updated_on` (`updated_on`),
ADD KEY `filename` (`filename`),
ADD KEY `extension` (`extension`),
ADD KEY `hide` (`hide`),
ADD KEY `enable` (`enable`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `hosted_file`
--
ALTER TABLE `hosted_file`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

View File

@@ -0,0 +1,52 @@
-- phpMyAdmin SQL Dump
-- version 5.2.3
-- https://www.phpmyadmin.net/
--
-- Host: localhost
-- Generation Time: Jan 03, 2026 at 12:03 AM
-- Server version: 12.1.2-MariaDB-log
-- PHP Version: 8.4.15
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `aether_dev`
--
-- --------------------------------------------------------
--
-- Table structure for table `hosted_file_link`
--
CREATE TABLE `hosted_file_link` (
`account_id` int(11) DEFAULT NULL COMMENT 'is this needed?',
`hosted_file_id` int(11) NOT NULL,
`link_to_type` varchar(50) NOT NULL COMMENT 'change to for_object_type',
`link_to_id` int(11) NOT NULL COMMENT 'change to for_object_id',
`created_on` timestamp NOT NULL DEFAULT current_timestamp(),
`updated_on` timestamp NULL DEFAULT NULL ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='All hosted files that are actively linked or in use';
--
-- Indexes for dumped tables
--
--
-- Indexes for table `hosted_file_link`
--
ALTER TABLE `hosted_file_link`
ADD PRIMARY KEY (`hosted_file_id`,`link_to_type`,`link_to_id`) USING BTREE;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

View File

@@ -0,0 +1,138 @@
-- phpMyAdmin SQL Dump
-- version 5.2.3
-- https://www.phpmyadmin.net/
--
-- Host: localhost
-- Generation Time: Jan 02, 2026 at 10:18 PM
-- Server version: 12.1.2-MariaDB-log
-- PHP Version: 8.4.15
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `aether_dev`
--
-- --------------------------------------------------------
--
-- Table structure for table `journal`
--
CREATE TABLE `journal` (
`id` int(11) NOT NULL,
`id_random` varchar(22) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
`account_id` int(11) DEFAULT NULL,
`person_id` int(11) DEFAULT NULL,
`user_id` int(11) DEFAULT NULL,
`type_code` varchar(25) DEFAULT NULL,
`default_private` tinyint(1) DEFAULT NULL COMMENT 'default to private',
`default_public` tinyint(1) DEFAULT NULL COMMENT 'default to public',
`default_personal` tinyint(1) DEFAULT NULL COMMENT 'default to personal',
`default_professional` tinyint(1) DEFAULT NULL COMMENT 'default to professional',
`private_passcode` varchar(20) DEFAULT NULL COMMENT 'passcode to show private entries',
`public_passcode` varchar(20) DEFAULT NULL COMMENT 'passcode to show only public entries',
`name` varchar(250) NOT NULL,
`short_name` varchar(25) DEFAULT NULL,
`summary` text DEFAULT NULL,
`outline` text DEFAULT NULL,
`description` text DEFAULT NULL,
`description_html` text DEFAULT NULL,
`description_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`description_json`)),
`alert` tinyint(1) DEFAULT NULL,
`alert_msg` text DEFAULT NULL,
`allow_auth` tinyint(1) NOT NULL DEFAULT 0,
`auth_key` varchar(25) DEFAULT NULL,
`passcode` varchar(25) DEFAULT NULL,
`passcode_timeout` int(11) NOT NULL DEFAULT 300 COMMENT 'in seconds',
`cfg_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`cfg_json`)),
`data_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`data_json`)),
`enable` tinyint(1) NOT NULL DEFAULT 1,
`hide` tinyint(1) DEFAULT NULL,
`status` int(11) DEFAULT NULL,
`archive_on` datetime DEFAULT NULL,
`archive` tinyint(1) DEFAULT NULL,
`priority` tinyint(1) DEFAULT NULL,
`sort` int(11) DEFAULT NULL,
`group` varchar(100) DEFAULT NULL,
`notes` text DEFAULT NULL,
`created_on` timestamp NOT NULL DEFAULT current_timestamp(),
`updated_on` timestamp NULL DEFAULT NULL ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Triggers `journal`
--
DELIMITER $$
CREATE TRIGGER `before_insert_journal` BEFORE INSERT ON `journal` FOR EACH ROW BEGIN
BEGIN
IF (NEW.id_random IS NULL OR NEW.id_random = '' OR LENGTH(NEW.id_random) < 6)
THEN
/* SET NEW.id_random = gen_rand_pattern('3C-2N-2N-2N'); */
SET NEW.id_random = gen_rand_pattern('4C-2N-2N-2N');
/* SET NEW.id_random = gen_rand_pattern('3CN-2CN-2CN-2CN'); */
/* SET NEW.id_random = gen_rand_str(11, 'URL'); */
END IF;
/* SET NEW.default_qry_str = journal_default_qry_str(NEW.id_random, NEW.name, NEW.summary, NEW.description); */
END;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `before_update_journal` BEFORE UPDATE ON `journal` FOR EACH ROW BEGIN
BEGIN
IF (NEW.id_random IS NULL OR NEW.id_random = '' OR LENGTH(NEW.id_random) < 6)
THEN
/* SET NEW.id_random = gen_rand_pattern('3C-2N-2N-2N'); */
SET NEW.id_random = gen_rand_pattern('4C-2N-2N-2N');
/* SET NEW.id_random = gen_rand_pattern('3CN-2CN-2CN-2CN'); */
/* SET NEW.id_random = gen_rand_str(11, 'URL'); */
END IF;
/* SET NEW.default_qry_str = journal_default_qry_str(NEW.id_random, NEW.name, NEW.summary, NEW.description); */
END;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `journal_after_delete` AFTER DELETE ON `journal` FOR EACH ROW BEGIN
DELETE FROM journal_entry WHERE journal_entry.journal_id = OLD.id;
END
$$
DELIMITER ;
--
-- Indexes for dumped tables
--
--
-- Indexes for table `journal`
--
ALTER TABLE `journal`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `id_random` (`id_random`),
ADD KEY `account_id` (`account_id`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `journal`
--
ALTER TABLE `journal`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

View File

@@ -0,0 +1,166 @@
-- phpMyAdmin SQL Dump
-- version 5.2.3
-- https://www.phpmyadmin.net/
--
-- Host: localhost
-- Generation Time: Jan 02, 2026 at 10:19 PM
-- Server version: 12.1.2-MariaDB-log
-- PHP Version: 8.4.15
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `aether_dev`
--
-- --------------------------------------------------------
--
-- Table structure for table `journal_entry`
--
CREATE TABLE `journal_entry` (
`id` int(11) NOT NULL,
`id_random` varchar(22) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
`journal_id` int(11) NOT NULL,
`code` varchar(20) DEFAULT NULL,
`lu_type_id` int(11) DEFAULT NULL,
`type` varchar(50) DEFAULT NULL,
`topic_id` int(11) DEFAULT NULL,
`topic` varchar(50) DEFAULT NULL,
`activity_id` int(11) DEFAULT NULL,
`activity` varchar(50) DEFAULT NULL,
`private` tinyint(1) DEFAULT NULL COMMENT 'implies encryption if possible',
`public` tinyint(1) DEFAULT NULL,
`personal` tinyint(1) DEFAULT NULL,
`professional` tinyint(1) DEFAULT NULL,
`name` varchar(250) DEFAULT NULL,
`short_name` varchar(25) DEFAULT NULL,
`summary` text DEFAULT NULL,
`content` text DEFAULT NULL,
`content_html` text DEFAULT NULL,
`content_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`content_json`)),
`content_encrypted` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
`history` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'content history',
`history_encrypted` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'content history encrypted',
`passcode_hash` varchar(64) DEFAULT NULL COMMENT 'to match with index',
`template` tinyint(1) DEFAULT NULL COMMENT 'use as template entry',
`type_code` varchar(25) DEFAULT NULL,
`topic_code` varchar(25) DEFAULT NULL,
`category_code` varchar(25) DEFAULT NULL,
`tags` varchar(255) DEFAULT NULL COMMENT 'comma delimited list',
`start_datetime` datetime DEFAULT NULL,
`end_datetime` datetime DEFAULT NULL,
`seconds` int(11) DEFAULT NULL,
`hours` decimal(3,2) DEFAULT NULL,
`timezone` varchar(50) DEFAULT NULL,
`location` text DEFAULT NULL COMMENT 'probably an address',
`latitude` float DEFAULT NULL,
`longitude` float DEFAULT NULL,
`billable` tinyint(1) DEFAULT 0,
`billable_to_id` int(11) DEFAULT NULL,
`billiable_to` varchar(100) DEFAULT NULL,
`alert` tinyint(1) DEFAULT NULL,
`alert_msg` text DEFAULT NULL,
`data_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`data_json`)),
`enable` tinyint(1) NOT NULL DEFAULT 1,
`hide` tinyint(1) DEFAULT NULL,
`status` int(11) DEFAULT NULL,
`archive_on` datetime DEFAULT NULL,
`archive` tinyint(1) DEFAULT NULL,
`priority` tinyint(1) DEFAULT NULL,
`sort` int(11) DEFAULT NULL,
`group` varchar(100) DEFAULT NULL,
`default_qry_str` text DEFAULT NULL COMMENT 'for FULLTEXT indexed searches',
`notes` text DEFAULT NULL,
`created_on` timestamp NOT NULL DEFAULT current_timestamp(),
`updated_on` timestamp NULL DEFAULT NULL ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Triggers `journal_entry`
--
DELIMITER $$
CREATE TRIGGER `before_insert_journal_entry` BEFORE INSERT ON `journal_entry` FOR EACH ROW BEGIN
BEGIN
IF (NEW.id_random IS NULL OR NEW.id_random = '' OR LENGTH(NEW.id_random) < 6)
THEN
/* SET NEW.id_random = gen_rand_pattern('3C-2N-2N-2N'); */
/* SET NEW.id_random = gen_rand_pattern('4C-2N-2N-2N'); */
SET NEW.id_random = gen_rand_pattern('3CN-2CN-2CN-2CN');
/* SET NEW.id_random = gen_rand_str(11, 'URL'); */
END IF;
SET NEW.default_qry_str = journal_entry_default_qry_str(NEW.id_random, NEW.name, NEW.summary, NEW.content, NEW.history, NEW.category_code, NEW.tags, NEW.alert_msg, NEW.data_json);
END;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `before_update_journal_entry` BEFORE UPDATE ON `journal_entry` FOR EACH ROW BEGIN
BEGIN
IF (NEW.id_random IS NULL OR NEW.id_random = '' OR LENGTH(NEW.id_random) < 6)
THEN
/* SET NEW.id_random = gen_rand_pattern('3C-2N-2N-2N'); */
/* SET NEW.id_random = gen_rand_pattern('4C-2N-2N-2N'); */
SET NEW.id_random = gen_rand_pattern('3CN-2CN-2CN-2CN');
/* SET NEW.id_random = gen_rand_str(11, 'URL'); */
END IF;
SET NEW.default_qry_str = journal_entry_default_qry_str(NEW.id_random, NEW.name, NEW.summary, NEW.content, NEW.history, NEW.category_code, NEW.tags, NEW.alert_msg, NEW.data_json);
END;
END
$$
DELIMITER ;
--
-- Indexes for dumped tables
--
--
-- Indexes for table `journal_entry`
--
ALTER TABLE `journal_entry`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `id_random` (`id_random`),
ADD KEY `journal_id` (`journal_id`),
ADD KEY `tags` (`tags`),
ADD KEY `enable` (`enable`),
ADD KEY `hide` (`hide`),
ADD KEY `status` (`status`),
ADD KEY `priority` (`priority`),
ADD KEY `archive` (`archive`),
ADD KEY `sort` (`sort`),
ADD KEY `group` (`group`),
ADD KEY `created_on` (`created_on`),
ADD KEY `updated_on` (`updated_on`),
ADD KEY `start_datetime` (`start_datetime`),
ADD KEY `private` (`private`),
ADD KEY `public` (`public`),
ADD KEY `personal` (`personal`),
ADD KEY `professional` (`professional`),
ADD KEY `name` (`name`);
ALTER TABLE `journal_entry` ADD FULLTEXT KEY `tbl_fulltext_default_qry_str` (`default_qry_str`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `journal_entry`
--
ALTER TABLE `journal_entry`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

View File

@@ -0,0 +1,213 @@
-- phpMyAdmin SQL Dump
-- version 5.2.3
-- https://www.phpmyadmin.net/
--
-- Host: localhost
-- Generation Time: Jan 06, 2026 at 06:23 PM
-- Server version: 12.1.2-MariaDB-log
-- PHP Version: 8.4.15
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `aether_dev`
--
-- --------------------------------------------------------
--
-- Table structure for table `person`
--
CREATE TABLE `person` (
`id` int(11) NOT NULL,
`id_random` varchar(22) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
`source_code` varchar(25) DEFAULT NULL,
`external_id` varchar(75) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
`external_sys_id` varchar(75) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'generated by external system',
`account_id` int(11) DEFAULT NULL,
`user_id` int(11) DEFAULT NULL,
`organization_id` int(11) DEFAULT NULL,
`informal_name` varchar(50) DEFAULT NULL COMMENT 'nickname',
`title_names` varchar(100) DEFAULT NULL COMMENT 'prefix',
`given_name` varchar(50) NOT NULL DEFAULT '' COMMENT 'first name',
`middle_name` varchar(50) DEFAULT NULL,
`family_name` varchar(50) DEFAULT NULL COMMENT 'last name',
`designations` varchar(175) DEFAULT NULL COMMENT 'designations and suffix',
`professional_title` varchar(100) DEFAULT NULL COMMENT ' includes degrees and credentials ',
`full_name` varchar(150) DEFAULT NULL COMMENT 'set by triggers',
`full_name_override` varchar(150) DEFAULT NULL COMMENT 'was display_name',
`last_first_name` varchar(50) DEFAULT NULL COMMENT 'set by triggers',
`informal_full_name` varchar(150) DEFAULT NULL COMMENT 'set by triggers',
`affiliations` varchar(200) DEFAULT NULL,
`primary_email` varchar(254) DEFAULT NULL,
`tagline` text DEFAULT NULL,
`description` text DEFAULT NULL,
`biography` text DEFAULT NULL,
`birth_date` date DEFAULT NULL,
`death_date` date DEFAULT NULL,
`lu_gender_id` int(11) DEFAULT NULL,
`lu_sexuality_id` int(11) DEFAULT NULL,
`lu_race_id` int(11) DEFAULT NULL,
`lu_ethnicity_id` int(11) DEFAULT NULL,
`language_native` varchar(2) DEFAULT NULL,
`language_primary` varchar(2) DEFAULT NULL,
`language_secondary` varchar(2) DEFAULT NULL,
`lu_education_degree_id` int(11) DEFAULT NULL,
`lu_education_level_id` int(11) DEFAULT NULL,
`photo_path` varchar(2500) DEFAULT NULL,
`photo_bg_color` varchar(25) DEFAULT NULL,
`thumbnail_path` varchar(2500) DEFAULT NULL,
`thumbnail_bg_color` varchar(25) DEFAULT NULL,
`email_allowed` tinyint(1) DEFAULT NULL COMMENT 'global opt in or out for person',
`paper_mail_allowed` tinyint(1) DEFAULT NULL COMMENT 'global opt in or out for person',
`stripe_customer_id` varchar(50) DEFAULT NULL,
`allow_auth_key` tinyint(1) NOT NULL DEFAULT 1 COMMENT 'defaults to true',
`auth_key` varchar(22) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
`passcode` varchar(25) DEFAULT NULL COMMENT 'for basic access',
`status` varchar(25) DEFAULT NULL COMMENT 'pending, hold, approved, rejected, banned, retired, deceased',
`status_id` int(11) DEFAULT NULL COMMENT 'not sure if using yet 2022-03-15',
`hide` tinyint(1) DEFAULT NULL,
`priority` tinyint(1) DEFAULT NULL,
`sort` int(11) DEFAULT NULL,
`group` varchar(100) DEFAULT NULL,
`notes` text DEFAULT NULL,
`cfg_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'config options' CHECK (json_valid(`cfg_json`)),
`data_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`data_json`)),
`other_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
`meta_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`meta_json`)),
`enable` tinyint(1) DEFAULT 1,
`created_on` timestamp NOT NULL DEFAULT current_timestamp(),
`updated_on` timestamp NULL DEFAULT NULL ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Information that generally does not change often or ever.';
--
-- Triggers `person`
--
DELIMITER $$
CREATE TRIGGER `before_insert_person` BEFORE INSERT ON `person` FOR EACH ROW BEGIN
BEGIN
IF (NEW.id_random IS NULL OR NEW.id_random = '' OR LENGTH(NEW.id_random) < 6)
THEN
/* SET NEW.id_random = gen_rand_pattern('3C-2N-2N-2N'); */
/* SET NEW.id_random = gen_rand_pattern('4C-2N-2N-2N'); */
SET NEW.id_random = gen_rand_str(11, 'URL');
END IF;
END;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `before_insert_person_names` BEFORE INSERT ON `person` FOR EACH ROW BEGIN
SET NEW.full_name = name_for_full_name(NEW.informal_name, NEW.title_names, NEW.given_name, NEW.middle_name, NEW.family_name, NEW.designations);
SET NEW.last_first_name = name_for_last_first_name(NEW.given_name, NEW.middle_name, NEW.family_name);
SET NEW.informal_full_name = name_for_informal_full_name(NEW.informal_name, NEW.title_names, NEW.given_name, NEW.middle_name, NEW.family_name, NEW.designations);
/*
IF (NEW.full_name_override IS NULL OR NEW.full_name_override = '')
THEN
SET NEW.full_name_override = name_for_display_name(NEW.informal_name, NEW.given_name, NEW.middle_name, NEW.family_name);
END IF;
*/
/*
IF (NEW.informal_full_name_override IS NULL OR NEW.informal_full_name_override = '')
THEN
SET NEW.informal_full_name_override = name_for_informal_display_name(NEW.informal_name, NEW.given_name, NEW.middle_name, NEW.family_name);
END IF;
*/
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `before_update_person` BEFORE UPDATE ON `person` FOR EACH ROW BEGIN
BEGIN
IF (NEW.id_random IS NULL OR NEW.id_random = '' OR LENGTH(NEW.id_random) < 6)
THEN
/* SET NEW.id_random = gen_rand_pattern('3C-2N-2N-2N'); */
/* SET NEW.id_random = gen_rand_pattern('4C-2N-2N-2N'); */
SET NEW.id_random = gen_rand_str(11, 'URL');
END IF;
END;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `before_update_person_names` BEFORE UPDATE ON `person` FOR EACH ROW BEGIN
SET NEW.full_name = name_for_full_name(NEW.informal_name, NEW.title_names, NEW.given_name, NEW.middle_name, NEW.family_name, NEW.designations);
SET NEW.last_first_name = name_for_last_first_name(NEW.given_name, NEW.middle_name, NEW.family_name);
SET NEW.informal_full_name = name_for_informal_full_name(NEW.informal_name, NEW.title_names, NEW.given_name, NEW.middle_name, NEW.family_name, NEW.designations);
/*
IF (NEW.full_name_override IS NULL OR NEW.full_name_override = '')
THEN
SET NEW.full_name_override = name_for_display_name(NEW.informal_name, NEW.given_name, NEW.middle_name, NEW.family_name);
END IF;
*/
/*
IF (NEW.informal_full_name_override IS NULL OR NEW.informal_full_name_override = '')
THEN
SET NEW.informal_full_name_override = name_for_informal_display_name(NEW.informal_name, NEW.given_name, NEW.middle_name, NEW.family_name);
END IF;
*/
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `person_after_delete` AFTER DELETE ON `person` FOR EACH ROW BEGIN
DELETE FROM user WHERE user.id = old.user_id;
DELETE FROM contact WHERE contact.for_id = old.id AND contact.for_type = 'person';
END
$$
DELIMITER ;
--
-- Indexes for dumped tables
--
--
-- Indexes for table `person`
--
ALTER TABLE `person`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `id_random` (`id_random`),
ADD KEY `account_id` (`account_id`),
ADD KEY `user_id` (`user_id`),
ADD KEY `organization_id` (`organization_id`),
ADD KEY `created_on` (`created_on`),
ADD KEY `updated_on` (`updated_on`),
ADD KEY `external_id` (`external_sys_id`),
ADD KEY `family_name` (`family_name`),
ADD KEY `given_name` (`given_name`),
ADD KEY `enable` (`enable`),
ADD KEY `priority` (`priority`),
ADD KEY `sort` (`sort`),
ADD KEY `group` (`group`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `person`
--
ALTER TABLE `person`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

View File

@@ -0,0 +1,128 @@
-- phpMyAdmin SQL Dump
-- version 5.2.3
-- https://www.phpmyadmin.net/
--
-- Host: localhost
-- Generation Time: Jan 06, 2026 at 06:22 PM
-- Server version: 12.1.2-MariaDB-log
-- PHP Version: 8.4.15
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `aether_dev`
--
-- --------------------------------------------------------
--
-- Table structure for table `site`
--
CREATE TABLE `site` (
`id` int(11) NOT NULL,
`id_random` varchar(22) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
`code` varchar(100) DEFAULT NULL,
`account_id` int(11) DEFAULT NULL,
`name` varchar(200) NOT NULL,
`description` text DEFAULT NULL,
`restrict_access` tinyint(1) NOT NULL DEFAULT 1,
`access_key` varchar(22) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
`access_code_kv_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'for super, manager, administrator, trusted, public, authenticated' CHECK (json_valid(`access_code_kv_json`)),
`enable` tinyint(1) NOT NULL DEFAULT 0,
`enable_from` datetime DEFAULT NULL,
`enable_to` datetime DEFAULT NULL,
`logo_path` varchar(200) DEFAULT NULL,
`logo_bg_color` varchar(25) DEFAULT NULL,
`background_image_path` varchar(200) DEFAULT NULL,
`background_bg_color` varchar(25) DEFAULT NULL,
`site_menu_html_path` varchar(200) DEFAULT NULL COMMENT 'path to html file for site menu',
`site_menu` text DEFAULT NULL COMMENT 'not currently used; but want to use',
`title` varchar(200) DEFAULT NULL,
`header_html` text DEFAULT NULL,
`header_css` text DEFAULT NULL,
`header_image_path` varchar(200) DEFAULT NULL,
`header_image_bg_color` varchar(25) DEFAULT NULL,
`body_html` text DEFAULT NULL,
`tagline` text DEFAULT NULL COMMENT 'catchphrase or slogan',
`site_header_h1` text DEFAULT NULL COMMENT 'field not currently used',
`site_header_h2` text DEFAULT NULL COMMENT 'field not currently used',
`style_href` varchar(200) DEFAULT NULL,
`script_src` varchar(200) DEFAULT NULL,
`google_tracking_id` varchar(14) DEFAULT NULL,
`cfg_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT '{}' COMMENT 'config in JSON format' CHECK (json_valid(`cfg_json`)),
`hide` tinyint(1) DEFAULT NULL,
`notes` text DEFAULT NULL,
`created_on` timestamp NOT NULL DEFAULT current_timestamp(),
`updated_on` timestamp NULL DEFAULT NULL ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Triggers `site`
--
DELIMITER $$
CREATE TRIGGER `before_insert_site` BEFORE INSERT ON `site` FOR EACH ROW BEGIN
BEGIN
IF (NEW.id_random IS NULL OR NEW.id_random = '' OR LENGTH(NEW.id_random) < 6)
THEN
/* SET NEW.id_random = gen_rand_pattern('3C-2N-2N-2N'); */
/* SET NEW.id_random = gen_rand_pattern('4C-2N-2N-2N'); */
SET NEW.id_random = gen_rand_str(11, 'URL');
END IF;
END;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `before_update_site` BEFORE UPDATE ON `site` FOR EACH ROW BEGIN
BEGIN
IF (NEW.id_random IS NULL OR NEW.id_random = '' OR LENGTH(NEW.id_random) < 6)
THEN
/* SET NEW.id_random = gen_rand_pattern('3C-2N-2N-2N'); */
/* SET NEW.id_random = gen_rand_pattern('4C-2N-2N-2N'); */
SET NEW.id_random = gen_rand_str(11, 'URL');
END IF;
END;
END
$$
DELIMITER ;
--
-- Indexes for dumped tables
--
--
-- Indexes for table `site`
--
ALTER TABLE `site`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `id_random` (`id_random`),
ADD KEY `account_id` (`account_id`),
ADD KEY `enable` (`enable`),
ADD KEY `access_key` (`access_key`),
ADD KEY `name` (`name`),
ADD KEY `created_on` (`created_on`),
ADD KEY `updated_on` (`updated_on`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `site`
--
ALTER TABLE `site`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

View File

@@ -0,0 +1,104 @@
-- phpMyAdmin SQL Dump
-- version 5.2.3
-- https://www.phpmyadmin.net/
--
-- Host: localhost
-- Generation Time: Jan 06, 2026 at 06:22 PM
-- Server version: 12.1.2-MariaDB-log
-- PHP Version: 8.4.15
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `aether_dev`
--
-- --------------------------------------------------------
--
-- Table structure for table `site_domain`
--
CREATE TABLE `site_domain` (
`id` int(11) NOT NULL,
`id_random` varchar(22) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
`site_id` int(11) NOT NULL,
`fqdn` varchar(200) NOT NULL,
`access_key` varchar(22) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
`required_referrer` varchar(200) DEFAULT NULL,
`valid_for` int(11) DEFAULT NULL COMMENT 'number of hours to allow before checking again',
`enable` tinyint(1) DEFAULT 1,
`created_on` timestamp NOT NULL DEFAULT current_timestamp(),
`updated_on` timestamp NULL DEFAULT NULL ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Triggers `site_domain`
--
DELIMITER $$
CREATE TRIGGER `before_insert_site_domain` BEFORE INSERT ON `site_domain` FOR EACH ROW BEGIN
BEGIN
IF (NEW.id_random IS NULL OR NEW.id_random = '' OR LENGTH(NEW.id_random) < 6)
THEN
/* SET NEW.id_random = gen_rand_pattern('3C-2N-2N-2N'); */
/* SET NEW.id_random = gen_rand_pattern('4C-2N-2N-2N'); */
SET NEW.id_random = gen_rand_str(11, 'URL');
END IF;
END;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `before_update_site_domain` BEFORE UPDATE ON `site_domain` FOR EACH ROW BEGIN
BEGIN
IF (NEW.id_random IS NULL OR NEW.id_random = '' OR LENGTH(NEW.id_random) < 6)
THEN
/* SET NEW.id_random = gen_rand_pattern('3C-2N-2N-2N'); */
/* SET NEW.id_random = gen_rand_pattern('4C-2N-2N-2N'); */
SET NEW.id_random = gen_rand_str(11, 'URL');
END IF;
END;
END
$$
DELIMITER ;
--
-- Indexes for dumped tables
--
--
-- Indexes for table `site_domain`
--
ALTER TABLE `site_domain`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `id_random` (`id_random`),
ADD KEY `fqdn` (`fqdn`),
ADD KEY `access_key` (`access_key`),
ADD KEY `required_referrer` (`required_referrer`),
ADD KEY `site_id` (`site_id`),
ADD KEY `enable` (`enable`),
ADD KEY `created_on` (`created_on`),
ADD KEY `updated_on` (`updated_on`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `site_domain`
--
ALTER TABLE `site_domain`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

View File

@@ -0,0 +1,163 @@
-- phpMyAdmin SQL Dump
-- version 5.2.3
-- https://www.phpmyadmin.net/
--
-- Host: localhost
-- Generation Time: Jan 06, 2026 at 06:23 PM
-- Server version: 12.1.2-MariaDB-log
-- PHP Version: 8.4.15
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `aether_dev`
--
-- --------------------------------------------------------
--
-- Table structure for table `user`
--
CREATE TABLE `user` (
`id` int(11) NOT NULL,
`id_random` varchar(22) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT 'NULL',
`account_id` int(11) DEFAULT NULL,
`contact_id` int(11) DEFAULT NULL COMMENT 'no longer going to be used',
`organization_id` int(11) DEFAULT NULL COMMENT 'no longer going to be used',
`person_id` int(11) DEFAULT NULL COMMENT 'no longer going to be used',
`username` varchar(100) NOT NULL,
`name` varchar(100) DEFAULT NULL,
`email` varchar(254) NOT NULL,
`email_verified` tinyint(1) NOT NULL DEFAULT 0,
`password` varchar(100) DEFAULT NULL,
`allow_auth_key` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'allow use of auth key to sign in',
`auth_key` varchar(22) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'auth key for single use log in',
`enable` tinyint(1) NOT NULL DEFAULT 0,
`enable_from` datetime DEFAULT current_timestamp(),
`enable_to` datetime DEFAULT NULL,
`super` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Super user for the entire system. Can do everything.',
`manager` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Manager for the entire system. Can do almost everything.',
`administrator` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Administrator for a client account. Can do almost anything within that account.',
`public` tinyint(1) NOT NULL DEFAULT 1 COMMENT 'public or shared account',
`verified` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Is this a verified user account?',
`level` int(11) DEFAULT NULL COMMENT 'access level (1 to 5)',
`status_id` int(11) DEFAULT NULL COMMENT 'offline, away, dnd, online',
`password_set_on` timestamp NOT NULL DEFAULT current_timestamp(),
`password_reset_token` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
`password_reset_expire_on` datetime DEFAULT NULL,
`logged_in_on` timestamp NULL DEFAULT NULL,
`last_activity_on` timestamp NULL DEFAULT NULL,
`hide` tinyint(1) DEFAULT NULL,
`priority` tinyint(1) DEFAULT NULL,
`sort` int(11) DEFAULT NULL COMMENT 'used as access level',
`group` varchar(100) DEFAULT NULL COMMENT 'used as access group',
`notes` text DEFAULT NULL,
`other_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`other_json`)),
`created_on` timestamp NOT NULL DEFAULT current_timestamp(),
`updated_on` timestamp NULL DEFAULT NULL ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='The user account.';
--
-- Triggers `user`
--
DELIMITER $$
CREATE TRIGGER `after_insert_user_person_id` AFTER INSERT ON `user` FOR EACH ROW BEGIN
IF (NEW.person_id IS NOT NULL)
THEN
UPDATE person SET person.user_id = NEW.id WHERE person.id = NEW.person_id AND person.user_id IS NULL;
END IF;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `after_update_user_person_id` AFTER UPDATE ON `user` FOR EACH ROW BEGIN
IF (NEW.person_id IS NOT NULL AND OLD.person_id IS NULL)
THEN
UPDATE person SET person.user_id = NEW.id WHERE person.id = NEW.person_id AND person.user_id IS NULL;
END IF;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `before_insert_user` BEFORE INSERT ON `user` FOR EACH ROW BEGIN
BEGIN
IF (NEW.id_random IS NULL OR NEW.id_random = '' OR LENGTH(NEW.id_random) < 6)
THEN
/* SET NEW.id_random = gen_rand_pattern('3C-2N-2N-2N'); */
/* SET NEW.id_random = gen_rand_pattern('4C-2N-2N-2N'); */
SET NEW.id_random = gen_rand_str(11, 'URL');
END IF;
END;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `before_update_user` BEFORE UPDATE ON `user` FOR EACH ROW BEGIN
BEGIN
IF (NEW.id_random IS NULL OR NEW.id_random = '' OR LENGTH(NEW.id_random) < 6)
THEN
/* SET NEW.id_random = gen_rand_pattern('3C-2N-2N-2N'); */
/* SET NEW.id_random = gen_rand_pattern('4C-2N-2N-2N'); */
SET NEW.id_random = gen_rand_str(11, 'URL');
END IF;
END;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `before_update_user_email` BEFORE UPDATE ON `user` FOR EACH ROW BEGIN
IF (NEW.username IS NULL OR NEW.username = '')
THEN
SET NEW.username = NEW.email;
SET NEW.notes = CONCAT(COALESCE(`NEW`.`notes`,''), ';;sys::overide empty username');
END IF;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `update_password_set_on` BEFORE UPDATE ON `user` FOR EACH ROW IF NEW.password <> OLD.password THEN SET NEW.password_set_on = CURRENT_TIMESTAMP; END IF
$$
DELIMITER ;
--
-- Indexes for dumped tables
--
--
-- Indexes for table `user`
--
ALTER TABLE `user`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `id_random` (`id_random`),
ADD KEY `username` (`username`) USING BTREE,
ADD KEY `account_id` (`account_id`),
ADD KEY `email` (`email`),
ADD KEY `email_2` (`email`),
ADD KEY `created_on` (`created_on`),
ADD KEY `updated_on` (`updated_on`),
ADD KEY `enable` (`enable`),
ADD KEY `name` (`name`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `user`
--
ALTER TABLE `user`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;