diff options
| author | Martin Kagamino Lehoux <martin@lehoux.net> | 2026-08-27 19:03:34 +0200 |
|---|---|---|
| committer | Martin Kagamino Lehoux <martin@lehoux.net> | 2026-08-27 19:03:34 +0200 |
| commit | d7b93325d4f70eeab369fa8a3c4cce9f0c4e0081 (patch) | |
| tree | 76a913248fa04325e8e85f34df0cd03654e1ca76 /db | |
| parent | 558f755f5746a4ee819de87579951b7533688e5d (diff) | |
Add dual GPX/FIT exporter and backfill for rides
Phase 1 writes both .gpx and .fit on Strava import, adds fit_path
column, renames storage.gpx_dir to storage.rides_dir, and backfills
missing FIT files from existing GPX without breaking CLI progress.
FIT files are gitignored.
Diffstat (limited to 'db')
| -rw-r--r-- | db/migrations/20260828000000_add_fit_path.sql | 29 | ||||
| -rw-r--r-- | db/schema.sql | 5 |
2 files changed, 32 insertions, 2 deletions
diff --git a/db/migrations/20260828000000_add_fit_path.sql b/db/migrations/20260828000000_add_fit_path.sql new file mode 100644 index 0000000..7f34ab8 --- /dev/null +++ b/db/migrations/20260828000000_add_fit_path.sql @@ -0,0 +1,29 @@ +-- migrate:up +ALTER TABLE rides ADD COLUMN fit_path TEXT NOT NULL DEFAULT ''; + +-- migrate:down +CREATE TABLE rides_new ( + id integer primary key, + external_id text unique not null, + gpx_path text not null, + name text not null, + type text not null, + start_date text not null, + distance_m real not null, + external_moving_time_s integer not null, + elapsed_time_s integer not null, + total_elevation_gain_m real not null, + average_speed_mps real not null, + created_at text not null default (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')), + updated_at text not null default (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')), + cotacol_score real, + cotacol_algo_version text, + moving_time_s integer, + moving_time_algo_version text, + bike_type TEXT NOT NULL DEFAULT '' CHECK (bike_type IN ('', 'road', 'mtb')), + ride_type TEXT NOT NULL DEFAULT '' CHECK (ride_type IN ('', 'training', 'indoor', 'race', 'transport')) +); +INSERT INTO rides_new (id, external_id, gpx_path, name, type, start_date, distance_m, external_moving_time_s, elapsed_time_s, total_elevation_gain_m, average_speed_mps, created_at, updated_at, cotacol_score, cotacol_algo_version, moving_time_s, moving_time_algo_version, bike_type, ride_type) +SELECT id, external_id, gpx_path, name, type, start_date, distance_m, external_moving_time_s, elapsed_time_s, total_elevation_gain_m, average_speed_mps, created_at, updated_at, cotacol_score, cotacol_algo_version, moving_time_s, moving_time_algo_version, bike_type, ride_type FROM rides; +DROP TABLE rides; +ALTER TABLE rides_new RENAME TO rides; diff --git a/db/schema.sql b/db/schema.sql index 8ae55f7..a22e98f 100644 --- a/db/schema.sql +++ b/db/schema.sql @@ -13,7 +13,7 @@ CREATE TABLE rides ( average_speed_mps real not null, created_at text not null default (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')), updated_at text not null default (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')) -, cotacol_score real, cotacol_algo_version text, moving_time_s integer, moving_time_algo_version text, bike_type TEXT NOT NULL DEFAULT '' CHECK (bike_type IN ('', 'road', 'mtb')), ride_type TEXT NOT NULL DEFAULT '' CHECK (ride_type IN ('', 'training', 'indoor', 'race', 'transport'))); +, cotacol_score real, cotacol_algo_version text, moving_time_s integer, moving_time_algo_version text, bike_type TEXT NOT NULL DEFAULT '' CHECK (bike_type IN ('', 'road', 'mtb')), ride_type TEXT NOT NULL DEFAULT '' CHECK (ride_type IN ('', 'training', 'indoor', 'race', 'transport')), fit_path TEXT NOT NULL DEFAULT ''); CREATE TABLE official_climbs ( id integer primary key, name text not null, @@ -42,4 +42,5 @@ INSERT INTO "schema_migrations" (version) VALUES ('20260820184307'), ('20260821000000'), ('20260823000000'), - ('20260827000000'); + ('20260827000000'), + ('20260828000000'); |
