-- IVR Voice Generator Database Schema Export -- Generated on: 2025-07-29 22:28:31 -- Database: ivrvoicegenerato_db -- Table: activity_logs CREATE TABLE `activity_logs` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) DEFAULT NULL, `action` varchar(100) NOT NULL, `resource_type` varchar(50) DEFAULT NULL, `resource_id` int(11) DEFAULT NULL, `details` json DEFAULT NULL, `ip_address` varchar(45) DEFAULT NULL, `user_agent` text, `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), KEY `idx_user_id` (`user_id`), KEY `idx_action` (`action`), KEY `idx_created_at` (`created_at`), CONSTRAINT `activity_logs_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE SET NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- Columns in activity_logs: -- id (int(11)) [PRI] auto_increment -- user_id (int(11)) [MUL] -- action (varchar(100)) [MUL] -- resource_type (varchar(50)) -- resource_id (int(11)) -- details (json) -- ip_address (varchar(45)) -- user_agent (text) -- created_at (timestamp) [MUL] -- Indexes in activity_logs: -- PRIMARY (id) -- idx_user_id (user_id) -- idx_action (action) -- idx_created_at (created_at) -- Records in activity_logs: 0 -- Table: admin_sessions CREATE TABLE `admin_sessions` ( `id` int(11) NOT NULL AUTO_INCREMENT, `admin_user_id` int(11) NOT NULL, `session_token` varchar(255) NOT NULL, `ip_address` varchar(45) DEFAULT NULL, `user_agent` text, `expires_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `session_token` (`session_token`), KEY `idx_token` (`session_token`), KEY `idx_admin_user` (`admin_user_id`), KEY `idx_expires` (`expires_at`), CONSTRAINT `admin_sessions_ibfk_1` FOREIGN KEY (`admin_user_id`) REFERENCES `admin_users` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- Columns in admin_sessions: -- id (int(11)) [PRI] auto_increment -- admin_user_id (int(11)) [MUL] -- session_token (varchar(255)) [UNI] -- ip_address (varchar(45)) -- user_agent (text) -- expires_at (timestamp) [MUL] on update CURRENT_TIMESTAMP -- created_at (timestamp) -- Indexes in admin_sessions: -- PRIMARY (id) -- session_token (session_token) -- idx_token (session_token) -- idx_admin_user (admin_user_id) -- idx_expires (expires_at) -- Records in admin_sessions: 0 -- Table: admin_users CREATE TABLE `admin_users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `email` varchar(255) NOT NULL, `password_hash` varchar(255) NOT NULL, `role` enum('super_admin','admin','moderator') DEFAULT 'admin', `permissions` json DEFAULT NULL, `last_login` timestamp NULL DEFAULT NULL, `is_active` tinyint(1) DEFAULT '1', `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `email` (`email`), KEY `idx_email` (`email`), KEY `idx_role` (`role`), KEY `idx_active` (`is_active`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1; -- Columns in admin_users: -- id (int(11)) [PRI] auto_increment -- name (varchar(255)) -- email (varchar(255)) [UNI] -- password_hash (varchar(255)) -- role (enum('super_admin','admin','moderator')) [MUL] -- permissions (json) -- last_login (timestamp) -- is_active (tinyint(1)) [MUL] -- created_at (timestamp) -- updated_at (timestamp) on update CURRENT_TIMESTAMP -- Indexes in admin_users: -- PRIMARY (id) -- email (email) -- idx_email (email) -- idx_role (role) -- idx_active (is_active) -- Records in admin_users: 3 -- Table: ai_providers CREATE TABLE `ai_providers` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `api_endpoint` varchar(255) NOT NULL, `is_active` tinyint(1) DEFAULT '1', `default_voice` varchar(100) DEFAULT NULL, `supported_formats` json DEFAULT NULL, `rate_limit_per_minute` int(11) DEFAULT '60', `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `provider_name` varchar(50) DEFAULT NULL COMMENT 'Internal provider identifier (openai, elevenlabs, etc.)', `api_key` text COMMENT 'Encrypted API key for the provider', `model` varchar(100) DEFAULT NULL COMMENT 'Selected model/voice for this provider', PRIMARY KEY (`id`), UNIQUE KEY `provider_name` (`provider_name`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1; -- Columns in ai_providers: -- id (int(11)) [PRI] auto_increment -- name (varchar(50)) -- api_endpoint (varchar(255)) -- is_active (tinyint(1)) -- default_voice (varchar(100)) -- supported_formats (json) -- rate_limit_per_minute (int(11)) -- created_at (timestamp) -- updated_at (timestamp) on update CURRENT_TIMESTAMP -- provider_name (varchar(50)) [UNI] -- api_key (text) -- model (varchar(100)) -- Indexes in ai_providers: -- PRIMARY (id) -- provider_name (provider_name) -- Records in ai_providers: 4 -- Table: api_rate_limits CREATE TABLE `api_rate_limits` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) DEFAULT NULL, `ip_address` varchar(45) NOT NULL, `endpoint` varchar(255) NOT NULL, `requests_count` int(11) DEFAULT '1', `window_start` datetime NOT NULL, `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), KEY `idx_user_ip_endpoint` (`user_id`,`ip_address`,`endpoint`), KEY `idx_window_start` (`window_start`), CONSTRAINT `api_rate_limits_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- Columns in api_rate_limits: -- id (int(11)) [PRI] auto_increment -- user_id (int(11)) [MUL] -- ip_address (varchar(45)) -- endpoint (varchar(255)) -- requests_count (int(11)) -- window_start (datetime) [MUL] -- created_at (timestamp) -- updated_at (timestamp) on update CURRENT_TIMESTAMP -- Indexes in api_rate_limits: -- PRIMARY (id) -- idx_user_ip_endpoint (user_id, ip_address, endpoint) -- idx_window_start (window_start) -- Records in api_rate_limits: 0 -- Table: audio_files CREATE TABLE `audio_files` ( `id` int(11) NOT NULL AUTO_INCREMENT, `project_id` int(11) NOT NULL, `node_id` int(11) NOT NULL, `file_path` varchar(500) NOT NULL, `file_format` enum('mp3','wav') NOT NULL, `file_size` int(11) NOT NULL, `duration_seconds` decimal(10,2) DEFAULT NULL, `ai_provider_id` int(11) NOT NULL, `generation_settings` json DEFAULT NULL, `is_temporary` tinyint(1) DEFAULT '1', `expires_at` datetime DEFAULT NULL, `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `project_node_id` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `ai_provider_id` (`ai_provider_id`), KEY `idx_project_id` (`project_id`), KEY `idx_node_id` (`node_id`), KEY `idx_expires_at` (`expires_at`), KEY `idx_audio_files_created_at` (`created_at`), KEY `fk_audio_files_project_node` (`project_node_id`), CONSTRAINT `audio_files_ibfk_1` FOREIGN KEY (`project_id`) REFERENCES `projects` (`id`) ON DELETE CASCADE, CONSTRAINT `audio_files_ibfk_2` FOREIGN KEY (`node_id`) REFERENCES `ivr_nodes` (`id`) ON DELETE CASCADE, CONSTRAINT `audio_files_ibfk_3` FOREIGN KEY (`ai_provider_id`) REFERENCES `ai_providers` (`id`), CONSTRAINT `fk_audio_files_project_node` FOREIGN KEY (`project_node_id`) REFERENCES `project_nodes` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- Columns in audio_files: -- id (int(11)) [PRI] auto_increment -- project_id (int(11)) [MUL] -- node_id (int(11)) [MUL] -- file_path (varchar(500)) -- file_format (enum('mp3','wav')) -- file_size (int(11)) -- duration_seconds (decimal(10,2)) -- ai_provider_id (int(11)) [MUL] -- generation_settings (json) -- is_temporary (tinyint(1)) -- expires_at (datetime) [MUL] -- created_at (timestamp) [MUL] -- project_node_id (int(11)) [MUL] -- Indexes in audio_files: -- PRIMARY (id) -- ai_provider_id (ai_provider_id) -- idx_project_id (project_id) -- idx_node_id (node_id) -- idx_expires_at (expires_at) -- idx_audio_files_created_at (created_at) -- fk_audio_files_project_node (project_node_id) -- Records in audio_files: 0 -- Table: complete_tree_view ; -- Columns in complete_tree_view: -- node_id (int(11)) -- project_id (int(11)) -- parent_id (int(11)) -- node_key (varchar(10)) -- title (varchar(255)) -- message_text (text) -- voice_settings (json) -- sort_order (int(11)) -- is_root (tinyint(1)) -- project_name (varchar(255)) -- user_id (int(11)) -- file_path (varchar(500)) -- file_format (enum('mp3','wav')) -- duration_seconds (decimal(10,2)) -- Records in complete_tree_view: 0 -- Table: guest_projects CREATE TABLE `guest_projects` ( `id` int(11) NOT NULL AUTO_INCREMENT, `session_id` varchar(255) NOT NULL, `project_data` json NOT NULL, `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `expires_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `session_id` (`session_id`), KEY `idx_session_id` (`session_id`), KEY `idx_expires_at` (`expires_at`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1; -- Columns in guest_projects: -- id (int(11)) [PRI] auto_increment -- session_id (varchar(255)) [UNI] -- project_data (json) -- created_at (timestamp) -- expires_at (timestamp) [MUL] -- Indexes in guest_projects: -- PRIMARY (id) -- session_id (session_id) -- idx_session_id (session_id) -- idx_expires_at (expires_at) -- Records in guest_projects: 4 -- Table: ivr_nodes CREATE TABLE `ivr_nodes` ( `id` int(11) NOT NULL AUTO_INCREMENT, `project_id` int(11) NOT NULL, `parent_id` int(11) DEFAULT NULL, `node_key` varchar(10) NOT NULL, `title` varchar(255) NOT NULL, `message_text` text NOT NULL, `voice_settings` json DEFAULT NULL, `sort_order` int(11) DEFAULT '0', `is_root` tinyint(1) DEFAULT '0', `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `unique_project_node_key` (`project_id`,`parent_id`,`node_key`), KEY `idx_project_id` (`project_id`), KEY `idx_parent_id` (`parent_id`), KEY `idx_ivr_nodes_updated_at` (`updated_at`), CONSTRAINT `ivr_nodes_ibfk_1` FOREIGN KEY (`project_id`) REFERENCES `projects` (`id`) ON DELETE CASCADE, CONSTRAINT `ivr_nodes_ibfk_2` FOREIGN KEY (`parent_id`) REFERENCES `ivr_nodes` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- Columns in ivr_nodes: -- id (int(11)) [PRI] auto_increment -- project_id (int(11)) [MUL] -- parent_id (int(11)) [MUL] -- node_key (varchar(10)) -- title (varchar(255)) -- message_text (text) -- voice_settings (json) -- sort_order (int(11)) -- is_root (tinyint(1)) -- created_at (timestamp) -- updated_at (timestamp) [MUL] on update CURRENT_TIMESTAMP -- Indexes in ivr_nodes: -- PRIMARY (id) -- unique_project_node_key (project_id, parent_id, node_key) -- idx_project_id (project_id) -- idx_parent_id (parent_id) -- idx_ivr_nodes_updated_at (updated_at) -- Records in ivr_nodes: 0 -- Table: password_reset_tokens CREATE TABLE `password_reset_tokens` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL, `token` varchar(64) NOT NULL, `expires_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `used_at` timestamp NULL DEFAULT NULL, `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `token` (`token`), KEY `idx_user_id` (`user_id`), KEY `idx_token` (`token`), KEY `idx_expires_at` (`expires_at`), CONSTRAINT `password_reset_tokens_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1; -- Columns in password_reset_tokens: -- id (int(11)) [PRI] auto_increment -- user_id (int(11)) [MUL] -- token (varchar(64)) [UNI] -- expires_at (timestamp) [MUL] on update CURRENT_TIMESTAMP -- used_at (timestamp) -- created_at (timestamp) -- Indexes in password_reset_tokens: -- PRIMARY (id) -- token (token) -- idx_user_id (user_id) -- idx_token (token) -- idx_expires_at (expires_at) -- Records in password_reset_tokens: 1 -- Table: payments CREATE TABLE `payments` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL, `project_id` int(11) NOT NULL, `stripe_payment_id` varchar(255) NOT NULL, `stripe_session_id` varchar(255) DEFAULT NULL, `amount` decimal(10,2) NOT NULL, `currency` varchar(3) DEFAULT 'USD', `payment_type` enum('download','hosting') NOT NULL, `status` enum('pending','completed','failed','refunded') DEFAULT 'pending', `expires_at` datetime NOT NULL, `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `stripe_payment_id` (`stripe_payment_id`), KEY `idx_user_id` (`user_id`), KEY `idx_project_id` (`project_id`), KEY `idx_stripe_payment_id` (`stripe_payment_id`), KEY `idx_payments_created_at` (`created_at`), CONSTRAINT `payments_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE, CONSTRAINT `payments_ibfk_2` FOREIGN KEY (`project_id`) REFERENCES `projects` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- Columns in payments: -- id (int(11)) [PRI] auto_increment -- user_id (int(11)) [MUL] -- project_id (int(11)) [MUL] -- stripe_payment_id (varchar(255)) [UNI] -- stripe_session_id (varchar(255)) -- amount (decimal(10,2)) -- currency (varchar(3)) -- payment_type (enum('download','hosting')) -- status (enum('pending','completed','failed','refunded')) -- expires_at (datetime) -- created_at (timestamp) [MUL] -- updated_at (timestamp) on update CURRENT_TIMESTAMP -- Indexes in payments: -- PRIMARY (id) -- stripe_payment_id (stripe_payment_id) -- idx_user_id (user_id) -- idx_project_id (project_id) -- idx_stripe_payment_id (stripe_payment_id) -- idx_payments_created_at (created_at) -- Records in payments: 0 -- Table: project_nodes CREATE TABLE `project_nodes` ( `id` int(11) NOT NULL AUTO_INCREMENT, `project_id` int(11) NOT NULL, `parent_id` int(11) DEFAULT NULL, `node_key` varchar(10) NOT NULL, `title` varchar(255) NOT NULL, `message_text` text NOT NULL, `voice_settings` json DEFAULT NULL, `position_order` int(11) DEFAULT '0', `is_root` tinyint(1) DEFAULT '0', `node_data` json DEFAULT NULL, `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `unique_project_node_key` (`project_id`,`parent_id`,`node_key`), KEY `idx_project_id` (`project_id`), KEY `idx_parent_id` (`parent_id`), KEY `idx_project_nodes_updated_at` (`updated_at`), CONSTRAINT `project_nodes_ibfk_1` FOREIGN KEY (`project_id`) REFERENCES `projects` (`id`) ON DELETE CASCADE, CONSTRAINT `project_nodes_ibfk_2` FOREIGN KEY (`parent_id`) REFERENCES `project_nodes` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1; -- Columns in project_nodes: -- id (int(11)) [PRI] auto_increment -- project_id (int(11)) [MUL] -- parent_id (int(11)) [MUL] -- node_key (varchar(10)) -- title (varchar(255)) -- message_text (text) -- voice_settings (json) -- position_order (int(11)) -- is_root (tinyint(1)) -- node_data (json) -- created_at (timestamp) -- updated_at (timestamp) [MUL] on update CURRENT_TIMESTAMP -- Indexes in project_nodes: -- PRIMARY (id) -- unique_project_node_key (project_id, parent_id, node_key) -- idx_project_id (project_id) -- idx_parent_id (parent_id) -- idx_project_nodes_updated_at (updated_at) -- Records in project_nodes: 1 -- Table: projects CREATE TABLE `projects` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) DEFAULT NULL, `name` varchar(255) NOT NULL, `description` text, `ai_provider_id` int(11) DEFAULT '1', `voice_settings` json DEFAULT NULL, `style_prompt` text, `payment_status` enum('free','paid','hosted') DEFAULT 'free', `payment_date` datetime DEFAULT NULL, `payment_expires` datetime DEFAULT NULL, `stripe_payment_id` varchar(255) DEFAULT NULL, `is_public` tinyint(1) DEFAULT '0', `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `is_active` tinyint(1) DEFAULT '0', `owner_id` int(11) DEFAULT NULL, `last_accessed_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `download_count` int(11) DEFAULT '0', `status` enum('draft','active','completed') DEFAULT 'draft', PRIMARY KEY (`id`), KEY `ai_provider_id` (`ai_provider_id`), KEY `idx_user_id` (`user_id`), KEY `idx_payment_status` (`payment_status`), KEY `idx_projects_updated_at` (`updated_at`), KEY `idx_projects_is_active` (`is_active`), KEY `idx_projects_owner_id` (`owner_id`), KEY `idx_projects_last_accessed` (`last_accessed_at`), CONSTRAINT `fk_projects_owner` FOREIGN KEY (`owner_id`) REFERENCES `users` (`id`) ON DELETE CASCADE, CONSTRAINT `projects_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE, CONSTRAINT `projects_ibfk_2` FOREIGN KEY (`ai_provider_id`) REFERENCES `ai_providers` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1; -- Columns in projects: -- id (int(11)) [PRI] auto_increment -- user_id (int(11)) [MUL] -- name (varchar(255)) -- description (text) -- ai_provider_id (int(11)) [MUL] -- voice_settings (json) -- style_prompt (text) -- payment_status (enum('free','paid','hosted')) [MUL] -- payment_date (datetime) -- payment_expires (datetime) -- stripe_payment_id (varchar(255)) -- is_public (tinyint(1)) -- created_at (timestamp) -- updated_at (timestamp) [MUL] on update CURRENT_TIMESTAMP -- is_active (tinyint(1)) [MUL] -- owner_id (int(11)) [MUL] -- last_accessed_at (timestamp) [MUL] -- download_count (int(11)) -- status (enum('draft','active','completed')) -- Indexes in projects: -- PRIMARY (id) -- ai_provider_id (ai_provider_id) -- idx_user_id (user_id) -- idx_payment_status (payment_status) -- idx_projects_updated_at (updated_at) -- idx_projects_is_active (is_active) -- idx_projects_owner_id (owner_id) -- idx_projects_last_accessed (last_accessed_at) -- Records in projects: 1 -- Table: user_sessions CREATE TABLE `user_sessions` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) DEFAULT NULL, `session_token` varchar(255) NOT NULL, `guest_session` tinyint(1) DEFAULT '0', `ip_address` varchar(45) DEFAULT NULL, `user_agent` text, `expires_at` datetime NOT NULL, `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `session_token` (`session_token`), KEY `idx_session_token` (`session_token`), KEY `idx_user_id` (`user_id`), KEY `idx_expires_at` (`expires_at`), CONSTRAINT `user_sessions_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=latin1; -- Columns in user_sessions: -- id (int(11)) [PRI] auto_increment -- user_id (int(11)) [MUL] -- session_token (varchar(255)) [UNI] -- guest_session (tinyint(1)) -- ip_address (varchar(45)) -- user_agent (text) -- expires_at (datetime) [MUL] -- created_at (timestamp) -- updated_at (timestamp) on update CURRENT_TIMESTAMP -- Indexes in user_sessions: -- PRIMARY (id) -- session_token (session_token) -- idx_session_token (session_token) -- idx_user_id (user_id) -- idx_expires_at (expires_at) -- Records in user_sessions: 12 -- Table: users CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `email` varchar(255) NOT NULL, `password_hash` varchar(255) NOT NULL, `first_name` varchar(100) DEFAULT NULL, `last_name` varchar(100) DEFAULT NULL, `subscription_tier` enum('free','paid','hosted') DEFAULT 'free', `subscription_expires` datetime DEFAULT NULL, `email_verified` tinyint(1) DEFAULT '0', `verification_token` varchar(255) DEFAULT NULL, `reset_token` varchar(255) DEFAULT NULL, `reset_token_expires` datetime DEFAULT NULL, `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `last_login_at` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `email` (`email`), KEY `idx_email` (`email`), KEY `idx_verification_token` (`verification_token`), KEY `idx_reset_token` (`reset_token`) ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1; -- Columns in users: -- id (int(11)) [PRI] auto_increment -- email (varchar(255)) [UNI] -- password_hash (varchar(255)) -- first_name (varchar(100)) -- last_name (varchar(100)) -- subscription_tier (enum('free','paid','hosted')) -- subscription_expires (datetime) -- email_verified (tinyint(1)) -- verification_token (varchar(255)) [MUL] -- reset_token (varchar(255)) [MUL] -- reset_token_expires (datetime) -- created_at (timestamp) -- updated_at (timestamp) on update CURRENT_TIMESTAMP -- last_login_at (timestamp) -- Indexes in users: -- PRIMARY (id) -- email (email) -- idx_email (email) -- idx_verification_token (verification_token) -- idx_reset_token (reset_token) -- Records in users: 3 -- View: complete_tree_view CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `complete_tree_view` AS select `n`.`id` AS `node_id`,`n`.`project_id` AS `project_id`,`n`.`parent_id` AS `parent_id`,`n`.`node_key` AS `node_key`,`n`.`title` AS `title`,`n`.`message_text` AS `message_text`,`n`.`voice_settings` AS `voice_settings`,`n`.`sort_order` AS `sort_order`,`n`.`is_root` AS `is_root`,`p`.`name` AS `project_name`,`p`.`user_id` AS `user_id`,`af`.`file_path` AS `file_path`,`af`.`file_format` AS `file_format`,`af`.`duration_seconds` AS `duration_seconds` from ((`ivr_nodes` `n` left join `projects` `p` on((`n`.`project_id` = `p`.`id`))) left join `audio_files` `af` on(((`n`.`id` = `af`.`node_id`) and (`af`.`file_format` = 'mp3')))) order by `n`.`project_id`,`n`.`parent_id`,`n`.`sort_order`;