00__regenerate_foreign_keys.sql 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. PRAGMA foreign_keys = off;
  2. DROP TABLE IF EXISTS _user_old;
  3. ALTER TABLE
  4. user RENAME TO _user_old;
  5. -- user
  6. CREATE TABLE user (
  7. id INTEGER PRIMARY KEY AUTOINCREMENT,
  8. created_ts BIGINT NOT NULL DEFAULT (strftime('%s', 'now')),
  9. updated_ts BIGINT NOT NULL DEFAULT (strftime('%s', 'now')),
  10. row_status TEXT NOT NULL CHECK (row_status IN ('NORMAL', 'ARCHIVED')) DEFAULT 'NORMAL',
  11. email TEXT NOT NULL UNIQUE,
  12. role TEXT NOT NULL CHECK (role IN ('HOST', 'USER')) DEFAULT 'USER',
  13. name TEXT NOT NULL,
  14. password_hash TEXT NOT NULL,
  15. open_id TEXT NOT NULL UNIQUE
  16. );
  17. INSERT INTO
  18. user
  19. SELECT
  20. *
  21. FROM
  22. _user_old;
  23. DROP TABLE IF EXISTS _user_old;
  24. DROP TRIGGER IF EXISTS `trigger_update_user_modification_time`;
  25. CREATE TRIGGER IF NOT EXISTS `trigger_update_user_modification_time`
  26. AFTER
  27. UPDATE
  28. ON `user` FOR EACH ROW BEGIN
  29. UPDATE
  30. `user`
  31. SET
  32. updated_ts = (strftime('%s', 'now'))
  33. WHERE
  34. rowid = old.rowid;
  35. END;
  36. DROP TABLE IF EXISTS _memo_old;
  37. ALTER TABLE
  38. memo RENAME TO _memo_old;
  39. -- memo
  40. CREATE TABLE memo (
  41. id INTEGER PRIMARY KEY AUTOINCREMENT,
  42. creator_id INTEGER NOT NULL,
  43. created_ts BIGINT NOT NULL DEFAULT (strftime('%s', 'now')),
  44. updated_ts BIGINT NOT NULL DEFAULT (strftime('%s', 'now')),
  45. row_status TEXT NOT NULL CHECK (row_status IN ('NORMAL', 'ARCHIVED')) DEFAULT 'NORMAL',
  46. content TEXT NOT NULL DEFAULT '',
  47. visibility TEXT NOT NULL CHECK (visibility IN ('PUBLIC', 'PROTECTED', 'PRIVATE')) DEFAULT 'PRIVATE',
  48. FOREIGN KEY(creator_id) REFERENCES user(id) ON DELETE CASCADE
  49. );
  50. INSERT INTO
  51. memo
  52. SELECT
  53. *
  54. FROM
  55. _memo_old;
  56. DROP TABLE IF EXISTS _memo_old;
  57. DROP TRIGGER IF EXISTS `trigger_update_memo_modification_time`;
  58. CREATE TRIGGER IF NOT EXISTS `trigger_update_memo_modification_time`
  59. AFTER
  60. UPDATE
  61. ON `memo` FOR EACH ROW BEGIN
  62. UPDATE
  63. `memo`
  64. SET
  65. updated_ts = (strftime('%s', 'now'))
  66. WHERE
  67. rowid = old.rowid;
  68. END;
  69. DROP TABLE IF EXISTS _memo_organizer_old;
  70. ALTER TABLE
  71. memo_organizer RENAME TO _memo_organizer_old;
  72. -- memo_organizer
  73. CREATE TABLE memo_organizer (
  74. id INTEGER PRIMARY KEY AUTOINCREMENT,
  75. memo_id INTEGER NOT NULL,
  76. user_id INTEGER NOT NULL,
  77. pinned INTEGER NOT NULL CHECK (pinned IN (0, 1)) DEFAULT 0,
  78. FOREIGN KEY(memo_id) REFERENCES memo(id) ON DELETE CASCADE,
  79. FOREIGN KEY(user_id) REFERENCES user(id) ON DELETE CASCADE,
  80. UNIQUE(memo_id, user_id)
  81. );
  82. INSERT INTO
  83. memo_organizer
  84. SELECT
  85. *
  86. FROM
  87. _memo_organizer_old;
  88. DROP TABLE IF EXISTS _memo_organizer_old;
  89. DROP TABLE IF EXISTS _shortcut_old;
  90. ALTER TABLE
  91. shortcut RENAME TO _shortcut_old;
  92. -- shortcut
  93. CREATE TABLE shortcut (
  94. id INTEGER PRIMARY KEY AUTOINCREMENT,
  95. creator_id INTEGER NOT NULL,
  96. created_ts BIGINT NOT NULL DEFAULT (strftime('%s', 'now')),
  97. updated_ts BIGINT NOT NULL DEFAULT (strftime('%s', 'now')),
  98. row_status TEXT NOT NULL CHECK (row_status IN ('NORMAL', 'ARCHIVED')) DEFAULT 'NORMAL',
  99. title TEXT NOT NULL DEFAULT '',
  100. payload TEXT NOT NULL DEFAULT '{}',
  101. FOREIGN KEY(creator_id) REFERENCES user(id) ON DELETE CASCADE
  102. );
  103. INSERT INTO
  104. shortcut
  105. SELECT
  106. *
  107. FROM
  108. _shortcut_old;
  109. DROP TABLE IF EXISTS _shortcut_old;
  110. DROP TRIGGER IF EXISTS `trigger_update_shortcut_modification_time`;
  111. CREATE TRIGGER IF NOT EXISTS `trigger_update_shortcut_modification_time`
  112. AFTER
  113. UPDATE
  114. ON `shortcut` FOR EACH ROW BEGIN
  115. UPDATE
  116. `shortcut`
  117. SET
  118. updated_ts = (strftime('%s', 'now'))
  119. WHERE
  120. rowid = old.rowid;
  121. END;
  122. DROP TABLE IF EXISTS _resource_old;
  123. ALTER TABLE
  124. resource RENAME TO _resource_old;
  125. -- resource
  126. CREATE TABLE resource (
  127. id INTEGER PRIMARY KEY AUTOINCREMENT,
  128. creator_id INTEGER NOT NULL,
  129. created_ts BIGINT NOT NULL DEFAULT (strftime('%s', 'now')),
  130. updated_ts BIGINT NOT NULL DEFAULT (strftime('%s', 'now')),
  131. filename TEXT NOT NULL DEFAULT '',
  132. blob BLOB DEFAULT NULL,
  133. type TEXT NOT NULL DEFAULT '',
  134. size INTEGER NOT NULL DEFAULT 0,
  135. FOREIGN KEY(creator_id) REFERENCES user(id) ON DELETE CASCADE
  136. );
  137. INSERT INTO
  138. resource
  139. SELECT
  140. *
  141. FROM
  142. _resource_old;
  143. DROP TABLE IF EXISTS _resource_old;
  144. DROP TRIGGER IF EXISTS `trigger_update_resource_modification_time`;
  145. CREATE TRIGGER IF NOT EXISTS `trigger_update_resource_modification_time`
  146. AFTER
  147. UPDATE
  148. ON `resource` FOR EACH ROW BEGIN
  149. UPDATE
  150. `resource`
  151. SET
  152. updated_ts = (strftime('%s', 'now'))
  153. WHERE
  154. rowid = old.rowid;
  155. END;
  156. DROP TABLE IF EXISTS _user_setting_old;
  157. ALTER TABLE
  158. user_setting RENAME TO _user_setting_old;
  159. -- user_setting
  160. CREATE TABLE user_setting (
  161. user_id INTEGER NOT NULL,
  162. key TEXT NOT NULL,
  163. value TEXT NOT NULL,
  164. FOREIGN KEY(user_id) REFERENCES user(id) ON DELETE CASCADE,
  165. UNIQUE(user_id, key)
  166. );
  167. INSERT INTO
  168. user_setting
  169. SELECT
  170. *
  171. FROM
  172. _user_setting_old;
  173. DROP TABLE IF EXISTS _user_setting_old;
  174. PRAGMA foreign_keys = on;