2020-05-09-crypto-store.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package upgrades
  2. import (
  3. "database/sql"
  4. )
  5. func init() {
  6. upgrades[13] = upgrade{"Add crypto store to database", func(tx *sql.Tx, ctx context) error {
  7. _, err := tx.Exec(`CREATE TABLE crypto_account (
  8. device_id VARCHAR(255) PRIMARY KEY,
  9. shared BOOLEAN NOT NULL,
  10. sync_token TEXT NOT NULL,
  11. account bytea NOT NULL
  12. )`)
  13. if err != nil {
  14. return err
  15. }
  16. _, err = tx.Exec(`CREATE TABLE crypto_message_index (
  17. sender_key CHAR(43),
  18. session_id CHAR(43),
  19. "index" INTEGER,
  20. event_id VARCHAR(255) NOT NULL,
  21. timestamp BIGINT NOT NULL,
  22. PRIMARY KEY (sender_key, session_id, "index")
  23. )`)
  24. if err != nil {
  25. return err
  26. }
  27. _, err = tx.Exec(`CREATE TABLE crypto_tracked_user (
  28. user_id VARCHAR(255) PRIMARY KEY
  29. )`)
  30. if err != nil {
  31. return err
  32. }
  33. _, err = tx.Exec(`CREATE TABLE crypto_device (
  34. user_id VARCHAR(255),
  35. device_id VARCHAR(255),
  36. identity_key CHAR(43) NOT NULL,
  37. signing_key CHAR(43) NOT NULL,
  38. trust SMALLINT NOT NULL,
  39. deleted BOOLEAN NOT NULL,
  40. name VARCHAR(255) NOT NULL,
  41. PRIMARY KEY (user_id, device_id)
  42. )`)
  43. if err != nil {
  44. return err
  45. }
  46. _, err = tx.Exec(`CREATE TABLE crypto_olm_session (
  47. session_id CHAR(43) PRIMARY KEY,
  48. sender_key CHAR(43) NOT NULL,
  49. session bytea NOT NULL,
  50. created_at timestamp NOT NULL,
  51. last_used timestamp NOT NULL
  52. )`)
  53. if err != nil {
  54. return err
  55. }
  56. _, err = tx.Exec(`CREATE TABLE crypto_megolm_inbound_session (
  57. session_id CHAR(43) PRIMARY KEY,
  58. sender_key CHAR(43) NOT NULL,
  59. signing_key CHAR(43) NOT NULL,
  60. room_id VARCHAR(255) NOT NULL,
  61. session bytea NOT NULL,
  62. forwarding_chains bytea NOT NULL
  63. )`)
  64. if err != nil {
  65. return err
  66. }
  67. return nil
  68. }}
  69. }