2018-09-01-initial-schema.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package upgrades
  2. import (
  3. "database/sql"
  4. )
  5. func init() {
  6. upgrades[0] = upgrade{"Initial schema", func(tx *sql.Tx, ctx context) error {
  7. _, err := tx.Exec(`CREATE TABLE IF NOT EXISTS portal (
  8. jid VARCHAR(255),
  9. receiver VARCHAR(255),
  10. mxid VARCHAR(255) UNIQUE,
  11. name VARCHAR(255) NOT NULL,
  12. topic VARCHAR(255) NOT NULL,
  13. avatar VARCHAR(255) NOT NULL,
  14. PRIMARY KEY (jid, receiver)
  15. )`)
  16. if err != nil {
  17. return err
  18. }
  19. _, err = tx.Exec(`CREATE TABLE IF NOT EXISTS puppet (
  20. jid VARCHAR(255) PRIMARY KEY,
  21. avatar VARCHAR(255),
  22. displayname VARCHAR(255),
  23. name_quality SMALLINT
  24. )`)
  25. if err != nil {
  26. return err
  27. }
  28. _, err = tx.Exec(`CREATE TABLE IF NOT EXISTS "user" (
  29. mxid VARCHAR(255) PRIMARY KEY,
  30. jid VARCHAR(255) UNIQUE,
  31. management_room VARCHAR(255),
  32. client_id VARCHAR(255),
  33. client_token VARCHAR(255),
  34. server_token VARCHAR(255),
  35. enc_key bytea,
  36. mac_key bytea
  37. )`)
  38. if err != nil {
  39. return err
  40. }
  41. _, err = tx.Exec(`CREATE TABLE IF NOT EXISTS message (
  42. chat_jid VARCHAR(255),
  43. chat_receiver VARCHAR(255),
  44. jid VARCHAR(255),
  45. mxid VARCHAR(255) NOT NULL UNIQUE,
  46. sender VARCHAR(255) NOT NULL,
  47. content bytea NOT NULL,
  48. PRIMARY KEY (chat_jid, chat_receiver, jid),
  49. FOREIGN KEY (chat_jid, chat_receiver) REFERENCES portal(jid, receiver) ON DELETE CASCADE
  50. )`)
  51. if err != nil {
  52. return err
  53. }
  54. return nil
  55. }}
  56. }