CREATE TABLE "acl" (
"acl_id" INTEGER PRIMARY KEY AUTOINCREMENT,
"page_id" INTEGER NOT NULL DEFAULT '0' ,
"privilege" VARCHAR(10) NOT NULL DEFAULT '' ,
"list" TEXT NOT NULL
);
CREATE UNIQUE INDEX "acl_idx_page_id" ON "acl" ("page_id", "privilege");
CREATE TABLE "auth_token" (
"auth_token_id" INTEGER PRIMARY KEY AUTOINCREMENT,
"selector" CHARACTER(12) NOT NULL DEFAULT '' ,
"token" CHARACTER(64) NOT NULL DEFAULT '' ,
"user_id" INTEGER NOT NULL DEFAULT '0' ,
"token_expires" DATETIME NULL
);
CREATE INDEX "auth_token_idx_user_id" ON "auth_token" ("user_id");
CREATE UNIQUE INDEX "auth_token_idx_selector" ON "auth_token" ("selector");
CREATE TABLE "cache" (
"cache_id" INTEGER PRIMARY KEY AUTOINCREMENT,
"hash" CHARACTER(40) NOT NULL DEFAULT '' ,
"method" VARCHAR(20) NOT NULL DEFAULT '' ,
"query" VARCHAR(255) NOT NULL DEFAULT '' ,
"cache_lang" VARCHAR(5) NOT NULL DEFAULT '' ,
"cache_time" DATETIME NULL
);
CREATE INDEX "cache_idx_hash" ON "cache" ("hash");
CREATE INDEX "cache_idx_cache_time" ON "cache" ("cache_time");
CREATE TABLE "category" (
"category_id" INTEGER PRIMARY KEY AUTOINCREMENT,
"parent_id" INTEGER NOT NULL DEFAULT '0' ,
"category_lang" VARCHAR(5) NOT NULL DEFAULT '' ,
"category" VARCHAR(255) NOT NULL DEFAULT '' ,
"category_description" TEXT NOT NULL
);
CREATE UNIQUE INDEX "category_idx_category" ON "category" ("category_lang", "category");
CREATE TABLE "category_assignment" (
"assignment_id" INTEGER PRIMARY KEY AUTOINCREMENT,
"category_id" INTEGER NOT NULL DEFAULT '0' ,
"object_type_id" INTEGER NOT NULL DEFAULT '0' ,
"object_id" INTEGER NOT NULL DEFAULT '0'
);
CREATE INDEX "category_assignment_idx_object_type_id" ON "category_assignment" ("object_type_id");
CREATE INDEX "category_assignment_idx_object_id" ON "category_assignment" ("object_id");
CREATE INDEX "category_assignment_idx_category_id" ON "category_assignment" ("category_id");
CREATE UNIQUE INDEX "category_assignment_idx_assignment" ON "category_assignment" ("category_id", "object_type_id", "object_id");
CREATE TABLE "config" (
"config_id" INTEGER PRIMARY KEY AUTOINCREMENT,
"config_name" VARCHAR(100) NOT NULL DEFAULT '' ,
"config_value" TEXT NULL
);
CREATE UNIQUE INDEX "config_idx_config_name" ON "config" ("config_name");
CREATE TABLE "external_link" (
"link_id" INTEGER PRIMARY KEY AUTOINCREMENT,
"page_id" INTEGER NOT NULL DEFAULT '0' ,
"link" TEXT NOT NULL
);
CREATE INDEX "external_link_idx_page_id" ON "external_link" ("page_id");
CREATE TABLE "file" (
"file_id" INTEGER PRIMARY KEY AUTOINCREMENT,
"page_id" INTEGER NOT NULL DEFAULT '0' ,
"user_id" INTEGER NOT NULL DEFAULT '0' ,
"file_name" VARCHAR(255) NOT NULL DEFAULT '' ,
"file_lang" VARCHAR(5) NOT NULL DEFAULT '' ,
"file_description" VARCHAR(255) NOT NULL DEFAULT '' ,
"caption" TEXT NULL ,
"author" VARCHAR(255) NOT NULL DEFAULT '' ,
"source" VARCHAR(255) NOT NULL DEFAULT '' ,
"source_url" VARCHAR(255) NOT NULL DEFAULT '' ,
"license_id" INTEGER NOT NULL DEFAULT '0' ,
"created" DATETIME NULL ,
"modified" DATETIME NULL ,
"file_size" INTEGER NOT NULL DEFAULT '0' ,
"picture_w" INTEGER NOT NULL DEFAULT '0' ,
"picture_h" INTEGER NOT NULL DEFAULT '0' ,
"file_ext" VARCHAR(10) NOT NULL DEFAULT '' ,
"mime_type" VARCHAR(255) NOT NULL DEFAULT '' ,
"file_hash" CHARACTER(40) NOT NULL DEFAULT '' ,
"deleted" TINYINT NULL DEFAULT '0'
);
CREATE INDEX "file_idx_user_id" ON "file" ("user_id");
CREATE INDEX "file_idx_page_id_2" ON "file" ("page_id", "created");
CREATE UNIQUE INDEX "file_idx_page_id" ON "file" ("page_id", "file_name");
CREATE INDEX "file_idx_file_name" ON "file" ("file_name");
CREATE INDEX "file_idx_file_hash" ON "file" ("file_hash");
CREATE INDEX "file_idx_deleted" ON "file" ("deleted");
CREATE TABLE "file_link" (
"file_link_id" INTEGER PRIMARY KEY AUTOINCREMENT,
"page_id" INTEGER NOT NULL DEFAULT '0' ,
"file_id" INTEGER NOT NULL DEFAULT '0'
);
CREATE INDEX "file_link_idx_page_id" ON "file_link" ("page_id");
CREATE INDEX "file_link_idx_file_id" ON "file_link" ("file_id");
CREATE TABLE "log" (
"log_id" INTEGER PRIMARY KEY AUTOINCREMENT,
"log_time" DATETIME NULL ,
"level" TINYINT NOT NULL DEFAULT '0' ,
"user_id" INTEGER NOT NULL DEFAULT '0' ,
"ip" VARCHAR(45) NOT NULL DEFAULT '' ,
"message" TEXT NOT NULL
);
CREATE INDEX "log_idx_user_id" ON "log" ("user_id");
CREATE INDEX "log_idx_time" ON "log" ("log_time");
CREATE INDEX "log_idx_level" ON "log" ("level");
CREATE INDEX "log_idx_ip" ON "log" ("ip");
CREATE TABLE "menu" (
"menu_id" INTEGER PRIMARY KEY AUTOINCREMENT,
"user_id" INTEGER NOT NULL DEFAULT '0' ,
"page_id" INTEGER NOT NULL DEFAULT '0' ,
"menu_lang" VARCHAR(5) NOT NULL DEFAULT '' ,
"menu_title" VARCHAR(255) NOT NULL DEFAULT '' ,
"menu_position" SMALLINT NOT NULL DEFAULT '0'
);
CREATE INDEX "menu_idx_user_id" ON "menu" ("user_id");
CREATE INDEX "menu_idx_page_id" ON "menu" ("page_id");
CREATE UNIQUE INDEX "menu_idx_menu" ON "menu" ("user_id", "page_id", "menu_lang");
CREATE INDEX "menu_idx_lang" ON "menu" ("menu_lang");
CREATE TABLE "page" (
"page_id" INTEGER PRIMARY KEY AUTOINCREMENT,
"version_id" INTEGER NOT NULL DEFAULT '1' ,
"owner_id" INTEGER NOT NULL DEFAULT '0' ,
"user_id" INTEGER NOT NULL DEFAULT '0' ,
"tag" VARCHAR(255) NOT NULL DEFAULT '' ,
"title" VARCHAR(255) NOT NULL DEFAULT '' ,
"menu_tag" VARCHAR(255) NOT NULL DEFAULT '' ,
"depth" INTEGER NOT NULL DEFAULT '0' ,
"parent_id" INTEGER NOT NULL DEFAULT '0' ,
"created" DATETIME NULL ,
"modified" DATETIME NULL ,
"body" TEXT NOT NULL ,
"body_r" TEXT NOT NULL ,
"body_toc" TEXT NOT NULL ,
"formatting" VARCHAR(20) NOT NULL DEFAULT 'wacko' ,
"edit_note" VARCHAR(255) NOT NULL DEFAULT '' ,
"minor_edit" TINYINT NULL DEFAULT '0' ,
"page_size" INTEGER NOT NULL DEFAULT '0' ,
"license_id" INTEGER NOT NULL DEFAULT '0' ,
"reviewed" TINYINT NOT NULL DEFAULT '0' ,
"reviewed_time" DATETIME NULL ,
"reviewer_id" INTEGER NOT NULL DEFAULT '0' ,
"ip" VARCHAR(45) NOT NULL DEFAULT '' ,
"latest" TINYINT NULL DEFAULT '1' ,
"handler" VARCHAR(30) NOT NULL DEFAULT 'page' ,
"comment_on_id" INTEGER NOT NULL DEFAULT '0' ,
"comments" INTEGER NOT NULL DEFAULT '0' ,
"files" INTEGER NOT NULL DEFAULT '0' ,
"revisions" INTEGER NOT NULL DEFAULT '0' ,
"hits" INTEGER NOT NULL DEFAULT '0' ,
"theme" VARCHAR(20) NULL ,
"page_lang" VARCHAR(5) NOT NULL DEFAULT '' ,
"commented" DATETIME NULL ,
"description" VARCHAR(255) NOT NULL DEFAULT '' ,
"keywords" VARCHAR(255) NOT NULL DEFAULT '' ,
"footer_comments" TINYINT NULL ,
"footer_files" TINYINT NULL ,
"hide_toc" TINYINT NULL ,
"hide_index" TINYINT NULL ,
"tree_level" TINYINT NOT NULL DEFAULT '0' ,
"show_menu_tag" TINYINT NOT NULL DEFAULT '0' ,
"allow_rawhtml" TINYINT NULL ,
"disable_safehtml" TINYINT NULL ,
"typografica" TINYINT NULL ,
"noindex" TINYINT NULL DEFAULT '0' ,
"deleted" TINYINT NULL DEFAULT '0'
);
CREATE INDEX "page_idx_user_id" ON "page" ("user_id");
CREATE INDEX "page_idx_title" ON "page" ("title");
CREATE UNIQUE INDEX "page_idx_tag" ON "page" ("tag");
CREATE INDEX "page_idx_reviewed" ON "page" ("reviewed");
CREATE INDEX "page_idx_owner_id" ON "page" ("owner_id");
CREATE INDEX "page_idx_modified" ON "page" ("modified");
CREATE INDEX "page_idx_minor_edit" ON "page" ("minor_edit");
CREATE INDEX "page_idx_depth" ON "page" ("depth");
CREATE INDEX "page_idx_deleted" ON "page" ("deleted");
CREATE INDEX "page_idx_created" ON "page" ("created");
CREATE INDEX "page_idx_comment_on_id" ON "page" ("comment_on_id");
CREATE INDEX "page_idx_commented" ON "page" ("commented");
DELIMITER ;;
CREATE TRIGGER page_ai AFTER INSERT ON page
BEGIN
INSERT INTO page_fts (rowid, title, body)
VALUES (new.id, new.title, new.body);
END;;
CREATE TRIGGER page_ad AFTER DELETE ON page
BEGIN
INSERT INTO page_fts (page_fts, rowid, title, body)
VALUES ('delete', old.id, old.title, old.body);
END;;
CREATE TRIGGER page_au AFTER UPDATE ON page BEGIN INSERT INTO page_fts (rowid, title, body)
VALUES (new.page_id, new.title, new.body); END;;
DELIMITER ;
CREATE VIRTUAL TABLE page_fts USING fts5(
page_id,
owner_id,
user_id,
created,
modified,
tag,
title,
body,comment_on_id, page_lang,
page_size UNINDEXED,
comments UNINDEXED,
content='page',
content_rowid='page_id');
CREATE TABLE "page_link" (
"link_id" INTEGER PRIMARY KEY AUTOINCREMENT,
"from_page_id" INTEGER NOT NULL DEFAULT '0' ,
"to_page_id" INTEGER NOT NULL DEFAULT '0' ,
"to_tag" VARCHAR(255) NOT NULL DEFAULT ''
);
CREATE INDEX "page_link_idx_to" ON "page_link" ("to_tag");
CREATE INDEX "page_link_idx_from_tag" ON "page_link" ("from_page_id", "to_tag");
CREATE INDEX "page_link_idx_from_page_id" ON "page_link" ("from_page_id");
CREATE TABLE "referrer" (
"referrer_id" INTEGER PRIMARY KEY AUTOINCREMENT,
"page_id" INTEGER NOT NULL DEFAULT '0' ,
"referrer" VARCHAR(2083) NOT NULL DEFAULT '' ,
"referrer_time" DATETIME NULL ,
"ip" VARCHAR(45) NOT NULL DEFAULT '' ,
"user_agent" TEXT NULL
);
CREATE INDEX "referrer_idx_referrer_time" ON "referrer" ("referrer_time");
CREATE INDEX "referrer_idx_page_id" ON "referrer" ("page_id");
CREATE TABLE "revision" (
"revision_id" INTEGER PRIMARY KEY AUTOINCREMENT,
"page_id" INTEGER NOT NULL DEFAULT '0' ,
"version_id" INTEGER NOT NULL DEFAULT '0' ,
"owner_id" INTEGER NOT NULL DEFAULT '0' ,
"user_id" INTEGER NOT NULL DEFAULT '0' ,
"tag" VARCHAR(255) NOT NULL DEFAULT '' ,
"title" VARCHAR(255) NOT NULL DEFAULT '' ,
"menu_tag" VARCHAR(255) NOT NULL DEFAULT '' ,
"created" DATETIME NULL ,
"modified" DATETIME NULL ,
"body" TEXT NOT NULL ,
"body_r" TEXT NOT NULL ,
"formatting" VARCHAR(20) NOT NULL DEFAULT '' ,
"edit_note" VARCHAR(255) NOT NULL DEFAULT '' ,
"minor_edit" TINYINT NULL DEFAULT '0' ,
"page_size" INTEGER NOT NULL DEFAULT '0' ,
"reviewed" TINYINT NOT NULL DEFAULT '0' ,
"reviewed_time" DATETIME NULL ,
"reviewer_id" INTEGER NOT NULL DEFAULT '0' ,
"latest" TINYINT NULL DEFAULT '0' ,
"ip" VARCHAR(45) NOT NULL DEFAULT '' ,
"handler" VARCHAR(30) NOT NULL DEFAULT 'page' ,
"comment_on_id" INTEGER NOT NULL DEFAULT '0' ,
"page_lang" VARCHAR(5) NOT NULL DEFAULT '' ,
"description" VARCHAR(255) NOT NULL DEFAULT '' ,
"keywords" VARCHAR(255) NOT NULL DEFAULT '' ,
"deleted" TINYINT NULL DEFAULT '0'
);
CREATE INDEX "revision_idx_version_id" ON "revision" ("version_id");
CREATE INDEX "revision_idx_user_id" ON "revision" ("user_id");
CREATE INDEX "revision_idx_tag" ON "revision" ("tag");
CREATE INDEX "revision_idx_reviewed" ON "revision" ("reviewed");
CREATE INDEX "revision_idx_page_id" ON "revision" ("page_id");
CREATE INDEX "revision_idx_owner_id" ON "revision" ("owner_id");
CREATE INDEX "revision_idx_modified" ON "revision" ("modified");
CREATE INDEX "revision_idx_minor_edit" ON "revision" ("minor_edit");
CREATE INDEX "revision_idx_deleted" ON "revision" ("deleted");
CREATE INDEX "revision_idx_comment_on_id" ON "revision" ("comment_on_id");
CREATE TABLE "user" (
"user_id" INTEGER PRIMARY KEY AUTOINCREMENT,
"user_name" VARCHAR(80) NOT NULL DEFAULT '' ,
"real_name" VARCHAR(80) NOT NULL DEFAULT '' ,
"password" VARCHAR(255) NOT NULL DEFAULT '' ,
"email" VARCHAR(254) NOT NULL DEFAULT '' ,
"account_status" TINYINT NOT NULL DEFAULT '0' ,
"account_type" TINYINT NOT NULL DEFAULT '0' ,
"enabled" TINYINT NOT NULL DEFAULT '1' ,
"signup_time" DATETIME NULL ,
"change_password" VARCHAR(64) NOT NULL DEFAULT '' ,
"user_ip" VARCHAR(45) NOT NULL DEFAULT '' ,
"email_confirm" VARCHAR(64) NOT NULL DEFAULT '' ,
"last_visit" DATETIME NULL ,
"last_mark" DATETIME NULL ,
"login_count" INTEGER NOT NULL DEFAULT '0' ,
"password_request_count" SMALLINT NOT NULL DEFAULT '0' ,
"failed_login_count" SMALLINT NOT NULL DEFAULT '0' ,
"total_pages" INTEGER NOT NULL DEFAULT '0' ,
"total_revisions" INTEGER NOT NULL DEFAULT '0' ,
"total_comments" INTEGER NOT NULL DEFAULT '0' ,
"total_uploads" INTEGER NOT NULL DEFAULT '0'
);
CREATE UNIQUE INDEX "user_idx_user_name" ON "user" ("user_name");
CREATE INDEX "user_idx_signup_time" ON "user" ("signup_time");
CREATE INDEX "user_idx_enabled" ON "user" ("enabled");
CREATE INDEX "user_idx_account_type" ON "user" ("account_type");
CREATE TABLE "user_setting" (
"setting_id" INTEGER PRIMARY KEY AUTOINCREMENT,
"user_id" INTEGER NOT NULL DEFAULT '0' ,
"theme" VARCHAR(20) NULL ,
"user_lang" VARCHAR(5) NOT NULL DEFAULT '' ,
"list_count" INTEGER NOT NULL DEFAULT '50' ,
"menu_items" INTEGER NOT NULL DEFAULT '5' ,
"dont_redirect" TINYINT NULL ,
"send_watchmail" TINYINT NULL ,
"show_files" TINYINT NULL ,
"show_comments" TINYINT NOT NULL DEFAULT '1' ,
"doubleclick_edit" TINYINT NOT NULL DEFAULT '1' ,
"show_spaces" TINYINT NOT NULL DEFAULT '1' ,
"autocomplete" TINYINT NOT NULL DEFAULT '0' ,
"numerate_links" TINYINT NOT NULL DEFAULT '1' ,
"diff_mode" TINYINT NOT NULL DEFAULT '3' ,
"notify_minor_edit" TINYINT NOT NULL DEFAULT '1' ,
"notify_page" TINYINT NOT NULL DEFAULT '2' ,
"notify_comment" TINYINT NOT NULL DEFAULT '1' ,
"allow_intercom" TINYINT NOT NULL DEFAULT '0' ,
"allow_massemail" TINYINT NOT NULL DEFAULT '0' ,
"hide_lastsession" TINYINT NULL ,
"validate_ip" TINYINT NULL ,
"noid_pubs" TINYINT NOT NULL DEFAULT '0' ,
"session_length" TINYINT NULL ,
"timezone" VARCHAR(100) NOT NULL DEFAULT 'UTC' ,
"date_preference" VARCHAR(10) NULL DEFAULT 'default' ,
"sorting_comments" TINYINT NOT NULL DEFAULT '0' ,
"comments_offset" TINYINT NOT NULL DEFAULT '0'
);
CREATE UNIQUE INDEX "user_setting_idx_user_id" ON "user_setting" ("user_id");
CREATE INDEX "user_setting_idx_send_watchmail" ON "user_setting" ("send_watchmail");
CREATE TABLE "usergroup" (
"group_id" INTEGER PRIMARY KEY AUTOINCREMENT,
"group_name" VARCHAR(100) NOT NULL DEFAULT '' ,
"description" VARCHAR(255) NOT NULL DEFAULT '' ,
"moderator_id" INTEGER NOT NULL DEFAULT '0' ,
"created" DATETIME NULL ,
"is_system" TINYINT NOT NULL DEFAULT '0' ,
"open" TINYINT NOT NULL DEFAULT '0' ,
"active" TINYINT NOT NULL DEFAULT '0'
);
CREATE UNIQUE INDEX "usergroup_idx_name" ON "usergroup" ("group_name");
CREATE TABLE "usergroup_member" (
"group_member_id" INTEGER PRIMARY KEY AUTOINCREMENT,
"group_id" INTEGER NOT NULL DEFAULT '0' ,
"user_id" INTEGER NOT NULL DEFAULT '0'
);
CREATE UNIQUE INDEX "usergroup_member_idx_group_id" ON "usergroup_member" ("group_id", "user_id");
CREATE TABLE "watch" (
"watch_id" INTEGER PRIMARY KEY AUTOINCREMENT,
"user_id" INTEGER NOT NULL DEFAULT '0' ,
"page_id" INTEGER NOT NULL DEFAULT '0' ,
"comment_id" INTEGER NOT NULL DEFAULT '0' ,
"pending" TINYINT NOT NULL DEFAULT '0' ,
"watch_time" DATETIME NULL
);
CREATE INDEX "watch_idx_user_id" ON "watch" ("user_id");
CREATE INDEX "watch_idx_page_id" ON "watch" ("page_id");
CREATE TABLE "word" (
"word_id" INTEGER PRIMARY KEY AUTOINCREMENT,
"word" VARCHAR(255) NOT NULL DEFAULT '' ,
"replacement" VARCHAR(255) NOT NULL DEFAULT ''
);