Parent: #232 · Blocked by: #240
Scope
Database schema and queries for storing session/release health data.
New Table: release_health
| Column |
Type |
Notes |
| id |
TEXT PK |
uuid |
| project_id |
TEXT FK→projects |
|
| release |
TEXT NOT NULL |
"rungu@0.2.0" |
| environment |
TEXT |
"production", "development" |
| started_at |
TEXT NOT NULL |
window start (from aggregate) |
| distinct_id |
TEXT |
null = aggregated across all users |
| exited |
INTEGER DEFAULT 0 |
|
| errored |
INTEGER DEFAULT 0 |
|
| abnormal |
INTEGER DEFAULT 0 |
|
| crashed |
INTEGER DEFAULT 0 |
|
| received_at |
TEXT NOT NULL |
|
Indexes: (project_id), (project_id, release, environment)
Optional: session_updates (raw individual sessions)
| Column |
Type |
Notes |
| id |
TEXT PK |
|
| project_id |
TEXT FK |
|
| session_id |
TEXT |
|
| distinct_id |
TEXT |
|
| init |
BOOLEAN |
|
| started |
TEXT |
|
| duration |
REAL |
|
| status |
TEXT |
|
| errors |
INTEGER |
|
| release |
TEXT |
|
| environment |
TEXT |
|
| received_at |
TEXT |
|
Queries to Add
insert_release_health(project_id, aggregates) — bulk insert from SessionAggregates
get_crash_rate(project_id, release, env, window_hours) → crash rate percentage
list_release_health(project_id, release?, env?, page, per_page)
get_release_summary(project_id) → per-release crash rate summary
Tasks
Effort: ~2 hours
Parent: #232 · Blocked by: #240
Scope
Database schema and queries for storing session/release health data.
New Table:
release_healthIndexes:
(project_id),(project_id, release, environment)Optional:
session_updates(raw individual sessions)Queries to Add
insert_release_health(project_id, aggregates)— bulk insert fromSessionAggregatesget_crash_rate(project_id, release, env, window_hours)→ crash rate percentagelist_release_health(project_id, release?, env?, page, per_page)get_release_summary(project_id)→ per-release crash rate summaryTasks
004_release_health.sqlEffort: ~2 hours