Files
Jonathan Miller 21e892013b
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 1s
Universal: Auto Version Bump / Version Bump (push) Failing after 5s
Generic: Project CI / Lint & Validate (push) Successful in 26s
Generic: Project CI / Tests (push) Has been cancelled
Generic: Repo Health / Scripts governance (push) Has been cancelled
Generic: Repo Health / Repository health (push) Has been cancelled
Generic: Repo Health / Report Issues (push) Has been cancelled
feat: scaffold Joomla package structure (#1, #2)
4 sub-extensions: com, system plugin, webservices, task plugin.
6 DB tables: pageviews, visitors, campaigns, ad_accounts, ad_metrics, reports.
Privacy-first: no cookies, daily visitor hash rotation, IP anonymization.
2026-06-11 12:03:04 -05:00

79 lines
3.5 KiB
SQL

CREATE TABLE IF NOT EXISTS `#__mokosuiteanalytics_pageviews` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`page_url` VARCHAR(1024) NOT NULL DEFAULT '',
`page_title` VARCHAR(500) NOT NULL DEFAULT '',
`referrer_url` VARCHAR(1024) DEFAULT NULL,
`referrer_domain` VARCHAR(255) DEFAULT NULL,
`visitor_hash` VARCHAR(64) NOT NULL DEFAULT '',
`device_type` VARCHAR(20) DEFAULT NULL,
`browser` VARCHAR(100) DEFAULT NULL,
`os` VARCHAR(100) DEFAULT NULL,
`country_code` CHAR(2) DEFAULT NULL,
`session_id` VARCHAR(64) DEFAULT NULL,
`created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_mokosuiteanalytics_pv_visitor` (`visitor_hash`),
KEY `idx_mokosuiteanalytics_pv_created` (`created_at`),
KEY `idx_mokosuiteanalytics_pv_url` (`page_url`(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `#__mokosuiteanalytics_visitors` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`visitor_hash` VARCHAR(64) NOT NULL,
`first_seen` DATETIME DEFAULT CURRENT_TIMESTAMP,
`last_seen` DATETIME DEFAULT CURRENT_TIMESTAMP,
`pageview_count` INT NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_mokosuiteanalytics_visitors_hash` (`visitor_hash`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `#__mokosuiteanalytics_campaigns` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL DEFAULT '',
`source` VARCHAR(100) DEFAULT NULL,
`medium` VARCHAR(100) DEFAULT NULL,
`campaign_code` VARCHAR(100) DEFAULT NULL,
`click_count` INT NOT NULL DEFAULT 0,
`conversion_count` INT NOT NULL DEFAULT 0,
`published` TINYINT(1) NOT NULL DEFAULT 1,
`created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `#__mokosuiteanalytics_ad_accounts` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`platform` VARCHAR(50) NOT NULL DEFAULT '',
`account_id` VARCHAR(255) NOT NULL DEFAULT '',
`api_credentials` TEXT COMMENT 'Encrypted JSON',
`sync_enabled` TINYINT(1) NOT NULL DEFAULT 0,
`last_sync` DATETIME DEFAULT NULL,
`published` TINYINT(1) NOT NULL DEFAULT 1,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `#__mokosuiteanalytics_ad_metrics` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`ad_account_id` INT UNSIGNED NOT NULL,
`date` DATE NOT NULL,
`impressions` INT NOT NULL DEFAULT 0,
`clicks` INT NOT NULL DEFAULT 0,
`conversions` INT NOT NULL DEFAULT 0,
`spend` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
`revenue` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
`campaign_name` VARCHAR(255) DEFAULT NULL,
`ad_group_name` VARCHAR(255) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `idx_mokosuiteanalytics_adm_account_date` (`ad_account_id`, `date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `#__mokosuiteanalytics_reports` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`title` VARCHAR(255) NOT NULL DEFAULT '',
`config` TEXT COMMENT 'JSON report configuration',
`schedule` VARCHAR(20) NOT NULL DEFAULT 'none',
`email_recipients` TEXT,
`created_by` INT NOT NULL DEFAULT 0,
`created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci;