A semantic search engine for source code https://bitshift.benkurtovic.com/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

142 lines
4.6 KiB

  1. -- Schema version 12
  2. CREATE DATABASE `bitshift`
  3. DEFAULT CHARACTER SET utf8mb4
  4. COLLATE utf8mb4_unicode_ci;
  5. USE `bitshift`;
  6. CREATE TABLE `version` (
  7. `version` INT UNSIGNED NOT NULL
  8. ) ENGINE=InnoDB;
  9. INSERT INTO `version` VALUES (12);
  10. CREATE TABLE `stopwords`
  11. LIKE information_schema.innodb_ft_default_stopword
  12. ENGINE=InnoDB;
  13. CREATE TABLE `stopwords` (
  14. `value` varchar(18) NOT NULL DEFAULT ""
  15. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  16. INSERT INTO `stopwords` VALUES
  17. ("a"), ("about"), ("an"), ("are"), ("as"), ("at"), ("be"), ("by"), ("how"),
  18. ("i"), ("it"), ("la"), ("of"), ("on"), ("that"), ("the"), ("to"), ("und"),
  19. ("was"), ("what"), ("when"), ("where"), ("who"), ("will");
  20. CREATE TABLE `origins` (
  21. `origin_id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
  22. `origin_name` VARCHAR(64) DEFAULT NULL,
  23. `origin_url` VARCHAR(512) DEFAULT NULL,
  24. `origin_url_base` VARCHAR(512) DEFAULT NULL,
  25. PRIMARY KEY (`origin_id`)
  26. ) ENGINE=InnoDB;
  27. INSERT INTO `origins` VALUES (1, NULL, NULL, NULL);
  28. CREATE TABLE `code` (
  29. `code_id` BIGINT NOT NULL,
  30. `code_lang` SMALLINT UNSIGNED DEFAULT NULL,
  31. `code_code` MEDIUMTEXT NOT NULL,
  32. PRIMARY KEY (`code_id`),
  33. KEY (`code_lang`),
  34. FULLTEXT KEY (`code_code`)
  35. ) ENGINE=InnoDB;
  36. CREATE TABLE `codelets` (
  37. `codelet_id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  38. `codelet_name` VARCHAR(300) NOT NULL,
  39. `codelet_code_id` BIGINT NOT NULL,
  40. `codelet_origin` TINYINT UNSIGNED NOT NULL,
  41. `codelet_url` VARCHAR(512) NOT NULL,
  42. `codelet_rank` FLOAT NOT NULL,
  43. `codelet_date_created` DATETIME DEFAULT NULL,
  44. `codelet_date_modified` DATETIME DEFAULT NULL,
  45. PRIMARY KEY (`codelet_id`),
  46. FULLTEXT KEY (`codelet_name`),
  47. KEY (`codelet_rank`),
  48. KEY (`codelet_date_created`),
  49. KEY (`codelet_date_modified`),
  50. FOREIGN KEY (`codelet_code_id`)
  51. REFERENCES `code` (`code_id`)
  52. ON DELETE RESTRICT ON UPDATE CASCADE,
  53. FOREIGN KEY (`codelet_origin`)
  54. REFERENCES `origins` (`origin_id`)
  55. ON DELETE RESTRICT ON UPDATE CASCADE
  56. ) ENGINE=InnoDB;
  57. CREATE TABLE `authors` (
  58. `author_id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  59. `author_codelet` BIGINT UNSIGNED NOT NULL,
  60. `author_name` VARCHAR(128) NOT NULL,
  61. `author_url` VARCHAR(512) DEFAULT NULL,
  62. PRIMARY KEY (`author_id`),
  63. FULLTEXT KEY (`author_name`),
  64. FOREIGN KEY (`author_codelet`)
  65. REFERENCES `codelets` (`codelet_id`)
  66. ON DELETE CASCADE ON UPDATE CASCADE
  67. ) ENGINE=InnoDB;
  68. CREATE TABLE `symbols` (
  69. `symbol_id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  70. `symbol_code` BIGINT NOT NULL,
  71. `symbol_type` TINYINT UNSIGNED NOT NULL,
  72. `symbol_name` VARCHAR(512) NOT NULL,
  73. PRIMARY KEY (`symbol_id`),
  74. KEY (`symbol_type`, `symbol_name`(32)),
  75. FOREIGN KEY (`symbol_code`)
  76. REFERENCES `code` (`code_id`)
  77. ON DELETE CASCADE ON UPDATE CASCADE
  78. ) ENGINE=InnoDB;
  79. CREATE TABLE `symbol_locations` (
  80. `sloc_id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  81. `sloc_symbol` BIGINT UNSIGNED NOT NULL,
  82. `sloc_type` TINYINT UNSIGNED NOT NULL,
  83. `sloc_row` INT UNSIGNED NOT NULL,
  84. `sloc_col` INT UNSIGNED DEFAULT NULL,
  85. `sloc_end_row` INT UNSIGNED DEFAULT NULL,
  86. `sloc_end_col` INT UNSIGNED DEFAULT NULL,
  87. PRIMARY KEY (`sloc_id`),
  88. FOREIGN KEY (`sloc_symbol`)
  89. REFERENCES `symbols` (`symbol_id`)
  90. ON DELETE CASCADE ON UPDATE CASCADE
  91. ) ENGINE=InnoDB;
  92. CREATE TABLE `cache` (
  93. `cache_id` BIGINT NOT NULL,
  94. `cache_count_mnt` SMALLINT UNSIGNED NOT NULL,
  95. `cache_count_exp` TINYINT UNSIGNED NOT NULL,
  96. `cache_created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  97. PRIMARY KEY (`cache_id`)
  98. ) ENGINE=InnoDB;
  99. CREATE TABLE `cache_data` (
  100. `cdata_cache` BIGINT NOT NULL,
  101. `cdata_codelet` BIGINT UNSIGNED NOT NULL,
  102. `cdata_index` TINYINT UNSIGNED NOT NULL,
  103. PRIMARY KEY (`cdata_cache`, `cdata_codelet`),
  104. FOREIGN KEY (`cdata_cache`)
  105. REFERENCES `cache` (`cache_id`)
  106. ON DELETE CASCADE ON UPDATE CASCADE,
  107. FOREIGN KEY (`cdata_codelet`)
  108. REFERENCES `codelets` (`codelet_id`)
  109. ON DELETE CASCADE ON UPDATE CASCADE
  110. ) ENGINE=InnoDB;
  111. DELIMITER //
  112. CREATE PROCEDURE `empty_database`()
  113. BEGIN
  114. DELETE FROM `codelets`;
  115. DELETE FROM `code`;
  116. DELETE FROM `cache`;
  117. ALTER TABLE `codelets` AUTO_INCREMENT = 1;
  118. ALTER TABLE `authors` AUTO_INCREMENT = 1;
  119. ALTER TABLE `symbols` AUTO_INCREMENT = 1;
  120. ALTER TABLE `symbol_locations` AUTO_INCREMENT = 1;
  121. END//
  122. DELIMITER ;
  123. CREATE EVENT `flush_cache`
  124. ON SCHEDULE EVERY 1 HOUR
  125. DO
  126. DELETE FROM `cache`
  127. WHERE `cache_created` < DATE_SUB(NOW(), INTERVAL 1 DAY);