up.sql 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. CREATE TABLE users (
  2. uuid CHAR(36) NOT NULL PRIMARY KEY,
  3. created_at TIMESTAMP NOT NULL,
  4. updated_at TIMESTAMP NOT NULL,
  5. email VARCHAR(255) NOT NULL UNIQUE,
  6. name TEXT NOT NULL,
  7. password_hash BYTEA NOT NULL,
  8. salt BYTEA NOT NULL,
  9. password_iterations INTEGER NOT NULL,
  10. password_hint TEXT,
  11. akey TEXT NOT NULL,
  12. private_key TEXT,
  13. public_key TEXT,
  14. totp_secret TEXT,
  15. totp_recover TEXT,
  16. security_stamp TEXT NOT NULL,
  17. equivalent_domains TEXT NOT NULL,
  18. excluded_globals TEXT NOT NULL,
  19. client_kdf_type INTEGER NOT NULL DEFAULT 0,
  20. client_kdf_iter INTEGER NOT NULL DEFAULT 100000
  21. );
  22. CREATE TABLE devices (
  23. uuid CHAR(36) NOT NULL PRIMARY KEY,
  24. created_at TIMESTAMP NOT NULL,
  25. updated_at TIMESTAMP NOT NULL,
  26. user_uuid CHAR(36) NOT NULL REFERENCES users (uuid),
  27. name TEXT NOT NULL,
  28. atype INTEGER NOT NULL,
  29. push_token TEXT,
  30. refresh_token TEXT NOT NULL,
  31. twofactor_remember TEXT
  32. );
  33. CREATE TABLE organizations (
  34. uuid VARCHAR(40) NOT NULL PRIMARY KEY,
  35. name TEXT NOT NULL,
  36. billing_email TEXT NOT NULL
  37. );
  38. CREATE TABLE ciphers (
  39. uuid CHAR(36) NOT NULL PRIMARY KEY,
  40. created_at TIMESTAMP NOT NULL,
  41. updated_at TIMESTAMP NOT NULL,
  42. user_uuid CHAR(36) REFERENCES users (uuid),
  43. organization_uuid CHAR(36) REFERENCES organizations (uuid),
  44. atype INTEGER NOT NULL,
  45. name TEXT NOT NULL,
  46. notes TEXT,
  47. fields TEXT,
  48. data TEXT NOT NULL,
  49. favorite BOOLEAN NOT NULL,
  50. password_history TEXT
  51. );
  52. CREATE TABLE attachments (
  53. id CHAR(36) NOT NULL PRIMARY KEY,
  54. cipher_uuid CHAR(36) NOT NULL REFERENCES ciphers (uuid),
  55. file_name TEXT NOT NULL,
  56. file_size INTEGER NOT NULL,
  57. akey TEXT
  58. );
  59. CREATE TABLE folders (
  60. uuid CHAR(36) NOT NULL PRIMARY KEY,
  61. created_at TIMESTAMP NOT NULL,
  62. updated_at TIMESTAMP NOT NULL,
  63. user_uuid CHAR(36) NOT NULL REFERENCES users (uuid),
  64. name TEXT NOT NULL
  65. );
  66. CREATE TABLE collections (
  67. uuid VARCHAR(40) NOT NULL PRIMARY KEY,
  68. org_uuid VARCHAR(40) NOT NULL REFERENCES organizations (uuid),
  69. name TEXT NOT NULL
  70. );
  71. CREATE TABLE users_collections (
  72. user_uuid CHAR(36) NOT NULL REFERENCES users (uuid),
  73. collection_uuid CHAR(36) NOT NULL REFERENCES collections (uuid),
  74. read_only BOOLEAN NOT NULL DEFAULT false,
  75. PRIMARY KEY (user_uuid, collection_uuid)
  76. );
  77. CREATE TABLE users_organizations (
  78. uuid CHAR(36) NOT NULL PRIMARY KEY,
  79. user_uuid CHAR(36) NOT NULL REFERENCES users (uuid),
  80. org_uuid CHAR(36) NOT NULL REFERENCES organizations (uuid),
  81. access_all BOOLEAN NOT NULL,
  82. akey TEXT NOT NULL,
  83. status INTEGER NOT NULL,
  84. atype INTEGER NOT NULL,
  85. UNIQUE (user_uuid, org_uuid)
  86. );
  87. CREATE TABLE folders_ciphers (
  88. cipher_uuid CHAR(36) NOT NULL REFERENCES ciphers (uuid),
  89. folder_uuid CHAR(36) NOT NULL REFERENCES folders (uuid),
  90. PRIMARY KEY (cipher_uuid, folder_uuid)
  91. );
  92. CREATE TABLE ciphers_collections (
  93. cipher_uuid CHAR(36) NOT NULL REFERENCES ciphers (uuid),
  94. collection_uuid CHAR(36) NOT NULL REFERENCES collections (uuid),
  95. PRIMARY KEY (cipher_uuid, collection_uuid)
  96. );
  97. CREATE TABLE twofactor (
  98. uuid CHAR(36) NOT NULL PRIMARY KEY,
  99. user_uuid CHAR(36) NOT NULL REFERENCES users (uuid),
  100. atype INTEGER NOT NULL,
  101. enabled BOOLEAN NOT NULL,
  102. data TEXT NOT NULL,
  103. UNIQUE (user_uuid, atype)
  104. );
  105. CREATE TABLE invitations (
  106. email VARCHAR(255) NOT NULL PRIMARY KEY
  107. );