- Remove deprecated UNKNOWN.egg-info and user_context.py - Refactor crud_ops, db_tables, and init modules - Update settings UI and save handlers (appearance, general, security) - Update services list, remove, and test DSPY files - Update sessions list DSPY file - Add multi-user test script - Update pyproject.toml dependencies
241 lines
7.0 KiB
Python
241 lines
7.0 KiB
Python
"""
|
|
Database table definitions for hermes-web-cli module.
|
|
Follows database-table-definition-spec: summary/fields/indexes/codes four-section format.
|
|
"""
|
|
|
|
# Services table definition
|
|
SERVICES_TABLE = {
|
|
"summary": {
|
|
"name": "services",
|
|
"description": "Stores Hermes service configurations for each user",
|
|
"module": "hermes-web-cli"
|
|
},
|
|
"fields": [
|
|
{
|
|
"name": "id",
|
|
"type": "varchar(64)",
|
|
"nullable": False,
|
|
"primary_key": True,
|
|
"description": "Unique service identifier (UUID)"
|
|
},
|
|
{
|
|
"name": "user_id",
|
|
"type": "varchar(64)",
|
|
"nullable": False,
|
|
"description": "Owner user ID for multi-user isolation"
|
|
},
|
|
{
|
|
"name": "name",
|
|
"type": "varchar(255)",
|
|
"nullable": False,
|
|
"description": "Service display name"
|
|
},
|
|
{
|
|
"name": "service_url",
|
|
"type": "varchar(512)",
|
|
"nullable": False,
|
|
"description": "Base URL of the Hermes service endpoint"
|
|
},
|
|
{
|
|
"name": "description",
|
|
"type": "text",
|
|
"nullable": True,
|
|
"description": "Optional service description"
|
|
},
|
|
{
|
|
"name": "apikey",
|
|
"type": "varchar(512)",
|
|
"nullable": True,
|
|
"default": "''",
|
|
"description": "API key for service authentication (X-API-Key header)"
|
|
},
|
|
{
|
|
"name": "status",
|
|
"type": "varchar(20)",
|
|
"nullable": False,
|
|
"default": "'active'",
|
|
"description": "Service status: active, inactive, error"
|
|
},
|
|
{
|
|
"name": "created_at",
|
|
"type": "timestamp",
|
|
"nullable": False,
|
|
"default": "CURRENT_TIMESTAMP",
|
|
"description": "Record creation timestamp"
|
|
},
|
|
{
|
|
"name": "updated_at",
|
|
"type": "timestamp",
|
|
"nullable": False,
|
|
"default": "CURRENT_TIMESTAMP",
|
|
"description": "Record last update timestamp"
|
|
}
|
|
],
|
|
"indexes": [
|
|
{
|
|
"name": "idx_services_user_id",
|
|
"fields": ["user_id"],
|
|
"unique": False,
|
|
"description": "Index for user-based queries"
|
|
},
|
|
{
|
|
"name": "idx_services_status",
|
|
"fields": ["status"],
|
|
"unique": False,
|
|
"description": "Index for status-based queries"
|
|
},
|
|
{
|
|
"name": "idx_services_user_status",
|
|
"fields": ["user_id", "status"],
|
|
"unique": False,
|
|
"description": "Composite index for user and status queries"
|
|
}
|
|
],
|
|
"codes": []
|
|
}
|
|
|
|
# Sessions table definition
|
|
SESSIONS_TABLE = {
|
|
"summary": {
|
|
"name": "sessions",
|
|
"description": "Stores user session information and metadata",
|
|
"module": "hermes-web-cli"
|
|
},
|
|
"fields": [
|
|
{
|
|
"name": "session_id",
|
|
"type": "varchar(64)",
|
|
"nullable": False,
|
|
"primary_key": True,
|
|
"description": "Unique session identifier (UUID)"
|
|
},
|
|
{
|
|
"name": "user_id",
|
|
"type": "varchar(64)",
|
|
"nullable": False,
|
|
"description": "Owner user ID for multi-user isolation"
|
|
},
|
|
{
|
|
"name": "service_id",
|
|
"type": "varchar(64)",
|
|
"nullable": False,
|
|
"description": "Associated service ID"
|
|
},
|
|
{
|
|
"name": "session_name",
|
|
"type": "varchar(255)",
|
|
"nullable": True,
|
|
"description": "Optional session display name"
|
|
},
|
|
{
|
|
"name": "service_name",
|
|
"type": "varchar(255)",
|
|
"nullable": False,
|
|
"description": "Name of the associated service at session creation"
|
|
},
|
|
{
|
|
"name": "status",
|
|
"type": "varchar(20)",
|
|
"nullable": False,
|
|
"default": "'active'",
|
|
"description": "Session status: active, archived, deleted"
|
|
},
|
|
{
|
|
"name": "created_at",
|
|
"type": "timestamp",
|
|
"nullable": False,
|
|
"default": "CURRENT_TIMESTAMP",
|
|
"description": "Session creation timestamp"
|
|
},
|
|
{
|
|
"name": "last_active",
|
|
"type": "timestamp",
|
|
"nullable": False,
|
|
"default": "CURRENT_TIMESTAMP",
|
|
"description": "Last activity timestamp"
|
|
},
|
|
{
|
|
"name": "message_count",
|
|
"type": "integer",
|
|
"nullable": False,
|
|
"default": "0",
|
|
"description": "Total message count in session"
|
|
}
|
|
],
|
|
"indexes": [
|
|
{
|
|
"name": "idx_sessions_user_id",
|
|
"fields": ["user_id"],
|
|
"unique": False,
|
|
"description": "Index for user-based session queries"
|
|
},
|
|
{
|
|
"name": "idx_sessions_service_id",
|
|
"fields": ["service_id"],
|
|
"unique": False,
|
|
"description": "Index for service-based session queries"
|
|
},
|
|
{
|
|
"name": "idx_sessions_status",
|
|
"fields": ["status"],
|
|
"unique": False,
|
|
"description": "Index for status-based session queries"
|
|
},
|
|
{
|
|
"name": "idx_sessions_user_status",
|
|
"fields": ["user_id", "status"],
|
|
"unique": False,
|
|
"description": "Composite index for user and status session queries"
|
|
},
|
|
{
|
|
"name": "idx_sessions_last_active",
|
|
"fields": ["last_active"],
|
|
"unique": False,
|
|
"description": "Index for recent activity queries"
|
|
}
|
|
],
|
|
"codes": []
|
|
}
|
|
|
|
# Settings table definition
|
|
SETTINGS_TABLE = {
|
|
"summary": {
|
|
"name": "settings",
|
|
"description": "Stores user-specific configuration settings",
|
|
"module": "hermes-web-cli"
|
|
},
|
|
"fields": [
|
|
{
|
|
"name": "user_id",
|
|
"type": "varchar(64)",
|
|
"nullable": False,
|
|
"primary_key": True,
|
|
"description": "User ID as primary key for user settings"
|
|
},
|
|
{
|
|
"name": "settings_json",
|
|
"type": "text",
|
|
"nullable": False,
|
|
"description": "JSON string containing all user settings"
|
|
},
|
|
{
|
|
"name": "created_at",
|
|
"type": "timestamp",
|
|
"nullable": False,
|
|
"default": "CURRENT_TIMESTAMP",
|
|
"description": "Record creation timestamp"
|
|
},
|
|
{
|
|
"name": "updated_at",
|
|
"type": "timestamp",
|
|
"nullable": False,
|
|
"default": "CURRENT_TIMESTAMP",
|
|
"description": "Record last update timestamp"
|
|
}
|
|
],
|
|
"indexes": [],
|
|
"codes": []
|
|
}
|
|
|
|
# Table definitions list for module initialization
|
|
TABLE_DEFINITIONS = [SERVICES_TABLE, SESSIONS_TABLE, SETTINGS_TABLE] |