From ad7dfc0e9368952e71052906bddaf2cda3e1443f Mon Sep 17 00:00:00 2001 From: "Prad N (aider)" Date: Thu, 3 Apr 2025 22:09:54 -0400 Subject: [PATCH] feat: Add balances table to track account asset holdings --- internal/sink/schema.sql | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/internal/sink/schema.sql b/internal/sink/schema.sql index 912d465..bc99c49 100644 --- a/internal/sink/schema.sql +++ b/internal/sink/schema.sql @@ -119,3 +119,25 @@ CREATE INDEX idx_sessions_deleted_at ON sessions(deleted_at); CREATE INDEX idx_vaults_handle ON vaults(handle); CREATE INDEX idx_vaults_session_id ON vaults(session_id); CREATE INDEX idx_vaults_deleted_at ON vaults(deleted_at); + +-- Balances track asset holdings for accounts +CREATE TABLE balances ( + id TEXT PRIMARY KEY, + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + deleted_at TIMESTAMP, + account_id TEXT NOT NULL, + asset_id TEXT NOT NULL, + amount TEXT NOT NULL, -- Stored as string to handle large decimal numbers precisely + last_updated_height INTEGER NOT NULL DEFAULT 0, + is_delegated BOOLEAN NOT NULL DEFAULT FALSE CHECK(is_delegated IN (0,1)), + is_staked BOOLEAN NOT NULL DEFAULT FALSE CHECK(is_staked IN (0,1)), + is_vesting BOOLEAN NOT NULL DEFAULT FALSE CHECK(is_vesting IN (0,1)), + FOREIGN KEY (account_id) REFERENCES accounts(id), + FOREIGN KEY (asset_id) REFERENCES assets(id), + UNIQUE(account_id, asset_id) +); + +CREATE INDEX idx_balances_account_id ON balances(account_id); +CREATE INDEX idx_balances_asset_id ON balances(asset_id); +CREATE INDEX idx_balances_deleted_at ON balances(deleted_at);