pub fn run_migrations(conn: &mut Connection) -> Result<(), String>Expand description
Run database migrations for schema updates
GUARANTEES:
- Each migration runs in a transaction (atomic - all or nothing)
- If any migration fails, changes are rolled back - no partial state
- Migrations are tracked in schema_migrations table (idempotent - safe to re-run)
- All errors are logged with [DB] prefix and propagated (no silent failures)