00-latest-schema.sql 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. -- v0 -> v11 (compatible with v8+): Latest schema
  2. CREATE TABLE whatsmeow_device (
  3. jid TEXT PRIMARY KEY,
  4. lid TEXT,
  5. facebook_uuid uuid,
  6. registration_id BIGINT NOT NULL CHECK ( registration_id >= 0 AND registration_id < 4294967296 ),
  7. noise_key bytea NOT NULL CHECK ( length(noise_key) = 32 ),
  8. identity_key bytea NOT NULL CHECK ( length(identity_key) = 32 ),
  9. signed_pre_key bytea NOT NULL CHECK ( length(signed_pre_key) = 32 ),
  10. signed_pre_key_id INTEGER NOT NULL CHECK ( signed_pre_key_id >= 0 AND signed_pre_key_id < 16777216 ),
  11. signed_pre_key_sig bytea NOT NULL CHECK ( length(signed_pre_key_sig) = 64 ),
  12. adv_key bytea NOT NULL,
  13. adv_details bytea NOT NULL,
  14. adv_account_sig bytea NOT NULL CHECK ( length(adv_account_sig) = 64 ),
  15. adv_account_sig_key bytea NOT NULL CHECK ( length(adv_account_sig_key) = 32 ),
  16. adv_device_sig bytea NOT NULL CHECK ( length(adv_device_sig) = 64 ),
  17. platform TEXT NULL DEFAULT '',
  18. business_name TEXT NULL DEFAULT '',
  19. push_name TEXT NULL DEFAULT '',
  20. mobile BOOLEAN NOT NULL DEFAULT false,
  21. mobile_info bytea NULL,
  22. lid_migration_ts BIGINT NOT NULL DEFAULT 0
  23. );
  24. CREATE TABLE whatsmeow_identity_keys (
  25. our_jid TEXT,
  26. their_id TEXT,
  27. identity bytea NOT NULL CHECK ( length(identity) = 32 ),
  28. PRIMARY KEY (our_jid, their_id),
  29. FOREIGN KEY (our_jid) REFERENCES whatsmeow_device(jid) ON DELETE CASCADE ON UPDATE CASCADE
  30. );
  31. CREATE TABLE whatsmeow_pre_keys (
  32. jid TEXT,
  33. key_id INTEGER CHECK ( key_id >= 0 AND key_id < 16777216 ),
  34. key bytea NOT NULL CHECK ( length(key) = 32 ),
  35. uploaded BOOLEAN NOT NULL,
  36. PRIMARY KEY (jid, key_id),
  37. FOREIGN KEY (jid) REFERENCES whatsmeow_device(jid) ON DELETE CASCADE ON UPDATE CASCADE
  38. );
  39. CREATE TABLE whatsmeow_sessions (
  40. our_jid TEXT,
  41. their_id TEXT,
  42. session bytea,
  43. PRIMARY KEY (our_jid, their_id),
  44. FOREIGN KEY (our_jid) REFERENCES whatsmeow_device(jid) ON DELETE CASCADE ON UPDATE CASCADE
  45. );
  46. CREATE TABLE whatsmeow_sender_keys (
  47. our_jid TEXT,
  48. chat_id TEXT,
  49. sender_id TEXT,
  50. sender_key bytea NOT NULL,
  51. PRIMARY KEY (our_jid, chat_id, sender_id),
  52. FOREIGN KEY (our_jid) REFERENCES whatsmeow_device(jid) ON DELETE CASCADE ON UPDATE CASCADE
  53. );
  54. CREATE TABLE whatsmeow_app_state_sync_keys (
  55. jid TEXT,
  56. key_id bytea,
  57. key_data bytea NOT NULL,
  58. timestamp BIGINT NOT NULL,
  59. fingerprint bytea NOT NULL,
  60. PRIMARY KEY (jid, key_id),
  61. FOREIGN KEY (jid) REFERENCES whatsmeow_device(jid) ON DELETE CASCADE ON UPDATE CASCADE
  62. );
  63. CREATE TABLE whatsmeow_app_state_version (
  64. jid TEXT,
  65. name TEXT,
  66. version BIGINT NOT NULL,
  67. hash bytea NOT NULL CHECK ( length(hash) = 128 ),
  68. PRIMARY KEY (jid, name),
  69. FOREIGN KEY (jid) REFERENCES whatsmeow_device(jid) ON DELETE CASCADE ON UPDATE CASCADE
  70. );
  71. CREATE TABLE whatsmeow_app_state_mutation_macs (
  72. jid TEXT,
  73. name TEXT,
  74. version BIGINT,
  75. index_mac bytea CHECK ( length(index_mac) = 32 ),
  76. value_mac bytea NOT NULL CHECK ( length(value_mac) = 32 ),
  77. PRIMARY KEY (jid, name, version, index_mac),
  78. FOREIGN KEY (jid, name) REFERENCES whatsmeow_app_state_version(jid, name) ON DELETE CASCADE ON UPDATE CASCADE
  79. );
  80. CREATE TABLE whatsmeow_contacts (
  81. our_jid TEXT,
  82. their_jid TEXT,
  83. first_name TEXT,
  84. full_name TEXT,
  85. push_name TEXT,
  86. business_name TEXT,
  87. redacted_phone TEXT,
  88. PRIMARY KEY (our_jid, their_jid),
  89. FOREIGN KEY (our_jid) REFERENCES whatsmeow_device(jid) ON DELETE CASCADE ON UPDATE CASCADE
  90. );
  91. CREATE TABLE whatsmeow_chat_settings (
  92. our_jid TEXT,
  93. chat_jid TEXT,
  94. muted_until BIGINT NOT NULL DEFAULT 0,
  95. pinned BOOLEAN NOT NULL DEFAULT false,
  96. archived BOOLEAN NOT NULL DEFAULT false,
  97. PRIMARY KEY (our_jid, chat_jid),
  98. FOREIGN KEY (our_jid) REFERENCES whatsmeow_device(jid) ON DELETE CASCADE ON UPDATE CASCADE
  99. );
  100. CREATE TABLE whatsmeow_message_secrets (
  101. our_jid TEXT,
  102. chat_jid TEXT,
  103. sender_jid TEXT,
  104. message_id TEXT,
  105. key bytea NOT NULL,
  106. PRIMARY KEY (our_jid, chat_jid, sender_jid, message_id),
  107. FOREIGN KEY (our_jid) REFERENCES whatsmeow_device(jid) ON DELETE CASCADE ON UPDATE CASCADE
  108. );
  109. CREATE TABLE whatsmeow_privacy_tokens (
  110. our_jid TEXT,
  111. their_jid TEXT,
  112. token bytea NOT NULL,
  113. timestamp BIGINT NOT NULL,
  114. PRIMARY KEY (our_jid, their_jid)
  115. );
  116. CREATE TABLE whatsmeow_lid_map (
  117. lid TEXT PRIMARY KEY,
  118. pn TEXT UNIQUE NOT NULL
  119. );
  120. CREATE TABLE whatsmeow_event_buffer (
  121. our_jid TEXT NOT NULL,
  122. ciphertext_hash bytea NOT NULL CHECK ( length(ciphertext_hash) = 32 ),
  123. plaintext bytea,
  124. server_timestamp BIGINT NOT NULL,
  125. insert_timestamp BIGINT NOT NULL,
  126. PRIMARY KEY (our_jid, ciphertext_hash),
  127. FOREIGN KEY (our_jid) REFERENCES whatsmeow_device(jid) ON DELETE CASCADE ON UPDATE CASCADE
  128. );