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 BYTEA NOT NULL,
  8. metadata BYTEA NOT NULL,
  9. PRIMARY KEY (id, version)
  10. );
  11. CREATE TABLE IF NOT EXISTS postings (
  12. transfer_id BYTEA NOT NULL,
  13. idx SMALLINT NOT NULL,
  14. owner BIGINT NOT NULL,
  15. asset INTEGER NOT NULL,
  16. value BIGINT 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 BYTEA PRIMARY KEY,
  24. transfer BYTEA NOT NULL,
  25. receipt BYTEA 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 BYTEA 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 BYTEA 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 BYTEA NOT NULL,
  46. dedup_key BYTEA UNIQUE
  47. );
  48. CREATE TABLE IF NOT EXISTS books (
  49. id BIGINT PRIMARY KEY,
  50. name TEXT NOT NULL,
  51. data BYTEA NOT NULL
  52. );