{% extends "base.html" %} {% block title %}Voxint — database{% endblock %} {% block body %} {# Console 2.0 P6 database sub-page (issue #161): size, per-table row estimates, and the retention/GC settings. Counts are estimates from pg_stat_user_tables, not live COUNT(*), and every query is fail-soft: a down or unmigrated database renders an honest "could not read" state instead of an error. #}

Database

← Settings

Size

{% if database.available %}

Total database size: {{ (database.size_bytes / 1048576) | round(1) }} MiB ({{ database.size_bytes }} bytes)

{% if database.tables %}

Largest tables

Estimated live rows, largest first. Estimates come from Postgres statistics and can lag recent writes.

{% for t in database.tables %} {% endfor %}
TableEstimated rows
{{ t.name }}{{ t.estimated_rows }}
{% else %}

No table statistics reported yet.

{% endif %} {% else %}

Could not read the database size right now. The database may be down or not yet migrated.

{% endif %}

Retention and cleanup

Media retention reclaims only the large normalized-audio intermediate for old finished runs; source media, transcripts, and the adjudication history are always kept. These are the values the running app booted with; set them in your .env (keys MEDIA_RETENTION_ENABLED, MEDIA_RETENTION_SECONDS, GC_SWEEP_SECONDS, GC_BATCH_LIMIT) and restart Voxint to change them.

{% for r in database.retention %} {% endfor %}
{{ r.label }}{{ r.value }}

Backups

Voxint does not take backups for you. To back up your data, stop Voxint (or ensure the database is quiet) and copy your Postgres data with the standard tools, for example pg_dump. Keep the copy somewhere off this machine.

{% endblock %}