4
0

install.sql.mysql.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. <?php
  2. const SQL_CREATE_DB = <<<'SQL'
  3. CREATE DATABASE IF NOT EXISTS `%1$s` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  4. SQL;
  5. const SQL_CREATE_TABLES = <<<'SQL'
  6. CREATE TABLE IF NOT EXISTS `_category` (
  7. `id` SMALLINT NOT NULL AUTO_INCREMENT, -- v0.7
  8. `name` VARCHAR(191) NOT NULL, -- Max index length for Unicode is 191 characters (767 bytes) FreshRSS_DatabaseDAO::LENGTH_INDEX_UNICODE
  9. PRIMARY KEY (`id`),
  10. UNIQUE KEY (`name`) -- v0.7
  11. ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
  12. ENGINE = INNODB;
  13. CREATE TABLE IF NOT EXISTS `_feed` (
  14. `id` SMALLINT NOT NULL AUTO_INCREMENT, -- v0.7
  15. `url` VARCHAR(511) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
  16. `category` SMALLINT DEFAULT 0, -- v0.7
  17. `name` VARCHAR(191) NOT NULL,
  18. `website` VARCHAR(255) CHARACTER SET latin1 COLLATE latin1_bin,
  19. `description` TEXT,
  20. `lastUpdate` INT(11) DEFAULT 0, -- Until year 2038
  21. `priority` TINYINT(2) NOT NULL DEFAULT 10,
  22. `pathEntries` VARCHAR(511) DEFAULT NULL,
  23. `httpAuth` VARCHAR(511) DEFAULT NULL,
  24. `error` BOOLEAN DEFAULT 0,
  25. `keep_history` MEDIUMINT NOT NULL DEFAULT -2, -- v0.7
  26. `ttl` INT NOT NULL DEFAULT 0, -- v0.7.3
  27. `attributes` TEXT, -- v1.11.0
  28. `cache_nbEntries` INT DEFAULT 0, -- v0.7
  29. `cache_nbUnreads` INT DEFAULT 0, -- v0.7
  30. PRIMARY KEY (`id`),
  31. FOREIGN KEY (`category`) REFERENCES `_category`(`id`) ON DELETE SET NULL ON UPDATE CASCADE,
  32. UNIQUE KEY (`url`), -- v0.7
  33. INDEX (`name`), -- v0.7
  34. INDEX (`priority`), -- v0.7
  35. INDEX (`keep_history`) -- v0.7
  36. ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
  37. ENGINE = INNODB;
  38. CREATE TABLE IF NOT EXISTS `_entry` (
  39. `id` BIGINT NOT NULL, -- v0.7
  40. `guid` VARCHAR(760) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL, -- Maximum for UNIQUE is 767B
  41. `title` VARCHAR(255) NOT NULL,
  42. `author` VARCHAR(255),
  43. `content_bin` MEDIUMBLOB, -- v0.7
  44. `link` VARCHAR(1023) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
  45. `date` INT(11), -- Until year 2038
  46. `lastSeen` INT(11) DEFAULT 0, -- v1.1.1, Until year 2038
  47. `hash` BINARY(16), -- v1.1.1
  48. `is_read` BOOLEAN NOT NULL DEFAULT 0,
  49. `is_favorite` BOOLEAN NOT NULL DEFAULT 0,
  50. `id_feed` SMALLINT, -- v0.7
  51. `tags` VARCHAR(1023),
  52. PRIMARY KEY (`id`),
  53. FOREIGN KEY (`id_feed`) REFERENCES `_feed`(`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  54. UNIQUE KEY (`id_feed`,`guid`), -- v0.7
  55. INDEX (`is_favorite`), -- v0.7
  56. INDEX (`is_read`), -- v0.7
  57. INDEX `entry_lastSeen_index` (`lastSeen`), -- v1.1.1
  58. INDEX `entry_feed_read_index` (`id_feed`,`is_read`) -- v1.7
  59. ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
  60. ENGINE = INNODB;
  61. INSERT IGNORE INTO `_category` (id, name) VALUES(1, "Uncategorized");
  62. SQL;
  63. const SQL_CREATE_INDEX_ENTRY_1 = <<<'SQL'
  64. CREATE INDEX `entry_feed_read_index` ON `_entry` (`id_feed`,`is_read`); -- v1.7
  65. SQL;
  66. const SQL_CREATE_TABLE_ENTRYTMP = <<<'SQL'
  67. CREATE TABLE IF NOT EXISTS `_entrytmp` ( -- v1.7
  68. `id` BIGINT NOT NULL,
  69. `guid` VARCHAR(760) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
  70. `title` VARCHAR(255) NOT NULL,
  71. `author` VARCHAR(255),
  72. `content_bin` MEDIUMBLOB,
  73. `link` VARCHAR(1023) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
  74. `date` INT(11),
  75. `lastSeen` INT(11) DEFAULT 0,
  76. `hash` BINARY(16),
  77. `is_read` BOOLEAN NOT NULL DEFAULT 0,
  78. `is_favorite` BOOLEAN NOT NULL DEFAULT 0,
  79. `id_feed` SMALLINT,
  80. `tags` VARCHAR(1023),
  81. PRIMARY KEY (`id`),
  82. FOREIGN KEY (`id_feed`) REFERENCES `_feed`(`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  83. UNIQUE KEY (`id_feed`,`guid`),
  84. INDEX (`date`)
  85. ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
  86. ENGINE = INNODB;
  87. SQL;
  88. const SQL_CREATE_TABLE_TAGS = <<<'SQL'
  89. CREATE TABLE IF NOT EXISTS `_tag` ( -- v1.12
  90. `id` SMALLINT NOT NULL AUTO_INCREMENT,
  91. `name` VARCHAR(63) NOT NULL,
  92. `attributes` TEXT,
  93. PRIMARY KEY (`id`),
  94. UNIQUE KEY (`name`)
  95. ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
  96. ENGINE = INNODB;
  97. CREATE TABLE IF NOT EXISTS `_entrytag` ( -- v1.12
  98. `id_tag` SMALLINT,
  99. `id_entry` BIGINT,
  100. PRIMARY KEY (`id_tag`,`id_entry`),
  101. FOREIGN KEY (`id_tag`) REFERENCES `_tag`(`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  102. FOREIGN KEY (`id_entry`) REFERENCES `_entry`(`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  103. INDEX (`id_entry`)
  104. ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
  105. ENGINE = INNODB;
  106. SQL;
  107. const SQL_INSERT_FEED = <<<'SQL'
  108. INSERT IGNORE INTO `_feed` (url, category, name, website, description, ttl)
  109. VALUES(:url, 1, :name, :website, :description, 86400);
  110. SQL;
  111. const SQL_DROP_TABLES = <<<'SQL'
  112. DROP TABLE IF EXISTS `_entrytag`, `_tag`, `_entrytmp`, `_entry`, `_feed`, `_category`;
  113. SQL;
  114. const SQL_UPDATE_GUID_LATIN1_BIN = <<<'SQL'
  115. ALTER TABLE `_entrytmp` MODIFY `guid` VARCHAR(760) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL; -- v1.12
  116. ALTER TABLE `_entry` MODIFY `guid` VARCHAR(760) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL;
  117. SQL;