feat(store): add DeleteUser with cascading account deletion
This commit is contained in:
@@ -26,7 +26,7 @@ CREATE TABLE users (
|
||||
-- below) in one transaction when a new account signs up.
|
||||
CREATE TABLE profile (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
user_id INTEGER NOT NULL REFERENCES users(id),
|
||||
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||||
name TEXT NOT NULL DEFAULT 'Default',
|
||||
garmin_email TEXT NOT NULL DEFAULT '',
|
||||
garmin_password TEXT NOT NULL DEFAULT '',
|
||||
@@ -82,7 +82,7 @@ CREATE TABLE profile (
|
||||
-- recursive AND/OR condition tree evaluated by internal/classify.
|
||||
CREATE TABLE workout_kinds (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
user_id INTEGER NOT NULL REFERENCES users(id),
|
||||
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||||
name TEXT NOT NULL,
|
||||
description TEXT NOT NULL DEFAULT '',
|
||||
color TEXT NOT NULL DEFAULT '',
|
||||
@@ -100,7 +100,7 @@ CREATE TABLE workout_kinds (
|
||||
-- synced activity log is the history. No user_id column of its own --
|
||||
-- ownership is checked via a JOIN to workout_kinds.
|
||||
CREATE TABLE workout_type_paces (
|
||||
workout_kind_id INTEGER PRIMARY KEY REFERENCES workout_kinds(id),
|
||||
workout_kind_id INTEGER PRIMARY KEY REFERENCES workout_kinds(id) ON DELETE CASCADE,
|
||||
pace_min_sec_per_km REAL,
|
||||
pace_max_sec_per_km REAL,
|
||||
hr_min_pct_hrr REAL,
|
||||
@@ -118,7 +118,7 @@ CREATE TABLE workout_type_paces (
|
||||
-- instead of storing a redundant copy.
|
||||
CREATE TABLE activities (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
user_id INTEGER NOT NULL REFERENCES users(id),
|
||||
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||||
garmin_activity_id INTEGER NOT NULL,
|
||||
-- Derived at sync time from Garmin's own eventType.typeKey=="race" --
|
||||
-- a hard fact, not a rule the user tunes (see internal/classify's
|
||||
@@ -219,7 +219,7 @@ JOIN (
|
||||
-- re-walking years of already-known history on every call.
|
||||
CREATE TABLE sync_state (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
user_id INTEGER NOT NULL REFERENCES users(id),
|
||||
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||||
earliest_synced_date TEXT,
|
||||
backfill_complete INTEGER NOT NULL DEFAULT 0,
|
||||
UNIQUE(user_id)
|
||||
@@ -229,7 +229,7 @@ CREATE TABLE sync_state (
|
||||
-- status the frontend polls.
|
||||
CREATE TABLE sync_runs (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
user_id INTEGER NOT NULL REFERENCES users(id),
|
||||
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||||
kind TEXT NOT NULL CHECK(kind IN ('backfill','incremental','full')),
|
||||
started_at TEXT NOT NULL,
|
||||
finished_at TEXT,
|
||||
|
||||
Reference in New Issue
Block a user