Files
MokoSuiteInsight/source/packages/plg_system_mokosuitesight/sql/install.mysql.sql
T

102 lines
3.8 KiB
SQL

--
-- MokoSuite Insight Tables
--
CREATE TABLE IF NOT EXISTS `#__mokosuitesight_dashboards` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`title` VARCHAR(255) NOT NULL,
`description` TEXT,
`user_id` INT NOT NULL,
`is_shared` TINYINT NOT NULL DEFAULT 0,
`layout` JSON DEFAULT NULL,
`auto_refresh_seconds` INT UNSIGNED NOT NULL DEFAULT 60,
`published` TINYINT NOT NULL DEFAULT 1,
`ordering` INT NOT NULL DEFAULT 0,
`created` DATETIME NOT NULL,
`modified` DATETIME DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `idx_user` (`user_id`),
KEY `idx_shared` (`is_shared`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `#__mokosuitesight_widgets` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`dashboard_id` INT UNSIGNED NOT NULL,
`title` VARCHAR(255) NOT NULL,
`type` ENUM('counter','line_chart','bar_chart','pie_chart','gauge','table','sparkline','heatmap','funnel') NOT NULL DEFAULT 'counter',
`data_source` VARCHAR(255) NOT NULL,
`config` JSON DEFAULT NULL,
`position_x` INT UNSIGNED NOT NULL DEFAULT 0,
`position_y` INT UNSIGNED NOT NULL DEFAULT 0,
`width` INT UNSIGNED NOT NULL DEFAULT 4,
`height` INT UNSIGNED NOT NULL DEFAULT 3,
`ordering` INT NOT NULL DEFAULT 0,
`created` DATETIME NOT NULL,
PRIMARY KEY (`id`),
KEY `idx_dashboard` (`dashboard_id`),
KEY `idx_source` (`data_source`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `#__mokosuitesight_data_sources` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL,
`module` VARCHAR(100) NOT NULL,
`type` ENUM('scalar','list','timeseries') NOT NULL DEFAULT 'scalar',
`query_class` VARCHAR(500) NOT NULL DEFAULT '',
`description` TEXT,
`active` TINYINT NOT NULL DEFAULT 1,
`created` DATETIME NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `idx_name` (`name`),
KEY `idx_module` (`module`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
INSERT IGNORE INTO `#__mokosuitesight_data_sources`
(`name`, `module`, `type`, `description`, `active`, `created`) VALUES
('crm.contact_count', 'crm', 'scalar', 'Total CRM contacts', 1, NOW()),
('crm.deals_pipeline', 'crm', 'list', 'Deals by pipeline stage', 1, NOW()),
('crm.revenue_monthly', 'crm', 'timeseries', 'Monthly revenue (12 months)', 1, NOW()),
('pos.daily_sales', 'pos', 'scalar', 'Today total sales', 1, NOW()),
('hrm.headcount', 'hrm', 'scalar', 'Active employee count', 1, NOW());
CREATE TABLE IF NOT EXISTS `#__mokosuitesight_alerts` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`title` VARCHAR(255) NOT NULL,
`data_source` VARCHAR(255) NOT NULL,
`operator` ENUM('gt','gte','lt','lte','eq','neq') NOT NULL DEFAULT 'gt',
`threshold` DECIMAL(15,2) NOT NULL,
`cooldown_minutes` INT UNSIGNED NOT NULL DEFAULT 60,
`notify_user_id` INT DEFAULT NULL,
`active` TINYINT NOT NULL DEFAULT 1,
`last_triggered` DATETIME DEFAULT NULL,
`created` DATETIME NOT NULL,
PRIMARY KEY (`id`),
KEY `idx_source` (`data_source`),
KEY `idx_active` (`active`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `#__mokosuitesight_alert_log` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`alert_id` INT UNSIGNED NOT NULL,
`value` DECIMAL(15,2) NOT NULL,
`threshold` DECIMAL(15,2) NOT NULL,
`acknowledged` TINYINT NOT NULL DEFAULT 0,
`acknowledged_by` INT DEFAULT NULL,
`acknowledged_at` DATETIME DEFAULT NULL,
`triggered_at` DATETIME NOT NULL,
PRIMARY KEY (`id`),
KEY `idx_alert` (`alert_id`),
KEY `idx_ack` (`acknowledged`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `#__mokosuitesight_snapshots` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`dashboard_id` INT UNSIGNED NOT NULL,
`data` JSON NOT NULL,
`captured_at` DATETIME NOT NULL,
`captured_by` INT NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_dashboard` (`dashboard_id`),
KEY `idx_date` (`captured_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;