A semantic search engine for source code https://bitshift.benkurtovic.com/
No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 
 
 
 
 

130 líneas
4.1 KiB

  1. -- Schema version 11
  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 (11);
  10. CREATE TABLE `origins` (
  11. `origin_id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
  12. `origin_name` VARCHAR(64) DEFAULT NULL,
  13. `origin_url` VARCHAR(512) DEFAULT NULL,
  14. `origin_url_base` VARCHAR(512) DEFAULT NULL,
  15. PRIMARY KEY (`origin_id`)
  16. ) ENGINE=InnoDB;
  17. INSERT INTO `origins` VALUES (1, NULL, NULL, NULL);
  18. CREATE TABLE `code` (
  19. `code_id` BIGINT NOT NULL,
  20. `code_lang` SMALLINT UNSIGNED DEFAULT NULL,
  21. `code_code` MEDIUMTEXT NOT NULL,
  22. PRIMARY KEY (`code_id`),
  23. KEY (`code_lang`),
  24. FULLTEXT KEY (`code_code`)
  25. ) ENGINE=InnoDB;
  26. CREATE TABLE `codelets` (
  27. `codelet_id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  28. `codelet_name` VARCHAR(300) NOT NULL,
  29. `codelet_code_id` BIGINT NOT NULL,
  30. `codelet_origin` TINYINT UNSIGNED NOT NULL,
  31. `codelet_url` VARCHAR(512) NOT NULL,
  32. `codelet_rank` FLOAT NOT NULL,
  33. `codelet_date_created` DATETIME DEFAULT NULL,
  34. `codelet_date_modified` DATETIME DEFAULT NULL,
  35. PRIMARY KEY (`codelet_id`),
  36. FULLTEXT KEY (`codelet_name`),
  37. KEY (`codelet_rank`),
  38. KEY (`codelet_date_created`),
  39. KEY (`codelet_date_modified`),
  40. FOREIGN KEY (`codelet_code_id`)
  41. REFERENCES `code` (`code_id`)
  42. ON DELETE RESTRICT ON UPDATE CASCADE,
  43. FOREIGN KEY (`codelet_origin`)
  44. REFERENCES `origins` (`origin_id`)
  45. ON DELETE RESTRICT ON UPDATE CASCADE
  46. ) ENGINE=InnoDB;
  47. CREATE TABLE `authors` (
  48. `author_id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  49. `author_codelet` BIGINT UNSIGNED NOT NULL,
  50. `author_name` VARCHAR(128) NOT NULL,
  51. `author_url` VARCHAR(512) DEFAULT NULL,
  52. PRIMARY KEY (`author_id`),
  53. FULLTEXT KEY (`author_name`),
  54. FOREIGN KEY (`author_codelet`)
  55. REFERENCES `codelets` (`codelet_id`)
  56. ON DELETE CASCADE ON UPDATE CASCADE
  57. ) ENGINE=InnoDB;
  58. CREATE TABLE `symbols` (
  59. `symbol_id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  60. `symbol_code` BIGINT NOT NULL,
  61. `symbol_type` TINYINT UNSIGNED NOT NULL,
  62. `symbol_name` VARCHAR(512) NOT NULL,
  63. PRIMARY KEY (`symbol_id`),
  64. KEY (`symbol_type`, `symbol_name`(32)),
  65. FOREIGN KEY (`symbol_code`)
  66. REFERENCES `code` (`code_id`)
  67. ON DELETE CASCADE ON UPDATE CASCADE
  68. ) ENGINE=InnoDB;
  69. CREATE TABLE `symbol_locations` (
  70. `sloc_id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  71. `sloc_symbol` BIGINT UNSIGNED NOT NULL,
  72. `sloc_type` TINYINT UNSIGNED NOT NULL,
  73. `sloc_row` INT UNSIGNED NOT NULL,
  74. `sloc_col` INT UNSIGNED DEFAULT NULL,
  75. `sloc_end_row` INT UNSIGNED DEFAULT NULL,
  76. `sloc_end_col` INT UNSIGNED DEFAULT NULL,
  77. PRIMARY KEY (`sloc_id`),
  78. FOREIGN KEY (`sloc_symbol`)
  79. REFERENCES `symbols` (`symbol_id`)
  80. ON DELETE CASCADE ON UPDATE CASCADE
  81. ) ENGINE=InnoDB;
  82. CREATE TABLE `cache` (
  83. `cache_id` BIGINT NOT NULL,
  84. `cache_count_mnt` SMALLINT UNSIGNED NOT NULL,
  85. `cache_count_exp` TINYINT UNSIGNED NOT NULL,
  86. `cache_created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  87. PRIMARY KEY (`cache_id`)
  88. ) ENGINE=InnoDB;
  89. CREATE TABLE `cache_data` (
  90. `cdata_cache` BIGINT NOT NULL,
  91. `cdata_codelet` BIGINT UNSIGNED NOT NULL,
  92. `cdata_index` TINYINT UNSIGNED NOT NULL,
  93. PRIMARY KEY (`cdata_cache`, `cdata_codelet`),
  94. FOREIGN KEY (`cdata_cache`)
  95. REFERENCES `cache` (`cache_id`)
  96. ON DELETE CASCADE ON UPDATE CASCADE,
  97. FOREIGN KEY (`cdata_codelet`)
  98. REFERENCES `codelets` (`codelet_id`)
  99. ON DELETE CASCADE ON UPDATE CASCADE
  100. ) ENGINE=InnoDB;
  101. DELIMITER //
  102. CREATE PROCEDURE `empty_database`()
  103. BEGIN
  104. DELETE FROM `codelets`;
  105. DELETE FROM `code`;
  106. DELETE FROM `cache`;
  107. ALTER TABLE `codelets` AUTO_INCREMENT = 1;
  108. ALTER TABLE `authors` AUTO_INCREMENT = 1;
  109. ALTER TABLE `symbols` AUTO_INCREMENT = 1;
  110. ALTER TABLE `symbol_locations` AUTO_INCREMENT = 1;
  111. END//
  112. DELIMITER ;
  113. CREATE EVENT `flush_cache`
  114. ON SCHEDULE EVERY 1 HOUR
  115. DO
  116. DELETE FROM `cache`
  117. WHERE `cache_created` < DATE_SUB(NOW(), INTERVAL 1 DAY);