Files
tellscoin/doc/data-models.md
2026-02-15 16:28:38 +00:00

2.7 KiB

Data Models and Schema

Storage Backend

  • Database engine: SQLite.
  • Default file path: ./data/dashboard.db.
  • Effective path is controlled by DB_PATH.

Related references:

  • Configuration values: doc/environment.md
  • Persistence implementation: app/db.py

Tables

node_settings

Single-row settings table used as the source of truth for RPC and SSH connectivity.

Schema fields:

  • id INTEGER PRIMARY KEY CHECK (id = 1)
  • rpc_url TEXT NOT NULL
  • rpc_username TEXT NOT NULL
  • rpc_password TEXT NOT NULL
  • rpc_wallet TEXT NOT NULL
  • config_path TEXT NOT NULL
  • ssh_host TEXT NOT NULL
  • ssh_port INTEGER NOT NULL
  • ssh_username TEXT NOT NULL
  • ssh_password TEXT NOT NULL
  • ssh_key_path TEXT NOT NULL
  • bitcoin_binary TEXT NOT NULL
  • updated_at TEXT NOT NULL (UTC ISO 8601 string)

Invariants:

  • Exactly one logical settings record exists with id = 1.
  • save_settings performs an upsert.
  • Missing settings row is represented by in-code defaults.

metrics_history

Time-series table for chart data and historical dashboard views.

Schema fields:

  • ts INTEGER PRIMARY KEY (Unix timestamp, seconds)
  • blocks INTEGER NOT NULL
  • headers INTEGER NOT NULL
  • mempool_bytes INTEGER NOT NULL
  • peers INTEGER NOT NULL

Index:

  • idx_metrics_history_ts on ts

Invariants:

  • A timestamp has at most one row.
  • Inserts on duplicate timestamp overwrite existing point.
  • Returned history is chronological for UI consumption.

Retention and Limits

Retention behavior is enforced during each metric insert:

  • Time retention: rows older than 30 days are deleted.
  • Count retention: rows beyond the newest 20000 samples are deleted.
  • Query limit input is clamped to [1, 20000].

Metric Sampling Sources

A metric point is composed from RPC responses:

  • blocks and headers from getblockchaininfo
  • mempool_bytes from getmempoolinfo.bytes
  • peers from getnetworkinfo.connections

Points are written:

  • On each /api/dashboard/summary request.
  • In a background sampler loop at configured interval.

Settings Defaults

Default values used when no persisted row exists:

  • rpc_url: http://127.0.0.1:8332
  • rpc_username: empty string
  • rpc_password: empty string
  • rpc_wallet: empty string
  • config_path: empty string
  • ssh_host: empty string
  • ssh_port: 22
  • ssh_username: empty string
  • ssh_password: empty string
  • ssh_key_path: empty string
  • bitcoin_binary: bitcoind
  • updated_at: empty string

Data Consumers

  • /api/settings and /api/settings (PUT) read and write node_settings.
  • /api/dashboard/history* reads metrics_history.
  • /api/dashboard/summary and sampler thread write metrics_history.

See doc/api.md for endpoint-level contracts.