setup.sql 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. CREATE DATABASE iv CHARACTER SET utf8 COLLATE utf8_bin;
  2. SET NAMES utf8;
  3. CONNECT iv;
  4. CREATE TABLE lang (
  5. code VARCHAR(2) PRIMARY KEY,
  6. name VARCAHR(16) NOT NULL,
  7. enabled BOOLEAN DEFAULT 0
  8. );
  9. CREATE TABLE text (
  10. id VARCHAR(32),
  11. lang VARCHAR(2) REFERENCES lang.code,
  12. section VARCHAR(32),
  13. text VARCHAR(5000) NOT NULL
  14. PRIMARY KEY(id, lang)
  15. );
  16. CREATE INDEX i_text ON text(id, lang);
  17. CREATE TABLE user (
  18. id INT AUTO_INCREMENT PRIMARY KEY,
  19. username VARCHAR(64) NOT NULL,
  20. email VARCHAR(128) NOT NULL,
  21. password CHAR(128) NOT NULL,
  22. salt CHAR(128) NOT NULL,
  23. fname VARCHAR(64),
  24. lname VARCHAR(64),
  25. picture VARCHAR(100),
  26. phone VARCHAR(16),
  27. cp VARCHAR(6),
  28. admin BOOLEAN NOT NULL DEFAULT 0,
  29. active BOOLEAN NOT NULL DEFAULT 0
  30. );
  31. CREATE TABLE login_attempts (
  32. user INT NOT NULL REFERENCES user.id,
  33. dtime VARCHAR(30) NOT NULL,
  34. success BOOLEAN NOT NULL DEFAULT 0,
  35. );
  36. CREATE TABLE permissions(
  37. user INT PRIMARY KEY REFERENCES user.id,
  38. permission VARCHAR(32) NOT NULL
  39. RIMARY KEY(user, permission)
  40. );
  41. CREATE TABLE post (
  42. id INT AUTO_INCREMENT PRIMARY KEY,
  43. permalink VARCHAR(300) NOT NULL,
  44. title VARCHAR(32) NOT NULL REFERENCES text.id,
  45. text VARCHAR(32) NOT NULL REFERENCES text.id,
  46. user INT NOT NULL REFERENCES user.id,
  47. dtime TIMESTAMP NOT NULL DEFAULT now(),
  48. visible BOOLEAN NOT NULL DEFAULT 1,
  49. comments BOOLEAN NOT NULL DEFAULT 1
  50. );
  51. CREATE TABLE post_tag (
  52. post INT NOT NULL REFERENCES post.id,
  53. tag VARCHAR(32) NOT NULL REFERENCES text.id,,
  54. PRIMARY KEY (post, tag)
  55. );
  56. CREATE TABLE post_image (
  57. id INT NOT NULL PRIMARY KEY,
  58. post INT NOT NULL REFERENCES post.id,
  59. image VARCHAR(200) NOT NULL,
  60. PRIMARY KEY(id, post)
  61. );
  62. CREATE TABLE post_comment (
  63. id INT AUTO_INCREMENT PRIMARY KEY,
  64. post INT NOT NULL REFERENCES post(id),
  65. text VARCHAR(5000) NOT NULL,
  66. dtime TIMESTAMP NOT NULL DEFAULT now(),
  67. user INT REFERENCES user.id,
  68. username VARCHAR(200),
  69. lang VARCHAR(10),
  70. approved BOOLEAN NOT NULL DEFAULT 1,
  71. visit INT REFERENCES stat_visit.id,
  72. );
  73. CREATE TABLE project (
  74. id INT AUTO_INCREMENT PRIMARY KEY,
  75. permalink VARCHAR(300) NOT NULL,
  76. title VARCHAR(32) NOT NULL REFERENCES text.id,
  77. text VARCHAR(32) NOT NULL REFERENCES text.id,
  78. user INT NOT NULL REFERENCES user.id,
  79. visible BOOLEAN NOT NULL DEFAULT 1,
  80. comments BOOLEAN NOT NULL DEFAULT 1
  81. );
  82. CREATE TABLE project_url (
  83. project INT,
  84. type VARCAHR(32),
  85. url VARCHAR(1024),
  86. PRIMARY KEY (project, type)
  87. );
  88. CREATE TABLE project_image (){
  89. id INT NOT NULL,
  90. project INT NOT NULL REFERENCES project.id,
  91. image VARCHAR(200) NOT NULL,
  92. PRIMARY KEY(id, project)
  93. }
  94. CREATE TABLE project_tag (
  95. project INT NOT NULL REFERENCES project.id,
  96. tag VARCHAR(32) NOT NULL REFERENCES text.id,,
  97. PRIMARY KEY (project, tag)
  98. );
  99. CREATE TABLE project_comment (
  100. id INT AUTO_INCREMENT PRIMARY KEY,
  101. project INT NOT NULL REFERENCES project(id),
  102. text VARCHAR(5000) NOT NULL,
  103. dtime TIMESTAMP NOT NULL DEFAULT now(),
  104. user INT REFERENCES user.id,
  105. username VARCHAR(200),
  106. lang VARCHAR(10),
  107. approved BOOLEAN NOT NULL DEFAULT 1,
  108. visit INT REFERENCES stat_visit.id,
  109. );
  110. CREATE TABLE settings (
  111. name VARCHAR(64) PRIMARY KEY,
  112. value VARCHAR(64) NOT NULL,
  113. user INT REFERENCES user.id,
  114. changed TIMESTAMP NOT NULL DEFAULT now()
  115. );
  116. CREATE TABLE stat_visit (
  117. id INT AUTO_INCREMENT PRIMARY KEY,
  118. ip VARCHAR(50),
  119. uagent VARCHAR(400),
  120. os VARCHAR(150),
  121. browser VARCHAR(150)
  122. );
  123. CREATE TABLE stat_view (
  124. id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  125. visit INT NOT NULL REFERENCES stat_visit.id,
  126. section VARCHAR(80) NOT NULL,
  127. entry VARCHAR(100) NOT NULL,
  128. dtime TIMESTAMP NOT NULL DEFAULT now()
  129. );
  130. CREATE INDEX i_visit ON stat_view(visit, dtime);