A clean, Markdown-based publishing platform made for writers. Write together, and build a community. https://writefreely.org
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.
 
 
 
 
 

192 line
4.4 KiB

  1. --
  2. -- Database: writefreely
  3. --
  4. -- --------------------------------------------------------
  5. --
  6. -- Table structure for table accesstokens
  7. --
  8. CREATE TABLE IF NOT EXISTS `accesstokens` (
  9. token TEXT NOT NULL PRIMARY KEY,
  10. user_id INTEGER NOT NULL,
  11. sudo INTEGER NOT NULL DEFAULT '0',
  12. one_time INTEGER NOT NULL DEFAULT '0',
  13. created DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  14. expires DATETIME DEFAULT NULL,
  15. user_agent TEXT DEFAULT NULL
  16. );
  17. -- --------------------------------------------------------
  18. --
  19. -- Table structure for table appcontent
  20. --
  21. CREATE TABLE IF NOT EXISTS `appcontent` (
  22. id TEXT NOT NULL PRIMARY KEY,
  23. content TEXT NOT NULL,
  24. updated DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
  25. );
  26. -- --------------------------------------------------------
  27. --
  28. -- Table structure for table collectionattributes
  29. --
  30. CREATE TABLE IF NOT EXISTS `collectionattributes` (
  31. collection_id INTEGER NOT NULL,
  32. attribute TEXT NOT NULL,
  33. value TEXT NOT NULL,
  34. PRIMARY KEY (collection_id, attribute)
  35. );
  36. -- --------------------------------------------------------
  37. --
  38. -- Table structure for table collectionkeys
  39. --
  40. CREATE TABLE IF NOT EXISTS `collectionkeys` (
  41. collection_id INTEGER PRIMARY KEY,
  42. public_key blob NOT NULL,
  43. private_key blob NOT NULL
  44. );
  45. -- --------------------------------------------------------
  46. --
  47. -- Table structure for table collectionpasswords
  48. --
  49. CREATE TABLE IF NOT EXISTS `collectionpasswords` (
  50. collection_id INTEGER PRIMARY KEY,
  51. password TEXT NOT NULL
  52. );
  53. -- --------------------------------------------------------
  54. --
  55. -- Table structure for table collectionredirects
  56. --
  57. CREATE TABLE IF NOT EXISTS `collectionredirects` (
  58. prev_alias TEXT NOT NULL PRIMARY KEY,
  59. new_alias TEXT NOT NULL
  60. );
  61. -- --------------------------------------------------------
  62. --
  63. -- Table structure for table collections
  64. --
  65. CREATE TABLE IF NOT EXISTS `collections` (
  66. id INTEGER PRIMARY KEY AUTOINCREMENT,
  67. alias TEXT DEFAULT NULL UNIQUE,
  68. title TEXT NOT NULL,
  69. description TEXT NOT NULL,
  70. style_sheet TEXT,
  71. script TEXT,
  72. format TEXT DEFAULT NULL,
  73. privacy INTEGER NOT NULL,
  74. owner_id INTEGER NOT NULL,
  75. view_count INTEGER NOT NULL
  76. );
  77. -- --------------------------------------------------------
  78. --
  79. -- Table structure for table posts
  80. --
  81. CREATE TABLE IF NOT EXISTS `posts` (
  82. id TEXT NOT NULL,
  83. slug TEXT DEFAULT NULL,
  84. modify_token TEXT DEFAULT NULL,
  85. text_appearance TEXT NOT NULL DEFAULT 'norm',
  86. language TEXT DEFAULT NULL,
  87. rtl INTEGER DEFAULT NULL,
  88. privacy INTEGER NOT NULL,
  89. owner_id INTEGER DEFAULT NULL,
  90. collection_id INTEGER DEFAULT NULL,
  91. pinned_position INTEGER UNSIGNED DEFAULT NULL,
  92. created DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  93. updated DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  94. view_count INTEGER NOT NULL,
  95. title TEXT NOT NULL,
  96. content TEXT NOT NULL,
  97. CONSTRAINT id_slug UNIQUE (collection_id, slug),
  98. CONSTRAINT owner_id UNIQUE (owner_id, id),
  99. CONSTRAINT privacy_id UNIQUE (privacy, id)
  100. );
  101. -- --------------------------------------------------------
  102. --
  103. -- Table structure for table remotefollows
  104. --
  105. CREATE TABLE IF NOT EXISTS `remotefollows` (
  106. collection_id INTEGER NOT NULL,
  107. remote_user_id INTEGER NOT NULL,
  108. created DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  109. PRIMARY KEY (collection_id,remote_user_id)
  110. );
  111. -- --------------------------------------------------------
  112. --
  113. -- Table structure for table remoteuserkeys
  114. --
  115. CREATE TABLE IF NOT EXISTS `remoteuserkeys` (
  116. id TEXT NOT NULL,
  117. remote_user_id INTEGER NOT NULL,
  118. public_key blob NOT NULL,
  119. CONSTRAINT follower_id UNIQUE (remote_user_id)
  120. );
  121. -- --------------------------------------------------------
  122. --
  123. -- Table structure for table remoteusers
  124. --
  125. CREATE TABLE IF NOT EXISTS `remoteusers` (
  126. id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
  127. actor_id TEXT NOT NULL,
  128. inbox TEXT NOT NULL,
  129. shared_inbox TEXT NOT NULL,
  130. CONSTRAINT collection_id UNIQUE (actor_id)
  131. );
  132. -- --------------------------------------------------------
  133. --
  134. -- Table structure for table userattributes
  135. --
  136. CREATE TABLE IF NOT EXISTS `userattributes` (
  137. user_id INTEGER NOT NULL,
  138. attribute TEXT NOT NULL,
  139. value TEXT NOT NULL,
  140. PRIMARY KEY (user_id, attribute)
  141. );
  142. -- --------------------------------------------------------
  143. --
  144. -- Table structure for table users
  145. --
  146. CREATE TABLE IF NOT EXISTS `users` (
  147. id INTEGER PRIMARY KEY AUTOINCREMENT,
  148. username TEXT NOT NULL UNIQUE,
  149. password TEXT NOT NULL,
  150. email TEXT DEFAULT NULL,
  151. created DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
  152. );