-- Every climb carries its segment sample, so the columns stop being optional; SQLite cannot alter nullability, hence the rebuild (it fails loudly on a missing sample). -- migrate:up transaction:false PRAGMA foreign_keys=OFF; CREATE TABLE official_climbs_rebuild ( id integer primary key, name text not null, start_latitude real not null, start_longitude real not null, end_latitude real not null, end_longitude 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')), sample_distance_m real not null, sample_elevation_gain_m real not null ); INSERT INTO official_climbs_rebuild (id, name, start_latitude, start_longitude, end_latitude, end_longitude, created_at, updated_at, sample_distance_m, sample_elevation_gain_m) SELECT id, name, start_latitude, start_longitude, end_latitude, end_longitude, created_at, updated_at, sample_distance_m, sample_elevation_gain_m FROM official_climbs; DROP TABLE official_climbs; ALTER TABLE official_climbs_rebuild RENAME TO official_climbs; -- migrate:down transaction:false PRAGMA foreign_keys=OFF; CREATE TABLE official_climbs_rebuild ( id integer primary key, name text not null, start_latitude real not null, start_longitude real not null, end_latitude real not null, end_longitude 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')), sample_distance_m real, sample_elevation_gain_m real ); INSERT INTO official_climbs_rebuild (id, name, start_latitude, start_longitude, end_latitude, end_longitude, created_at, updated_at, sample_distance_m, sample_elevation_gain_m) SELECT id, name, start_latitude, start_longitude, end_latitude, end_longitude, created_at, updated_at, sample_distance_m, sample_elevation_gain_m FROM official_climbs; DROP TABLE official_climbs; ALTER TABLE official_climbs_rebuild RENAME TO official_climbs;