""" 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": "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]