| 123456789101112131415161718192021222324252627282930 |
- -- Create keyset_amounts table with total_issued and total_redeemed columns
- CREATE TABLE IF NOT EXISTS keyset_amounts (
- keyset_id TEXT PRIMARY KEY NOT NULL,
- total_issued INTEGER NOT NULL DEFAULT 0,
- total_redeemed INTEGER NOT NULL DEFAULT 0
- );
- -- Prefill with issued amounts
- INSERT OR IGNORE INTO keyset_amounts (keyset_id, total_issued, total_redeemed)
- SELECT keyset_id, SUM(amount) as total_issued, 0 as total_redeemed
- FROM blind_signature
- WHERE c IS NOT NULL
- GROUP BY keyset_id;
- -- Update with redeemed amounts
- UPDATE keyset_amounts
- SET total_redeemed = (
- SELECT COALESCE(SUM(amount), 0)
- FROM proof
- WHERE proof.keyset_id = keyset_amounts.keyset_id
- AND proof.state = 'SPENT'
- );
- -- Insert keysets that only have redeemed amounts (no issued)
- INSERT OR IGNORE INTO keyset_amounts (keyset_id, total_issued, total_redeemed)
- SELECT keyset_id, 0 as total_issued, SUM(amount) as total_redeemed
- FROM proof
- WHERE state = 'SPENT'
- AND keyset_id NOT IN (SELECT keyset_id FROM keyset_amounts)
- GROUP BY keyset_id;
|