1_initial.sql 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. CREATE TABLE mint (
  2. mint_url TEXT PRIMARY KEY, name TEXT,
  3. pubkey BYTEA, version TEXT, description TEXT,
  4. description_long TEXT, contact TEXT,
  5. nuts TEXT, motd TEXT, icon_url TEXT,
  6. mint_time INTEGER, urls TEXT, tos_url TEXT
  7. );
  8. CREATE TABLE keyset (
  9. id TEXT PRIMARY KEY,
  10. mint_url TEXT NOT NULL,
  11. unit TEXT NOT NULL,
  12. active BOOL NOT NULL,
  13. counter INTEGER NOT NULL DEFAULT 0,
  14. input_fee_ppk INTEGER,
  15. final_expiry INTEGER DEFAULT NULL,
  16. FOREIGN KEY(mint_url) REFERENCES mint(mint_url) ON UPDATE CASCADE ON DELETE CASCADE
  17. );
  18. CREATE TABLE melt_quote (
  19. id TEXT PRIMARY KEY,
  20. unit TEXT NOT NULL,
  21. amount INTEGER NOT NULL,
  22. request TEXT NOT NULL,
  23. fee_reserve INTEGER NOT NULL,
  24. expiry INTEGER NOT NULL,
  25. state TEXT CHECK (
  26. state IN ('UNPAID', 'PENDING', 'PAID')
  27. ) NOT NULL DEFAULT 'UNPAID',
  28. payment_preimage TEXT
  29. );
  30. CREATE TABLE key (
  31. id TEXT PRIMARY KEY, keys TEXT NOT NULL
  32. );
  33. CREATE INDEX melt_quote_state_index ON melt_quote(state);
  34. CREATE TABLE IF NOT EXISTS "proof" (
  35. y BYTEA PRIMARY KEY,
  36. mint_url TEXT NOT NULL,
  37. state TEXT CHECK (
  38. state IN (
  39. 'SPENT', 'UNSPENT', 'PENDING', 'RESERVED',
  40. 'PENDING_SPENT'
  41. )
  42. ) NOT NULL,
  43. spending_condition TEXT,
  44. unit TEXT NOT NULL,
  45. amount INTEGER NOT NULL,
  46. keyset_id TEXT NOT NULL,
  47. secret TEXT NOT NULL,
  48. c BYTEA NOT NULL,
  49. witness TEXT,
  50. dleq_e BYTEA,
  51. dleq_s BYTEA,
  52. dleq_r BYTEA
  53. );
  54. CREATE TABLE transactions (
  55. id BYTEA PRIMARY KEY,
  56. mint_url TEXT NOT NULL,
  57. direction TEXT CHECK (
  58. direction IN ('Incoming', 'Outgoing')
  59. ) NOT NULL,
  60. amount INTEGER NOT NULL,
  61. fee INTEGER NOT NULL,
  62. unit TEXT NOT NULL,
  63. ys BYTEA NOT NULL,
  64. timestamp INTEGER NOT NULL,
  65. memo TEXT,
  66. metadata TEXT
  67. );
  68. CREATE INDEX mint_url_index ON transactions(mint_url);
  69. CREATE INDEX direction_index ON transactions(direction);
  70. CREATE INDEX unit_index ON transactions(unit);
  71. CREATE INDEX timestamp_index ON transactions(timestamp);
  72. CREATE TABLE IF NOT EXISTS "mint_quote" (
  73. id TEXT PRIMARY KEY, mint_url TEXT NOT NULL,
  74. payment_method TEXT NOT NULL DEFAULT 'bolt11',
  75. amount INTEGER, unit TEXT NOT NULL,
  76. request TEXT NOT NULL, state TEXT NOT NULL,
  77. expiry INTEGER NOT NULL, amount_paid INTEGER NOT NULL DEFAULT 0,
  78. amount_issued INTEGER NOT NULL DEFAULT 0,
  79. secret_key TEXT
  80. );