20240612132920_init.sql 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. -- Mints
  2. CREATE TABLE IF NOT EXISTS mint (
  3. mint_url TEXT PRIMARY KEY,
  4. name TEXT,
  5. pubkey BLOB,
  6. version TEXT,
  7. description TEXT,
  8. description_long TEXT,
  9. contact TEXT,
  10. nuts TEXT,
  11. motd TEXT
  12. );
  13. CREATE TABLE IF NOT EXISTS keyset (
  14. id TEXT PRIMARY KEY,
  15. mint_url TEXT NOT NULL,
  16. unit TEXT NOT NULL,
  17. active BOOL NOT NULL,
  18. counter INTEGER NOT NULL DEFAULT 0,
  19. FOREIGN KEY(mint_url) REFERENCES mint(mint_url) ON UPDATE CASCADE ON DELETE CASCADE
  20. );
  21. CREATE TABLE IF NOT EXISTS mint_quote (
  22. id TEXT PRIMARY KEY,
  23. mint_url TEXT NOT NULL,
  24. amount INTEGER NOT NULL,
  25. unit TEXT NOT NULL,
  26. request TEXT NOT NULL,
  27. paid BOOL NOT NULL DEFAULT FALSE,
  28. expiry INTEGER NOT NULL
  29. );
  30. CREATE INDEX IF NOT EXISTS paid_index ON mint_quote(paid);
  31. CREATE INDEX IF NOT EXISTS request_index ON mint_quote(request);
  32. CREATE TABLE IF NOT EXISTS melt_quote (
  33. id TEXT PRIMARY KEY,
  34. unit TEXT NOT NULL,
  35. amount INTEGER NOT NULL,
  36. request TEXT NOT NULL,
  37. fee_reserve INTEGER NOT NULL,
  38. paid BOOL NOT NULL DEFAULT FALSE,
  39. expiry INTEGER NOT NULL
  40. );
  41. CREATE INDEX IF NOT EXISTS paid_index ON melt_quote(paid);
  42. CREATE INDEX IF NOT EXISTS request_index ON melt_quote(request);
  43. CREATE TABLE IF NOT EXISTS key (
  44. id TEXT PRIMARY KEY,
  45. keys TEXT NOT NULL
  46. );
  47. -- Proof Table
  48. CREATE TABLE IF NOT EXISTS proof (
  49. y BLOB PRIMARY KEY,
  50. mint_url TEXT NOT NULL,
  51. state TEXT CHECK ( state IN ('SPENT', 'UNSPENT', 'PENDING', 'RESERVED' ) ) NOT NULL,
  52. spending_condition TEXT,
  53. unit TEXT NOT NULL,
  54. amount INTEGER NOT NULL,
  55. keyset_id TEXT NOT NULL,
  56. secret TEXT NOT NULL,
  57. c BLOB NOT NULL,
  58. witness TEXT
  59. );
  60. CREATE INDEX IF NOT EXISTS secret_index ON proof(secret);
  61. CREATE INDEX IF NOT EXISTS state_index ON proof(state);
  62. CREATE INDEX IF NOT EXISTS spending_condition_index ON proof(spending_condition);
  63. CREATE INDEX IF NOT EXISTS unit_index ON proof(unit);
  64. CREATE INDEX IF NOT EXISTS amount_index ON proof(amount);
  65. CREATE INDEX IF NOT EXISTS mint_url_index ON proof(mint_url);
  66. CREATE TABLE IF NOT EXISTS nostr_last_checked (
  67. key BLOB PRIMARY KEY,
  68. last_check INTEGER NOT NULL
  69. );