Files
geniusrun/backend/internal/store/reset.go

28 lines
933 B
Go
Raw Normal View History

package store
import (
"context"
"fmt"
)
// ResetAllSyncedData deletes every synced activity (cascading to its laps,
// activity_samples, and kind_assignments via ON DELETE CASCADE) and rewinds
// the backfill watermark to its initial state, so a subsequent Backfill
// starts a genuinely fresh pull instead of thinking history is already
// covered. Workout kinds (the user's taxonomy) are left untouched.
func (db *DB) ResetAllSyncedData(ctx context.Context) error {
tx, err := db.BeginTx(ctx, nil)
if err != nil {
return fmt.Errorf("begin reset tx: %w", err)
}
defer tx.Rollback()
if _, err := tx.ExecContext(ctx, `DELETE FROM activities`); err != nil {
return fmt.Errorf("delete activities: %w", err)
}
if _, err := tx.ExecContext(ctx, `UPDATE sync_state SET earliest_synced_date = NULL, backfill_complete = 0 WHERE id = 1`); err != nil {
return fmt.Errorf("reset sync state: %w", err)
}
return tx.Commit()
}