2023-10-19 21:53:14 +02:00
|
|
|
|
|
|
|
CREATE DATABASE dragon_fire;
|
|
|
|
|
|
|
|
USE dragon_fire;
|
|
|
|
|
2024-08-15 22:53:55 +02:00
|
|
|
-- DROP TABLE posts;
|
|
|
|
-- DROP TABLE path_access_counts;
|
|
|
|
-- DROP TABLE path_errcodes;
|
|
|
|
-- DROP TABLE feed_cache;
|
|
|
|
|
2025-02-13 10:39:04 +01:00
|
|
|
CREATE TABLE dev_posts (
|
2023-10-19 21:53:14 +02:00
|
|
|
post_id INTEGER AUTO_INCREMENT,
|
|
|
|
|
|
|
|
post_path VARCHAR(255) NOT NULL,
|
|
|
|
post_path_depth INTEGER NOT NULL DEFAULT 0,
|
|
|
|
|
2024-08-15 22:53:55 +02:00
|
|
|
post_created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
post_updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
2023-10-22 12:59:20 +02:00
|
|
|
|
2024-08-15 22:53:55 +02:00
|
|
|
post_view_count INTEGER DEFAULT 0,
|
2023-12-23 10:49:54 +01:00
|
|
|
|
2024-08-15 22:53:55 +02:00
|
|
|
post_title VARCHAR(1024),
|
|
|
|
post_tags VARCHAR(1024),
|
|
|
|
post_brief TEXT(2048),
|
2023-10-19 21:53:14 +02:00
|
|
|
|
2024-08-15 22:53:55 +02:00
|
|
|
post_metadata JSON DEFAULT NULL,
|
|
|
|
post_settings_cache JSON DEFAULT NULL,
|
2023-10-19 21:53:14 +02:00
|
|
|
|
2025-03-27 23:31:29 +01:00
|
|
|
post_counters JSON DEFAULT NULL,
|
|
|
|
|
2023-10-19 21:53:14 +02:00
|
|
|
PRIMARY KEY(post_id),
|
2025-02-13 10:39:04 +01:00
|
|
|
CONSTRAINT unique_post UNIQUE (post_path),
|
2023-10-19 21:53:14 +02:00
|
|
|
|
2025-02-13 10:39:04 +01:00
|
|
|
INDEX(post_path),
|
|
|
|
INDEX(post_path_depth, post_path),
|
2024-08-15 22:53:55 +02:00
|
|
|
|
2025-02-13 10:39:04 +01:00
|
|
|
INDEX(post_created_at),
|
|
|
|
INDEX(post_updated_at),
|
2024-08-15 22:53:55 +02:00
|
|
|
|
2025-01-06 22:33:01 +01:00
|
|
|
FULLTEXT(post_path),
|
|
|
|
FULLTEXT(post_tags),
|
|
|
|
FULLTEXT(post_title),
|
|
|
|
FULLTEXT(post_brief)
|
2024-08-15 22:53:55 +02:00
|
|
|
);
|
|
|
|
|
2025-02-13 10:39:04 +01:00
|
|
|
CREATE TABLE dev_post_markdown (
|
2024-08-15 22:53:55 +02:00
|
|
|
post_id INTEGER,
|
|
|
|
|
|
|
|
post_markdown TEXT,
|
|
|
|
|
|
|
|
PRIMARY KEY(post_id),
|
2025-02-13 10:39:04 +01:00
|
|
|
FOREIGN KEY(post_id) REFERENCES dev_posts(post_id)
|
2024-08-15 22:53:55 +02:00
|
|
|
ON DELETE CASCADE,
|
|
|
|
|
|
|
|
FULLTEXT(post_markdown)
|
2023-10-19 21:53:14 +02:00
|
|
|
);
|
|
|
|
|
2025-04-28 10:46:56 +02:00
|
|
|
CREATE TABLE dev_yaps (
|
|
|
|
yap_id INTEGER AUTO_INCREMENT,
|
|
|
|
PRIMARY KEY(yap_id),
|
2025-04-10 10:34:33 +02:00
|
|
|
|
2025-04-28 10:46:56 +02:00
|
|
|
post_path VARCHAR(255) NOT NULL,
|
|
|
|
yap_category VARCHAR(32) NOT NULL,
|
|
|
|
yap_tag VARCHAR(40) NOT NULL,
|
2025-04-10 10:34:33 +02:00
|
|
|
|
2025-04-28 10:46:56 +02:00
|
|
|
-- Uniqueness detection based on associated path, category and tag
|
|
|
|
yap_hash CHAR(32) AS (MD5(CONCAT(post_path, yap_category, yap_tag))),
|
|
|
|
CONSTRAINT YAPS_UNIQUE UNIQUE(yap_hash),
|
2025-04-10 10:34:33 +02:00
|
|
|
|
2025-04-28 10:46:56 +02:00
|
|
|
yap_created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
yap_metadata JSON DEFAULT NULL,
|
2025-04-10 10:34:33 +02:00
|
|
|
|
2025-04-28 10:46:56 +02:00
|
|
|
yap_text TEXT,
|
2025-04-10 10:34:33 +02:00
|
|
|
|
|
|
|
-- Make it possible to look up changes from e.g. a commit hash inexpensively
|
2025-04-28 10:46:56 +02:00
|
|
|
INDEX(yap_tag),
|
2025-04-10 10:34:33 +02:00
|
|
|
-- Make it possible to look up specific post feeds efficiently (e.g. changelog)
|
2025-04-28 10:46:56 +02:00
|
|
|
INDEX(post_path, yap_category, yap_created_at),
|
2025-04-10 10:34:33 +02:00
|
|
|
-- Make it possible to globally look up specific feeds efficiently
|
2025-04-28 10:46:56 +02:00
|
|
|
INDEX(yap_category, yap_created_at),
|
2025-04-10 10:34:33 +02:00
|
|
|
-- And just in general, make searching feeds in a timeframe efficient
|
2025-04-28 10:46:56 +02:00
|
|
|
INDEX(yap_created_at),
|
2025-04-10 10:34:33 +02:00
|
|
|
|
2025-04-28 10:46:56 +02:00
|
|
|
FULLTEXT(yap_text)
|
2025-04-10 10:34:33 +02:00
|
|
|
);
|
|
|
|
|
2025-03-27 23:33:27 +01:00
|
|
|
CREATE TABLE analytics_summations (
|
|
|
|
time_bucket DATETIME NOT NULL,
|
|
|
|
metric VARCHAR(16) NOT NULL,
|
|
|
|
tags JSON NOT NULL,
|
2024-08-15 22:53:55 +02:00
|
|
|
|
2025-03-27 23:33:27 +01:00
|
|
|
metric_value DOUBLE PRECISION DEFAULT 0,
|
2024-08-15 22:53:55 +02:00
|
|
|
|
2025-03-27 23:33:27 +01:00
|
|
|
tags_md5 CHAR(32) AS (MD5(tags)),
|
2023-12-25 20:13:00 +01:00
|
|
|
|
2025-03-27 23:33:27 +01:00
|
|
|
INDEX(time_bucket, metric),
|
|
|
|
CONSTRAINT unique_analytic UNIQUE(time_bucket, metric, tags_md5)
|
|
|
|
);
|
2023-12-25 20:13:00 +01:00
|
|
|
|
2025-03-27 23:33:27 +01:00
|
|
|
CREATE TABLE analytics_events (
|
|
|
|
event_time DATETIME NOT NULL,
|
|
|
|
metric VARCHAR(64) NOT NULL DEFAULT 'error_msg',
|
|
|
|
tags JSON NOT NULL,
|
2023-12-25 20:13:00 +01:00
|
|
|
|
2025-03-27 23:33:27 +01:00
|
|
|
event_text TEXT,
|
2023-12-25 20:13:00 +01:00
|
|
|
|
2025-03-27 23:33:27 +01:00
|
|
|
INDEX(event_time)
|
2023-10-19 21:53:14 +02:00
|
|
|
);
|