001_init.sql 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. CREATE TABLE IF NOT EXISTS accounts (
  2. id BIGINT NOT NULL,
  3. version BIGINT NOT NULL,
  4. policy TEXT NOT NULL,
  5. flags INTEGER NOT NULL,
  6. book BIGINT NOT NULL,
  7. user_data TEXT NOT NULL,
  8. metadata TEXT NOT NULL,
  9. PRIMARY KEY (id, version)
  10. );
  11. CREATE TABLE IF NOT EXISTS postings (
  12. transfer_id TEXT NOT NULL,
  13. idx SMALLINT NOT NULL,
  14. owner BIGINT NOT NULL,
  15. asset INTEGER NOT NULL,
  16. value TEXT NOT NULL,
  17. status SMALLINT NOT NULL,
  18. reservation BIGINT,
  19. PRIMARY KEY (transfer_id, idx)
  20. );
  21. CREATE INDEX IF NOT EXISTS idx_postings_owner ON postings(owner, asset, status);
  22. CREATE TABLE IF NOT EXISTS transfers (
  23. id TEXT PRIMARY KEY,
  24. transfer TEXT NOT NULL,
  25. receipt TEXT NOT NULL,
  26. created_at BIGINT NOT NULL DEFAULT 0,
  27. book BIGINT NOT NULL DEFAULT 0
  28. );
  29. CREATE INDEX IF NOT EXISTS idx_transfers_created_at ON transfers(created_at);
  30. CREATE INDEX IF NOT EXISTS idx_transfers_book ON transfers(book);
  31. CREATE TABLE IF NOT EXISTS transfer_accounts (
  32. transfer_id TEXT NOT NULL,
  33. account_id BIGINT NOT NULL,
  34. PRIMARY KEY (transfer_id, account_id)
  35. );
  36. CREATE INDEX IF NOT EXISTS idx_xfer_acct ON transfer_accounts(account_id);
  37. CREATE TABLE IF NOT EXISTS sagas (
  38. id BIGINT PRIMARY KEY,
  39. data TEXT NOT NULL
  40. );
  41. CREATE TABLE IF NOT EXISTS events (
  42. seq BIGINT PRIMARY KEY,
  43. timestamp BIGINT NOT NULL,
  44. kind TEXT NOT NULL,
  45. data TEXT NOT NULL,
  46. dedup_key TEXT UNIQUE
  47. );
  48. CREATE TABLE IF NOT EXISTS books (
  49. id BIGINT PRIMARY KEY,
  50. name TEXT NOT NULL,
  51. data TEXT NOT NULL
  52. );