feat(exercice): modèle et migration pour l'auto-enchaînement des chronos d'étapes (ticket #75)

Étend le modèle Drift (migration schemaVersion 13→14, ADD COLUMN) et
la couche application (entités, use cases, repositories) pour
supporter l'auto-enchaînement des chronos d'étapes. flutter pub get
OK, build_runner OK, analyze propre (mêmes infos préexistantes),
141/141 tests verts, build APK debug validé. Premier ticket du
chantier "auto-enchaînement des chronos d'étapes" (#73).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-20 13:42:46 +02:00
parent f510053d55
commit e61365277b
8 changed files with 704 additions and 4 deletions

View File

@ -592,6 +592,10 @@ final class ShareUseCases {
exerciseStepsSnapshot: _exerciseStepsFromSnapshot( exerciseStepsSnapshot: _exerciseStepsFromSnapshot(
map['exerciseStepsSnapshot'], map['exerciseStepsSnapshot'],
), ),
autoStartNextTimedStepSnapshot:
map['autoStartNextTimedStepSnapshot'] as bool? ?? true,
autoStartNextTimedStepOverride:
map['autoStartNextTimedStepOverride'] as bool?,
exerciseArchivedSnapshot: map['exerciseArchivedSnapshot'] == true, exerciseArchivedSnapshot: map['exerciseArchivedSnapshot'] == true,
availableTimeSnapshot: map['availableTimeSnapshot'] == true, availableTimeSnapshot: map['availableTimeSnapshot'] == true,
availableRepsSnapshot: map['availableRepsSnapshot'] == true, availableRepsSnapshot: map['availableRepsSnapshot'] == true,
@ -733,6 +737,8 @@ final class ShareUseCases {
targetRepsOverride: map['targetRepsOverride'] as int?, targetRepsOverride: map['targetRepsOverride'] as int?,
targetScoreOverride: (map['targetScoreOverride'] as num?)?.toDouble(), targetScoreOverride: (map['targetScoreOverride'] as num?)?.toDouble(),
targetScoreTimeMsOverride: map['targetScoreTimeMsOverride'] as int?, targetScoreTimeMsOverride: map['targetScoreTimeMsOverride'] as int?,
autoStartNextTimedStepOverride:
map['autoStartNextTimedStepOverride'] as bool?,
), ),
); );
} }
@ -772,6 +778,7 @@ final class ExerciseUseCases {
int? defaultTargetReps, int? defaultTargetReps,
double? defaultTargetScore, double? defaultTargetScore,
int? defaultTargetScoreTimeMs, int? defaultTargetScoreTimeMs,
bool autoStartNextTimedStep = true,
List<ExerciseStep> steps = const [], List<ExerciseStep> steps = const [],
}) async { }) async {
_validateExerciseSteps(steps); _validateExerciseSteps(steps);
@ -803,6 +810,7 @@ final class ExerciseUseCases {
defaultTargetReps: defaultTargetReps, defaultTargetReps: defaultTargetReps,
defaultTargetScore: defaultTargetScore, defaultTargetScore: defaultTargetScore,
defaultTargetScoreTimeMs: defaultTargetScoreTimeMs, defaultTargetScoreTimeMs: defaultTargetScoreTimeMs,
autoStartNextTimedStep: autoStartNextTimedStep,
steps: steps, steps: steps,
); );
await repository.save(exercise); await repository.save(exercise);
@ -835,6 +843,7 @@ final class ExerciseUseCases {
Object? defaultTargetReps = _useCaseUnchanged, Object? defaultTargetReps = _useCaseUnchanged,
Object? defaultTargetScore = _useCaseUnchanged, Object? defaultTargetScore = _useCaseUnchanged,
Object? defaultTargetScoreTimeMs = _useCaseUnchanged, Object? defaultTargetScoreTimeMs = _useCaseUnchanged,
bool? autoStartNextTimedStep,
Object? steps = _useCaseUnchanged, Object? steps = _useCaseUnchanged,
}) async { }) async {
final exercise = await repository.findById(id); final exercise = await repository.findById(id);
@ -895,6 +904,7 @@ final class ExerciseUseCases {
defaultTargetReps: resolvedDefaultTargetReps, defaultTargetReps: resolvedDefaultTargetReps,
defaultTargetScore: resolvedDefaultTargetScore, defaultTargetScore: resolvedDefaultTargetScore,
defaultTargetScoreTimeMs: resolvedDefaultTargetScoreTimeMs, defaultTargetScoreTimeMs: resolvedDefaultTargetScoreTimeMs,
autoStartNextTimedStep: autoStartNextTimedStep,
steps: resolvedSteps, steps: resolvedSteps,
); );
await repository.save(updated); await repository.save(updated);
@ -1204,6 +1214,10 @@ final class ProgramUseCases {
exerciseImageMediaIdsSnapshot: input.exerciseImageMediaIdsSnapshot, exerciseImageMediaIdsSnapshot: input.exerciseImageMediaIdsSnapshot,
exerciseVideoMediaIdSnapshot: input.exerciseVideoMediaIdSnapshot, exerciseVideoMediaIdSnapshot: input.exerciseVideoMediaIdSnapshot,
exerciseStepsSnapshot: input.exerciseStepsSnapshot, exerciseStepsSnapshot: input.exerciseStepsSnapshot,
autoStartNextTimedStepSnapshot:
input.autoStartNextTimedStepSnapshot,
autoStartNextTimedStepOverride:
input.autoStartNextTimedStepOverride,
exerciseArchivedSnapshot: input.exerciseArchivedSnapshot, exerciseArchivedSnapshot: input.exerciseArchivedSnapshot,
availableTimeSnapshot: input.availableTimeSnapshot, availableTimeSnapshot: input.availableTimeSnapshot,
availableRepsSnapshot: input.availableRepsSnapshot, availableRepsSnapshot: input.availableRepsSnapshot,
@ -1322,6 +1336,8 @@ final class ProgramExerciseConfig {
this.exerciseImageMediaIdsSnapshot = const [], this.exerciseImageMediaIdsSnapshot = const [],
this.exerciseVideoMediaIdSnapshot, this.exerciseVideoMediaIdSnapshot,
this.exerciseStepsSnapshot = const [], this.exerciseStepsSnapshot = const [],
this.autoStartNextTimedStepSnapshot = true,
this.autoStartNextTimedStepOverride,
this.exerciseArchivedSnapshot = false, this.exerciseArchivedSnapshot = false,
required this.availableTimeSnapshot, required this.availableTimeSnapshot,
required this.availableRepsSnapshot, required this.availableRepsSnapshot,
@ -1346,6 +1362,8 @@ final class ProgramExerciseConfig {
final List<String> exerciseImageMediaIdsSnapshot; final List<String> exerciseImageMediaIdsSnapshot;
final String? exerciseVideoMediaIdSnapshot; final String? exerciseVideoMediaIdSnapshot;
final List<ExerciseStep> exerciseStepsSnapshot; final List<ExerciseStep> exerciseStepsSnapshot;
final bool autoStartNextTimedStepSnapshot;
final bool? autoStartNextTimedStepOverride;
final bool exerciseArchivedSnapshot; final bool exerciseArchivedSnapshot;
final bool availableTimeSnapshot; final bool availableTimeSnapshot;
final bool availableRepsSnapshot; final bool availableRepsSnapshot;
@ -1460,6 +1478,8 @@ final class WorkoutTemplateUseCases {
targetRepsOverride: input.targetRepsOverride, targetRepsOverride: input.targetRepsOverride,
targetScoreOverride: input.targetScoreOverride, targetScoreOverride: input.targetScoreOverride,
targetScoreTimeMsOverride: input.targetScoreTimeMsOverride, targetScoreTimeMsOverride: input.targetScoreTimeMsOverride,
autoStartNextTimedStepOverride:
input.autoStartNextTimedStepOverride,
), ),
); );
} }
@ -1502,6 +1522,7 @@ final class WorkoutTemplateUseCases {
int? targetRepsOverride, int? targetRepsOverride,
double? targetScoreOverride, double? targetScoreOverride,
int? targetScoreTimeMsOverride, int? targetScoreTimeMsOverride,
bool? autoStartNextTimedStepOverride,
Set<WorkoutMeasure>? attemptedMeasureOverride, Set<WorkoutMeasure>? attemptedMeasureOverride,
}) async { }) async {
if (attemptedMeasureOverride != null) { if (attemptedMeasureOverride != null) {
@ -1519,6 +1540,7 @@ final class WorkoutTemplateUseCases {
targetRepsOverride: targetRepsOverride, targetRepsOverride: targetRepsOverride,
targetScoreOverride: targetScoreOverride, targetScoreOverride: targetScoreOverride,
targetScoreTimeMsOverride: targetScoreTimeMsOverride, targetScoreTimeMsOverride: targetScoreTimeMsOverride,
autoStartNextTimedStepOverride: autoStartNextTimedStepOverride,
); );
await templateRepository.saveOverride(override); await templateRepository.saveOverride(override);
return override; return override;
@ -1568,6 +1590,7 @@ final class WorkoutTemplateExerciseOverrideConfig {
this.targetRepsOverride, this.targetRepsOverride,
this.targetScoreOverride, this.targetScoreOverride,
this.targetScoreTimeMsOverride, this.targetScoreTimeMsOverride,
this.autoStartNextTimedStepOverride,
}); });
final EntityMetadata? existingMetadata; final EntityMetadata? existingMetadata;
@ -1578,6 +1601,7 @@ final class WorkoutTemplateExerciseOverrideConfig {
final int? targetRepsOverride; final int? targetRepsOverride;
final double? targetScoreOverride; final double? targetScoreOverride;
final int? targetScoreTimeMsOverride; final int? targetScoreTimeMsOverride;
final bool? autoStartNextTimedStepOverride;
} }
final class ActiveWorkoutSessionUseCases { final class ActiveWorkoutSessionUseCases {
@ -1635,6 +1659,8 @@ final class ActiveWorkoutSessionUseCases {
'targetRepsOverride': override.targetRepsOverride, 'targetRepsOverride': override.targetRepsOverride,
'targetScoreOverride': override.targetScoreOverride, 'targetScoreOverride': override.targetScoreOverride,
'targetScoreTimeMsOverride': override.targetScoreTimeMsOverride, 'targetScoreTimeMsOverride': override.targetScoreTimeMsOverride,
'autoStartNextTimedStepOverride':
override.autoStartNextTimedStepOverride,
}, },
) )
.toList(), .toList(),
@ -3185,6 +3211,8 @@ Map<String, Object?> _workoutTemplateSharePayload(WorkoutTemplate template) => {
'targetRepsOverride': override.targetRepsOverride, 'targetRepsOverride': override.targetRepsOverride,
'targetScoreOverride': override.targetScoreOverride, 'targetScoreOverride': override.targetScoreOverride,
'targetScoreTimeMsOverride': override.targetScoreTimeMsOverride, 'targetScoreTimeMsOverride': override.targetScoreTimeMsOverride,
'autoStartNextTimedStepOverride':
override.autoStartNextTimedStepOverride,
}, },
) )
.toList(), .toList(),

View File

@ -318,6 +318,7 @@ final class Exercise {
this.defaultTargetReps, this.defaultTargetReps,
this.defaultTargetScore, this.defaultTargetScore,
this.defaultTargetScoreTimeMs, this.defaultTargetScoreTimeMs,
this.autoStartNextTimedStep = true,
List<ExerciseStep> steps = const [], List<ExerciseStep> steps = const [],
this.archivedAt, this.archivedAt,
}) : name = _nonBlank(name, 'Exercise name'), }) : name = _nonBlank(name, 'Exercise name'),
@ -375,6 +376,7 @@ final class Exercise {
final int? defaultTargetReps; final int? defaultTargetReps;
final double? defaultTargetScore; final double? defaultTargetScore;
final int? defaultTargetScoreTimeMs; final int? defaultTargetScoreTimeMs;
final bool autoStartNextTimedStep;
final List<ExerciseStep> steps; final List<ExerciseStep> steps;
final DateTime? archivedAt; final DateTime? archivedAt;
@ -409,6 +411,7 @@ final class Exercise {
Object? defaultTargetReps = _unchanged, Object? defaultTargetReps = _unchanged,
Object? defaultTargetScore = _unchanged, Object? defaultTargetScore = _unchanged,
Object? defaultTargetScoreTimeMs = _unchanged, Object? defaultTargetScoreTimeMs = _unchanged,
bool? autoStartNextTimedStep,
Object? steps = _unchanged, Object? steps = _unchanged,
Object? archivedAt = _unchanged, Object? archivedAt = _unchanged,
}) { }) {
@ -456,6 +459,8 @@ final class Exercise {
defaultTargetScoreTimeMs: defaultTargetScoreTimeMs == _unchanged defaultTargetScoreTimeMs: defaultTargetScoreTimeMs == _unchanged
? this.defaultTargetScoreTimeMs ? this.defaultTargetScoreTimeMs
: defaultTargetScoreTimeMs as int?, : defaultTargetScoreTimeMs as int?,
autoStartNextTimedStep:
autoStartNextTimedStep ?? this.autoStartNextTimedStep,
steps: steps == _unchanged ? this.steps : steps as List<ExerciseStep>, steps: steps == _unchanged ? this.steps : steps as List<ExerciseStep>,
archivedAt: archivedAt == _unchanged archivedAt: archivedAt == _unchanged
? this.archivedAt ? this.archivedAt
@ -562,6 +567,8 @@ final class ProgramExercise {
List<String> exerciseImageMediaIdsSnapshot = const [], List<String> exerciseImageMediaIdsSnapshot = const [],
this.exerciseVideoMediaIdSnapshot, this.exerciseVideoMediaIdSnapshot,
List<ExerciseStep> exerciseStepsSnapshot = const [], List<ExerciseStep> exerciseStepsSnapshot = const [],
this.autoStartNextTimedStepSnapshot = true,
this.autoStartNextTimedStepOverride,
this.exerciseArchivedSnapshot = false, this.exerciseArchivedSnapshot = false,
required this.availableTimeSnapshot, required this.availableTimeSnapshot,
required this.availableRepsSnapshot, required this.availableRepsSnapshot,
@ -628,6 +635,8 @@ final class ProgramExercise {
final List<String> exerciseImageMediaIdsSnapshot; final List<String> exerciseImageMediaIdsSnapshot;
final String? exerciseVideoMediaIdSnapshot; final String? exerciseVideoMediaIdSnapshot;
final List<ExerciseStep> exerciseStepsSnapshot; final List<ExerciseStep> exerciseStepsSnapshot;
final bool autoStartNextTimedStepSnapshot;
final bool? autoStartNextTimedStepOverride;
final bool exerciseArchivedSnapshot; final bool exerciseArchivedSnapshot;
final bool availableTimeSnapshot; final bool availableTimeSnapshot;
final bool availableRepsSnapshot; final bool availableRepsSnapshot;
@ -675,6 +684,7 @@ final class ProgramExercise {
exerciseImageMediaIdsSnapshot: exercise.imageMediaIds, exerciseImageMediaIdsSnapshot: exercise.imageMediaIds,
exerciseVideoMediaIdSnapshot: exercise.videoMediaId, exerciseVideoMediaIdSnapshot: exercise.videoMediaId,
exerciseStepsSnapshot: exercise.steps, exerciseStepsSnapshot: exercise.steps,
autoStartNextTimedStepSnapshot: exercise.autoStartNextTimedStep,
exerciseArchivedSnapshot: exercise.archivedAt != null, exerciseArchivedSnapshot: exercise.archivedAt != null,
availableTimeSnapshot: exercise.hasTimeMeasure, availableTimeSnapshot: exercise.hasTimeMeasure,
availableRepsSnapshot: exercise.hasRepsMeasure, availableRepsSnapshot: exercise.hasRepsMeasure,
@ -707,6 +717,8 @@ final class ProgramExercise {
'exerciseStepsSnapshot': exerciseStepsSnapshot 'exerciseStepsSnapshot': exerciseStepsSnapshot
.map((step) => step.toSnapshotJson()) .map((step) => step.toSnapshotJson())
.toList(), .toList(),
'autoStartNextTimedStepSnapshot': autoStartNextTimedStepSnapshot,
'autoStartNextTimedStepOverride': autoStartNextTimedStepOverride,
'exerciseArchivedSnapshot': exerciseArchivedSnapshot, 'exerciseArchivedSnapshot': exerciseArchivedSnapshot,
'availableTimeSnapshot': availableTimeSnapshot, 'availableTimeSnapshot': availableTimeSnapshot,
'availableRepsSnapshot': availableRepsSnapshot, 'availableRepsSnapshot': availableRepsSnapshot,
@ -802,6 +814,7 @@ final class WorkoutTemplateExerciseOverride {
this.targetRepsOverride, this.targetRepsOverride,
this.targetScoreOverride, this.targetScoreOverride,
this.targetScoreTimeMsOverride, this.targetScoreTimeMsOverride,
this.autoStartNextTimedStepOverride,
}) : snapshotProgramExerciseId = _nonBlank( }) : snapshotProgramExerciseId = _nonBlank(
snapshotProgramExerciseId, snapshotProgramExerciseId,
'Snapshot program exercise id', 'Snapshot program exercise id',
@ -835,6 +848,7 @@ final class WorkoutTemplateExerciseOverride {
final int? targetRepsOverride; final int? targetRepsOverride;
final double? targetScoreOverride; final double? targetScoreOverride;
final int? targetScoreTimeMsOverride; final int? targetScoreTimeMsOverride;
final bool? autoStartNextTimedStepOverride;
} }
final class ActiveWorkoutSession { final class ActiveWorkoutSession {

View File

@ -46,7 +46,7 @@ final class AppDatabase extends _$AppDatabase {
} }
@override @override
int get schemaVersion => 13; int get schemaVersion => 14;
@override @override
MigrationStrategy get migration { MigrationStrategy get migration {
@ -100,6 +100,9 @@ final class AppDatabase extends _$AppDatabase {
if (from < 13) { if (from < 13) {
await _migrateToSchema13(); await _migrateToSchema13();
} }
if (from < 14) {
await _migrateToSchema14();
}
await _createIndexes(); await _createIndexes();
}, },
beforeOpen: (details) async { beforeOpen: (details) async {
@ -469,4 +472,26 @@ FROM exercises
await customStatement('ALTER TABLE exercises_new RENAME TO exercises'); await customStatement('ALTER TABLE exercises_new RENAME TO exercises');
await customStatement('PRAGMA foreign_keys = ON'); await customStatement('PRAGMA foreign_keys = ON');
} }
Future<void> _migrateToSchema14() async {
await customStatement(
'ALTER TABLE exercises ADD COLUMN auto_start_next_timed_step '
'INTEGER NOT NULL DEFAULT 1 CHECK (auto_start_next_timed_step IN (0, 1))',
);
await customStatement(
'ALTER TABLE program_exercises ADD COLUMN '
'auto_start_next_timed_step_snapshot INTEGER NOT NULL DEFAULT 1 '
'CHECK (auto_start_next_timed_step_snapshot IN (0, 1))',
);
await customStatement(
'ALTER TABLE program_exercises ADD COLUMN '
'auto_start_next_timed_step_override INTEGER '
'CHECK (auto_start_next_timed_step_override IN (0, 1))',
);
await customStatement(
'ALTER TABLE workout_template_exercise_overrides ADD COLUMN '
'auto_start_next_timed_step_override INTEGER '
'CHECK (auto_start_next_timed_step_override IN (0, 1))',
);
}
} }

View File

@ -11542,6 +11542,21 @@ class $ExercisesTable extends Exercises
type: DriftSqlType.int, type: DriftSqlType.int,
requiredDuringInsert: false, requiredDuringInsert: false,
); );
static const VerificationMeta _autoStartNextTimedStepMeta =
const VerificationMeta('autoStartNextTimedStep');
@override
late final GeneratedColumn<bool> autoStartNextTimedStep =
GeneratedColumn<bool>(
'auto_start_next_timed_step',
aliasedName,
false,
type: DriftSqlType.bool,
requiredDuringInsert: false,
defaultConstraints: GeneratedColumn.constraintIsAlways(
'CHECK ("auto_start_next_timed_step" IN (0, 1))',
),
defaultValue: const Constant(true),
);
static const VerificationMeta _archivedAtMeta = const VerificationMeta( static const VerificationMeta _archivedAtMeta = const VerificationMeta(
'archivedAt', 'archivedAt',
); );
@ -11580,6 +11595,7 @@ class $ExercisesTable extends Exercises
defaultTargetReps, defaultTargetReps,
defaultTargetScore, defaultTargetScore,
defaultTargetScoreTimeMs, defaultTargetScoreTimeMs,
autoStartNextTimedStep,
archivedAt, archivedAt,
]; ];
@override @override
@ -11812,6 +11828,15 @@ class $ExercisesTable extends Exercises
), ),
); );
} }
if (data.containsKey('auto_start_next_timed_step')) {
context.handle(
_autoStartNextTimedStepMeta,
autoStartNextTimedStep.isAcceptableOrUnknown(
data['auto_start_next_timed_step']!,
_autoStartNextTimedStepMeta,
),
);
}
if (data.containsKey('archived_at')) { if (data.containsKey('archived_at')) {
context.handle( context.handle(
_archivedAtMeta, _archivedAtMeta,
@ -11927,6 +11952,10 @@ class $ExercisesTable extends Exercises
DriftSqlType.int, DriftSqlType.int,
data['${effectivePrefix}default_target_score_time_ms'], data['${effectivePrefix}default_target_score_time_ms'],
), ),
autoStartNextTimedStep: attachedDatabase.typeMapping.read(
DriftSqlType.bool,
data['${effectivePrefix}auto_start_next_timed_step'],
)!,
archivedAt: attachedDatabase.typeMapping.read( archivedAt: attachedDatabase.typeMapping.read(
DriftSqlType.dateTime, DriftSqlType.dateTime,
data['${effectivePrefix}archived_at'], data['${effectivePrefix}archived_at'],
@ -11966,6 +11995,7 @@ class Exercise extends DataClass implements Insertable<Exercise> {
final int? defaultTargetReps; final int? defaultTargetReps;
final double? defaultTargetScore; final double? defaultTargetScore;
final int? defaultTargetScoreTimeMs; final int? defaultTargetScoreTimeMs;
final bool autoStartNextTimedStep;
final DateTime? archivedAt; final DateTime? archivedAt;
const Exercise({ const Exercise({
required this.id, required this.id,
@ -11993,6 +12023,7 @@ class Exercise extends DataClass implements Insertable<Exercise> {
this.defaultTargetReps, this.defaultTargetReps,
this.defaultTargetScore, this.defaultTargetScore,
this.defaultTargetScoreTimeMs, this.defaultTargetScoreTimeMs,
required this.autoStartNextTimedStep,
this.archivedAt, this.archivedAt,
}); });
@override @override
@ -12053,6 +12084,7 @@ class Exercise extends DataClass implements Insertable<Exercise> {
defaultTargetScoreTimeMs, defaultTargetScoreTimeMs,
); );
} }
map['auto_start_next_timed_step'] = Variable<bool>(autoStartNextTimedStep);
if (!nullToAbsent || archivedAt != null) { if (!nullToAbsent || archivedAt != null) {
map['archived_at'] = Variable<DateTime>(archivedAt); map['archived_at'] = Variable<DateTime>(archivedAt);
} }
@ -12112,6 +12144,7 @@ class Exercise extends DataClass implements Insertable<Exercise> {
defaultTargetScoreTimeMs: defaultTargetScoreTimeMs == null && nullToAbsent defaultTargetScoreTimeMs: defaultTargetScoreTimeMs == null && nullToAbsent
? const Value.absent() ? const Value.absent()
: Value(defaultTargetScoreTimeMs), : Value(defaultTargetScoreTimeMs),
autoStartNextTimedStep: Value(autoStartNextTimedStep),
archivedAt: archivedAt == null && nullToAbsent archivedAt: archivedAt == null && nullToAbsent
? const Value.absent() ? const Value.absent()
: Value(archivedAt), : Value(archivedAt),
@ -12157,6 +12190,9 @@ class Exercise extends DataClass implements Insertable<Exercise> {
defaultTargetScoreTimeMs: serializer.fromJson<int?>( defaultTargetScoreTimeMs: serializer.fromJson<int?>(
json['defaultTargetScoreTimeMs'], json['defaultTargetScoreTimeMs'],
), ),
autoStartNextTimedStep: serializer.fromJson<bool>(
json['autoStartNextTimedStep'],
),
archivedAt: serializer.fromJson<DateTime?>(json['archivedAt']), archivedAt: serializer.fromJson<DateTime?>(json['archivedAt']),
); );
} }
@ -12193,6 +12229,7 @@ class Exercise extends DataClass implements Insertable<Exercise> {
'defaultTargetScoreTimeMs': serializer.toJson<int?>( 'defaultTargetScoreTimeMs': serializer.toJson<int?>(
defaultTargetScoreTimeMs, defaultTargetScoreTimeMs,
), ),
'autoStartNextTimedStep': serializer.toJson<bool>(autoStartNextTimedStep),
'archivedAt': serializer.toJson<DateTime?>(archivedAt), 'archivedAt': serializer.toJson<DateTime?>(archivedAt),
}; };
} }
@ -12223,6 +12260,7 @@ class Exercise extends DataClass implements Insertable<Exercise> {
Value<int?> defaultTargetReps = const Value.absent(), Value<int?> defaultTargetReps = const Value.absent(),
Value<double?> defaultTargetScore = const Value.absent(), Value<double?> defaultTargetScore = const Value.absent(),
Value<int?> defaultTargetScoreTimeMs = const Value.absent(), Value<int?> defaultTargetScoreTimeMs = const Value.absent(),
bool? autoStartNextTimedStep,
Value<DateTime?> archivedAt = const Value.absent(), Value<DateTime?> archivedAt = const Value.absent(),
}) => Exercise( }) => Exercise(
id: id ?? this.id, id: id ?? this.id,
@ -12262,6 +12300,8 @@ class Exercise extends DataClass implements Insertable<Exercise> {
defaultTargetScoreTimeMs: defaultTargetScoreTimeMs.present defaultTargetScoreTimeMs: defaultTargetScoreTimeMs.present
? defaultTargetScoreTimeMs.value ? defaultTargetScoreTimeMs.value
: this.defaultTargetScoreTimeMs, : this.defaultTargetScoreTimeMs,
autoStartNextTimedStep:
autoStartNextTimedStep ?? this.autoStartNextTimedStep,
archivedAt: archivedAt.present ? archivedAt.value : this.archivedAt, archivedAt: archivedAt.present ? archivedAt.value : this.archivedAt,
); );
Exercise copyWithCompanion(ExercisesCompanion data) { Exercise copyWithCompanion(ExercisesCompanion data) {
@ -12327,6 +12367,9 @@ class Exercise extends DataClass implements Insertable<Exercise> {
defaultTargetScoreTimeMs: data.defaultTargetScoreTimeMs.present defaultTargetScoreTimeMs: data.defaultTargetScoreTimeMs.present
? data.defaultTargetScoreTimeMs.value ? data.defaultTargetScoreTimeMs.value
: this.defaultTargetScoreTimeMs, : this.defaultTargetScoreTimeMs,
autoStartNextTimedStep: data.autoStartNextTimedStep.present
? data.autoStartNextTimedStep.value
: this.autoStartNextTimedStep,
archivedAt: data.archivedAt.present archivedAt: data.archivedAt.present
? data.archivedAt.value ? data.archivedAt.value
: this.archivedAt, : this.archivedAt,
@ -12361,6 +12404,7 @@ class Exercise extends DataClass implements Insertable<Exercise> {
..write('defaultTargetReps: $defaultTargetReps, ') ..write('defaultTargetReps: $defaultTargetReps, ')
..write('defaultTargetScore: $defaultTargetScore, ') ..write('defaultTargetScore: $defaultTargetScore, ')
..write('defaultTargetScoreTimeMs: $defaultTargetScoreTimeMs, ') ..write('defaultTargetScoreTimeMs: $defaultTargetScoreTimeMs, ')
..write('autoStartNextTimedStep: $autoStartNextTimedStep, ')
..write('archivedAt: $archivedAt') ..write('archivedAt: $archivedAt')
..write(')')) ..write(')'))
.toString(); .toString();
@ -12393,6 +12437,7 @@ class Exercise extends DataClass implements Insertable<Exercise> {
defaultTargetReps, defaultTargetReps,
defaultTargetScore, defaultTargetScore,
defaultTargetScoreTimeMs, defaultTargetScoreTimeMs,
autoStartNextTimedStep,
archivedAt, archivedAt,
]); ]);
@override @override
@ -12424,6 +12469,7 @@ class Exercise extends DataClass implements Insertable<Exercise> {
other.defaultTargetReps == this.defaultTargetReps && other.defaultTargetReps == this.defaultTargetReps &&
other.defaultTargetScore == this.defaultTargetScore && other.defaultTargetScore == this.defaultTargetScore &&
other.defaultTargetScoreTimeMs == this.defaultTargetScoreTimeMs && other.defaultTargetScoreTimeMs == this.defaultTargetScoreTimeMs &&
other.autoStartNextTimedStep == this.autoStartNextTimedStep &&
other.archivedAt == this.archivedAt); other.archivedAt == this.archivedAt);
} }
@ -12453,6 +12499,7 @@ class ExercisesCompanion extends UpdateCompanion<Exercise> {
final Value<int?> defaultTargetReps; final Value<int?> defaultTargetReps;
final Value<double?> defaultTargetScore; final Value<double?> defaultTargetScore;
final Value<int?> defaultTargetScoreTimeMs; final Value<int?> defaultTargetScoreTimeMs;
final Value<bool> autoStartNextTimedStep;
final Value<DateTime?> archivedAt; final Value<DateTime?> archivedAt;
final Value<int> rowid; final Value<int> rowid;
const ExercisesCompanion({ const ExercisesCompanion({
@ -12481,6 +12528,7 @@ class ExercisesCompanion extends UpdateCompanion<Exercise> {
this.defaultTargetReps = const Value.absent(), this.defaultTargetReps = const Value.absent(),
this.defaultTargetScore = const Value.absent(), this.defaultTargetScore = const Value.absent(),
this.defaultTargetScoreTimeMs = const Value.absent(), this.defaultTargetScoreTimeMs = const Value.absent(),
this.autoStartNextTimedStep = const Value.absent(),
this.archivedAt = const Value.absent(), this.archivedAt = const Value.absent(),
this.rowid = const Value.absent(), this.rowid = const Value.absent(),
}); });
@ -12510,6 +12558,7 @@ class ExercisesCompanion extends UpdateCompanion<Exercise> {
this.defaultTargetReps = const Value.absent(), this.defaultTargetReps = const Value.absent(),
this.defaultTargetScore = const Value.absent(), this.defaultTargetScore = const Value.absent(),
this.defaultTargetScoreTimeMs = const Value.absent(), this.defaultTargetScoreTimeMs = const Value.absent(),
this.autoStartNextTimedStep = const Value.absent(),
this.archivedAt = const Value.absent(), this.archivedAt = const Value.absent(),
this.rowid = const Value.absent(), this.rowid = const Value.absent(),
}) : id = Value(id), }) : id = Value(id),
@ -12548,6 +12597,7 @@ class ExercisesCompanion extends UpdateCompanion<Exercise> {
Expression<int>? defaultTargetReps, Expression<int>? defaultTargetReps,
Expression<double>? defaultTargetScore, Expression<double>? defaultTargetScore,
Expression<int>? defaultTargetScoreTimeMs, Expression<int>? defaultTargetScoreTimeMs,
Expression<bool>? autoStartNextTimedStep,
Expression<DateTime>? archivedAt, Expression<DateTime>? archivedAt,
Expression<int>? rowid, Expression<int>? rowid,
}) { }) {
@ -12581,6 +12631,8 @@ class ExercisesCompanion extends UpdateCompanion<Exercise> {
'default_target_score': defaultTargetScore, 'default_target_score': defaultTargetScore,
if (defaultTargetScoreTimeMs != null) if (defaultTargetScoreTimeMs != null)
'default_target_score_time_ms': defaultTargetScoreTimeMs, 'default_target_score_time_ms': defaultTargetScoreTimeMs,
if (autoStartNextTimedStep != null)
'auto_start_next_timed_step': autoStartNextTimedStep,
if (archivedAt != null) 'archived_at': archivedAt, if (archivedAt != null) 'archived_at': archivedAt,
if (rowid != null) 'rowid': rowid, if (rowid != null) 'rowid': rowid,
}); });
@ -12612,6 +12664,7 @@ class ExercisesCompanion extends UpdateCompanion<Exercise> {
Value<int?>? defaultTargetReps, Value<int?>? defaultTargetReps,
Value<double?>? defaultTargetScore, Value<double?>? defaultTargetScore,
Value<int?>? defaultTargetScoreTimeMs, Value<int?>? defaultTargetScoreTimeMs,
Value<bool>? autoStartNextTimedStep,
Value<DateTime?>? archivedAt, Value<DateTime?>? archivedAt,
Value<int>? rowid, Value<int>? rowid,
}) { }) {
@ -12643,6 +12696,8 @@ class ExercisesCompanion extends UpdateCompanion<Exercise> {
defaultTargetScore: defaultTargetScore ?? this.defaultTargetScore, defaultTargetScore: defaultTargetScore ?? this.defaultTargetScore,
defaultTargetScoreTimeMs: defaultTargetScoreTimeMs:
defaultTargetScoreTimeMs ?? this.defaultTargetScoreTimeMs, defaultTargetScoreTimeMs ?? this.defaultTargetScoreTimeMs,
autoStartNextTimedStep:
autoStartNextTimedStep ?? this.autoStartNextTimedStep,
archivedAt: archivedAt ?? this.archivedAt, archivedAt: archivedAt ?? this.archivedAt,
rowid: rowid ?? this.rowid, rowid: rowid ?? this.rowid,
); );
@ -12732,6 +12787,11 @@ class ExercisesCompanion extends UpdateCompanion<Exercise> {
defaultTargetScoreTimeMs.value, defaultTargetScoreTimeMs.value,
); );
} }
if (autoStartNextTimedStep.present) {
map['auto_start_next_timed_step'] = Variable<bool>(
autoStartNextTimedStep.value,
);
}
if (archivedAt.present) { if (archivedAt.present) {
map['archived_at'] = Variable<DateTime>(archivedAt.value); map['archived_at'] = Variable<DateTime>(archivedAt.value);
} }
@ -12769,6 +12829,7 @@ class ExercisesCompanion extends UpdateCompanion<Exercise> {
..write('defaultTargetReps: $defaultTargetReps, ') ..write('defaultTargetReps: $defaultTargetReps, ')
..write('defaultTargetScore: $defaultTargetScore, ') ..write('defaultTargetScore: $defaultTargetScore, ')
..write('defaultTargetScoreTimeMs: $defaultTargetScoreTimeMs, ') ..write('defaultTargetScoreTimeMs: $defaultTargetScoreTimeMs, ')
..write('autoStartNextTimedStep: $autoStartNextTimedStep, ')
..write('archivedAt: $archivedAt, ') ..write('archivedAt: $archivedAt, ')
..write('rowid: $rowid') ..write('rowid: $rowid')
..write(')')) ..write(')'))
@ -17138,6 +17199,35 @@ class $ProgramExercisesTable extends ProgramExercises
type: DriftSqlType.string, type: DriftSqlType.string,
requiredDuringInsert: false, requiredDuringInsert: false,
); );
static const VerificationMeta _autoStartNextTimedStepSnapshotMeta =
const VerificationMeta('autoStartNextTimedStepSnapshot');
@override
late final GeneratedColumn<bool> autoStartNextTimedStepSnapshot =
GeneratedColumn<bool>(
'auto_start_next_timed_step_snapshot',
aliasedName,
false,
type: DriftSqlType.bool,
requiredDuringInsert: false,
defaultConstraints: GeneratedColumn.constraintIsAlways(
'CHECK ("auto_start_next_timed_step_snapshot" IN (0, 1))',
),
defaultValue: const Constant(true),
);
static const VerificationMeta _autoStartNextTimedStepOverrideMeta =
const VerificationMeta('autoStartNextTimedStepOverride');
@override
late final GeneratedColumn<bool> autoStartNextTimedStepOverride =
GeneratedColumn<bool>(
'auto_start_next_timed_step_override',
aliasedName,
true,
type: DriftSqlType.bool,
requiredDuringInsert: false,
defaultConstraints: GeneratedColumn.constraintIsAlways(
'CHECK ("auto_start_next_timed_step_override" IN (0, 1))',
),
);
static const VerificationMeta _exerciseVideoMediaIdSnapshotMeta = static const VerificationMeta _exerciseVideoMediaIdSnapshotMeta =
const VerificationMeta('exerciseVideoMediaIdSnapshot'); const VerificationMeta('exerciseVideoMediaIdSnapshot');
@override @override
@ -17372,6 +17462,8 @@ class $ProgramExercisesTable extends ProgramExercises
exerciseImageMediaIdSnapshot, exerciseImageMediaIdSnapshot,
exerciseImageMediaIdsSnapshotJson, exerciseImageMediaIdsSnapshotJson,
exerciseStepsSnapshotJson, exerciseStepsSnapshotJson,
autoStartNextTimedStepSnapshot,
autoStartNextTimedStepOverride,
exerciseVideoMediaIdSnapshot, exerciseVideoMediaIdSnapshot,
exerciseArchivedSnapshot, exerciseArchivedSnapshot,
availableTimeSnapshot, availableTimeSnapshot,
@ -17567,6 +17659,24 @@ class $ProgramExercisesTable extends ProgramExercises
), ),
); );
} }
if (data.containsKey('auto_start_next_timed_step_snapshot')) {
context.handle(
_autoStartNextTimedStepSnapshotMeta,
autoStartNextTimedStepSnapshot.isAcceptableOrUnknown(
data['auto_start_next_timed_step_snapshot']!,
_autoStartNextTimedStepSnapshotMeta,
),
);
}
if (data.containsKey('auto_start_next_timed_step_override')) {
context.handle(
_autoStartNextTimedStepOverrideMeta,
autoStartNextTimedStepOverride.isAcceptableOrUnknown(
data['auto_start_next_timed_step_override']!,
_autoStartNextTimedStepOverrideMeta,
),
);
}
if (data.containsKey('exercise_video_media_id_snapshot')) { if (data.containsKey('exercise_video_media_id_snapshot')) {
context.handle( context.handle(
_exerciseVideoMediaIdSnapshotMeta, _exerciseVideoMediaIdSnapshotMeta,
@ -17813,6 +17923,14 @@ class $ProgramExercisesTable extends ProgramExercises
DriftSqlType.string, DriftSqlType.string,
data['${effectivePrefix}exercise_steps_snapshot_json'], data['${effectivePrefix}exercise_steps_snapshot_json'],
), ),
autoStartNextTimedStepSnapshot: attachedDatabase.typeMapping.read(
DriftSqlType.bool,
data['${effectivePrefix}auto_start_next_timed_step_snapshot'],
)!,
autoStartNextTimedStepOverride: attachedDatabase.typeMapping.read(
DriftSqlType.bool,
data['${effectivePrefix}auto_start_next_timed_step_override'],
),
exerciseVideoMediaIdSnapshot: attachedDatabase.typeMapping.read( exerciseVideoMediaIdSnapshot: attachedDatabase.typeMapping.read(
DriftSqlType.string, DriftSqlType.string,
data['${effectivePrefix}exercise_video_media_id_snapshot'], data['${effectivePrefix}exercise_video_media_id_snapshot'],
@ -17910,6 +18028,8 @@ class ProgramExercise extends DataClass implements Insertable<ProgramExercise> {
final String? exerciseImageMediaIdSnapshot; final String? exerciseImageMediaIdSnapshot;
final String? exerciseImageMediaIdsSnapshotJson; final String? exerciseImageMediaIdsSnapshotJson;
final String? exerciseStepsSnapshotJson; final String? exerciseStepsSnapshotJson;
final bool autoStartNextTimedStepSnapshot;
final bool? autoStartNextTimedStepOverride;
final String? exerciseVideoMediaIdSnapshot; final String? exerciseVideoMediaIdSnapshot;
final bool exerciseArchivedSnapshot; final bool exerciseArchivedSnapshot;
final bool availableTimeSnapshot; final bool availableTimeSnapshot;
@ -17947,6 +18067,8 @@ class ProgramExercise extends DataClass implements Insertable<ProgramExercise> {
this.exerciseImageMediaIdSnapshot, this.exerciseImageMediaIdSnapshot,
this.exerciseImageMediaIdsSnapshotJson, this.exerciseImageMediaIdsSnapshotJson,
this.exerciseStepsSnapshotJson, this.exerciseStepsSnapshotJson,
required this.autoStartNextTimedStepSnapshot,
this.autoStartNextTimedStepOverride,
this.exerciseVideoMediaIdSnapshot, this.exerciseVideoMediaIdSnapshot,
required this.exerciseArchivedSnapshot, required this.exerciseArchivedSnapshot,
required this.availableTimeSnapshot, required this.availableTimeSnapshot,
@ -18013,6 +18135,14 @@ class ProgramExercise extends DataClass implements Insertable<ProgramExercise> {
exerciseStepsSnapshotJson, exerciseStepsSnapshotJson,
); );
} }
map['auto_start_next_timed_step_snapshot'] = Variable<bool>(
autoStartNextTimedStepSnapshot,
);
if (!nullToAbsent || autoStartNextTimedStepOverride != null) {
map['auto_start_next_timed_step_override'] = Variable<bool>(
autoStartNextTimedStepOverride,
);
}
if (!nullToAbsent || exerciseVideoMediaIdSnapshot != null) { if (!nullToAbsent || exerciseVideoMediaIdSnapshot != null) {
map['exercise_video_media_id_snapshot'] = Variable<String>( map['exercise_video_media_id_snapshot'] = Variable<String>(
exerciseVideoMediaIdSnapshot, exerciseVideoMediaIdSnapshot,
@ -18096,6 +18226,11 @@ class ProgramExercise extends DataClass implements Insertable<ProgramExercise> {
exerciseStepsSnapshotJson == null && nullToAbsent exerciseStepsSnapshotJson == null && nullToAbsent
? const Value.absent() ? const Value.absent()
: Value(exerciseStepsSnapshotJson), : Value(exerciseStepsSnapshotJson),
autoStartNextTimedStepSnapshot: Value(autoStartNextTimedStepSnapshot),
autoStartNextTimedStepOverride:
autoStartNextTimedStepOverride == null && nullToAbsent
? const Value.absent()
: Value(autoStartNextTimedStepOverride),
exerciseVideoMediaIdSnapshot: exerciseVideoMediaIdSnapshot:
exerciseVideoMediaIdSnapshot == null && nullToAbsent exerciseVideoMediaIdSnapshot == null && nullToAbsent
? const Value.absent() ? const Value.absent()
@ -18170,6 +18305,12 @@ class ProgramExercise extends DataClass implements Insertable<ProgramExercise> {
exerciseStepsSnapshotJson: serializer.fromJson<String?>( exerciseStepsSnapshotJson: serializer.fromJson<String?>(
json['exerciseStepsSnapshotJson'], json['exerciseStepsSnapshotJson'],
), ),
autoStartNextTimedStepSnapshot: serializer.fromJson<bool>(
json['autoStartNextTimedStepSnapshot'],
),
autoStartNextTimedStepOverride: serializer.fromJson<bool?>(
json['autoStartNextTimedStepOverride'],
),
exerciseVideoMediaIdSnapshot: serializer.fromJson<String?>( exerciseVideoMediaIdSnapshot: serializer.fromJson<String?>(
json['exerciseVideoMediaIdSnapshot'], json['exerciseVideoMediaIdSnapshot'],
), ),
@ -18238,6 +18379,12 @@ class ProgramExercise extends DataClass implements Insertable<ProgramExercise> {
'exerciseStepsSnapshotJson': serializer.toJson<String?>( 'exerciseStepsSnapshotJson': serializer.toJson<String?>(
exerciseStepsSnapshotJson, exerciseStepsSnapshotJson,
), ),
'autoStartNextTimedStepSnapshot': serializer.toJson<bool>(
autoStartNextTimedStepSnapshot,
),
'autoStartNextTimedStepOverride': serializer.toJson<bool?>(
autoStartNextTimedStepOverride,
),
'exerciseVideoMediaIdSnapshot': serializer.toJson<String?>( 'exerciseVideoMediaIdSnapshot': serializer.toJson<String?>(
exerciseVideoMediaIdSnapshot, exerciseVideoMediaIdSnapshot,
), ),
@ -18284,6 +18431,8 @@ class ProgramExercise extends DataClass implements Insertable<ProgramExercise> {
Value<String?> exerciseImageMediaIdSnapshot = const Value.absent(), Value<String?> exerciseImageMediaIdSnapshot = const Value.absent(),
Value<String?> exerciseImageMediaIdsSnapshotJson = const Value.absent(), Value<String?> exerciseImageMediaIdsSnapshotJson = const Value.absent(),
Value<String?> exerciseStepsSnapshotJson = const Value.absent(), Value<String?> exerciseStepsSnapshotJson = const Value.absent(),
bool? autoStartNextTimedStepSnapshot,
Value<bool?> autoStartNextTimedStepOverride = const Value.absent(),
Value<String?> exerciseVideoMediaIdSnapshot = const Value.absent(), Value<String?> exerciseVideoMediaIdSnapshot = const Value.absent(),
bool? exerciseArchivedSnapshot, bool? exerciseArchivedSnapshot,
bool? availableTimeSnapshot, bool? availableTimeSnapshot,
@ -18335,6 +18484,11 @@ class ProgramExercise extends DataClass implements Insertable<ProgramExercise> {
exerciseStepsSnapshotJson: exerciseStepsSnapshotJson.present exerciseStepsSnapshotJson: exerciseStepsSnapshotJson.present
? exerciseStepsSnapshotJson.value ? exerciseStepsSnapshotJson.value
: this.exerciseStepsSnapshotJson, : this.exerciseStepsSnapshotJson,
autoStartNextTimedStepSnapshot:
autoStartNextTimedStepSnapshot ?? this.autoStartNextTimedStepSnapshot,
autoStartNextTimedStepOverride: autoStartNextTimedStepOverride.present
? autoStartNextTimedStepOverride.value
: this.autoStartNextTimedStepOverride,
exerciseVideoMediaIdSnapshot: exerciseVideoMediaIdSnapshot.present exerciseVideoMediaIdSnapshot: exerciseVideoMediaIdSnapshot.present
? exerciseVideoMediaIdSnapshot.value ? exerciseVideoMediaIdSnapshot.value
: this.exerciseVideoMediaIdSnapshot, : this.exerciseVideoMediaIdSnapshot,
@ -18414,6 +18568,14 @@ class ProgramExercise extends DataClass implements Insertable<ProgramExercise> {
exerciseStepsSnapshotJson: data.exerciseStepsSnapshotJson.present exerciseStepsSnapshotJson: data.exerciseStepsSnapshotJson.present
? data.exerciseStepsSnapshotJson.value ? data.exerciseStepsSnapshotJson.value
: this.exerciseStepsSnapshotJson, : this.exerciseStepsSnapshotJson,
autoStartNextTimedStepSnapshot:
data.autoStartNextTimedStepSnapshot.present
? data.autoStartNextTimedStepSnapshot.value
: this.autoStartNextTimedStepSnapshot,
autoStartNextTimedStepOverride:
data.autoStartNextTimedStepOverride.present
? data.autoStartNextTimedStepOverride.value
: this.autoStartNextTimedStepOverride,
exerciseVideoMediaIdSnapshot: data.exerciseVideoMediaIdSnapshot.present exerciseVideoMediaIdSnapshot: data.exerciseVideoMediaIdSnapshot.present
? data.exerciseVideoMediaIdSnapshot.value ? data.exerciseVideoMediaIdSnapshot.value
: this.exerciseVideoMediaIdSnapshot, : this.exerciseVideoMediaIdSnapshot,
@ -18492,6 +18654,12 @@ class ProgramExercise extends DataClass implements Insertable<ProgramExercise> {
'exerciseImageMediaIdsSnapshotJson: $exerciseImageMediaIdsSnapshotJson, ', 'exerciseImageMediaIdsSnapshotJson: $exerciseImageMediaIdsSnapshotJson, ',
) )
..write('exerciseStepsSnapshotJson: $exerciseStepsSnapshotJson, ') ..write('exerciseStepsSnapshotJson: $exerciseStepsSnapshotJson, ')
..write(
'autoStartNextTimedStepSnapshot: $autoStartNextTimedStepSnapshot, ',
)
..write(
'autoStartNextTimedStepOverride: $autoStartNextTimedStepOverride, ',
)
..write( ..write(
'exerciseVideoMediaIdSnapshot: $exerciseVideoMediaIdSnapshot, ', 'exerciseVideoMediaIdSnapshot: $exerciseVideoMediaIdSnapshot, ',
) )
@ -18536,6 +18704,8 @@ class ProgramExercise extends DataClass implements Insertable<ProgramExercise> {
exerciseImageMediaIdSnapshot, exerciseImageMediaIdSnapshot,
exerciseImageMediaIdsSnapshotJson, exerciseImageMediaIdsSnapshotJson,
exerciseStepsSnapshotJson, exerciseStepsSnapshotJson,
autoStartNextTimedStepSnapshot,
autoStartNextTimedStepOverride,
exerciseVideoMediaIdSnapshot, exerciseVideoMediaIdSnapshot,
exerciseArchivedSnapshot, exerciseArchivedSnapshot,
availableTimeSnapshot, availableTimeSnapshot,
@ -18580,6 +18750,10 @@ class ProgramExercise extends DataClass implements Insertable<ProgramExercise> {
other.exerciseImageMediaIdsSnapshotJson == other.exerciseImageMediaIdsSnapshotJson ==
this.exerciseImageMediaIdsSnapshotJson && this.exerciseImageMediaIdsSnapshotJson &&
other.exerciseStepsSnapshotJson == this.exerciseStepsSnapshotJson && other.exerciseStepsSnapshotJson == this.exerciseStepsSnapshotJson &&
other.autoStartNextTimedStepSnapshot ==
this.autoStartNextTimedStepSnapshot &&
other.autoStartNextTimedStepOverride ==
this.autoStartNextTimedStepOverride &&
other.exerciseVideoMediaIdSnapshot == other.exerciseVideoMediaIdSnapshot ==
this.exerciseVideoMediaIdSnapshot && this.exerciseVideoMediaIdSnapshot &&
other.exerciseArchivedSnapshot == this.exerciseArchivedSnapshot && other.exerciseArchivedSnapshot == this.exerciseArchivedSnapshot &&
@ -18620,6 +18794,8 @@ class ProgramExercisesCompanion extends UpdateCompanion<ProgramExercise> {
final Value<String?> exerciseImageMediaIdSnapshot; final Value<String?> exerciseImageMediaIdSnapshot;
final Value<String?> exerciseImageMediaIdsSnapshotJson; final Value<String?> exerciseImageMediaIdsSnapshotJson;
final Value<String?> exerciseStepsSnapshotJson; final Value<String?> exerciseStepsSnapshotJson;
final Value<bool> autoStartNextTimedStepSnapshot;
final Value<bool?> autoStartNextTimedStepOverride;
final Value<String?> exerciseVideoMediaIdSnapshot; final Value<String?> exerciseVideoMediaIdSnapshot;
final Value<bool> exerciseArchivedSnapshot; final Value<bool> exerciseArchivedSnapshot;
final Value<bool> availableTimeSnapshot; final Value<bool> availableTimeSnapshot;
@ -18658,6 +18834,8 @@ class ProgramExercisesCompanion extends UpdateCompanion<ProgramExercise> {
this.exerciseImageMediaIdSnapshot = const Value.absent(), this.exerciseImageMediaIdSnapshot = const Value.absent(),
this.exerciseImageMediaIdsSnapshotJson = const Value.absent(), this.exerciseImageMediaIdsSnapshotJson = const Value.absent(),
this.exerciseStepsSnapshotJson = const Value.absent(), this.exerciseStepsSnapshotJson = const Value.absent(),
this.autoStartNextTimedStepSnapshot = const Value.absent(),
this.autoStartNextTimedStepOverride = const Value.absent(),
this.exerciseVideoMediaIdSnapshot = const Value.absent(), this.exerciseVideoMediaIdSnapshot = const Value.absent(),
this.exerciseArchivedSnapshot = const Value.absent(), this.exerciseArchivedSnapshot = const Value.absent(),
this.availableTimeSnapshot = const Value.absent(), this.availableTimeSnapshot = const Value.absent(),
@ -18697,6 +18875,8 @@ class ProgramExercisesCompanion extends UpdateCompanion<ProgramExercise> {
this.exerciseImageMediaIdSnapshot = const Value.absent(), this.exerciseImageMediaIdSnapshot = const Value.absent(),
this.exerciseImageMediaIdsSnapshotJson = const Value.absent(), this.exerciseImageMediaIdsSnapshotJson = const Value.absent(),
this.exerciseStepsSnapshotJson = const Value.absent(), this.exerciseStepsSnapshotJson = const Value.absent(),
this.autoStartNextTimedStepSnapshot = const Value.absent(),
this.autoStartNextTimedStepOverride = const Value.absent(),
this.exerciseVideoMediaIdSnapshot = const Value.absent(), this.exerciseVideoMediaIdSnapshot = const Value.absent(),
this.exerciseArchivedSnapshot = const Value.absent(), this.exerciseArchivedSnapshot = const Value.absent(),
required bool availableTimeSnapshot, required bool availableTimeSnapshot,
@ -18751,6 +18931,8 @@ class ProgramExercisesCompanion extends UpdateCompanion<ProgramExercise> {
Expression<String>? exerciseImageMediaIdSnapshot, Expression<String>? exerciseImageMediaIdSnapshot,
Expression<String>? exerciseImageMediaIdsSnapshotJson, Expression<String>? exerciseImageMediaIdsSnapshotJson,
Expression<String>? exerciseStepsSnapshotJson, Expression<String>? exerciseStepsSnapshotJson,
Expression<bool>? autoStartNextTimedStepSnapshot,
Expression<bool>? autoStartNextTimedStepOverride,
Expression<String>? exerciseVideoMediaIdSnapshot, Expression<String>? exerciseVideoMediaIdSnapshot,
Expression<bool>? exerciseArchivedSnapshot, Expression<bool>? exerciseArchivedSnapshot,
Expression<bool>? availableTimeSnapshot, Expression<bool>? availableTimeSnapshot,
@ -18797,6 +18979,10 @@ class ProgramExercisesCompanion extends UpdateCompanion<ProgramExercise> {
exerciseImageMediaIdsSnapshotJson, exerciseImageMediaIdsSnapshotJson,
if (exerciseStepsSnapshotJson != null) if (exerciseStepsSnapshotJson != null)
'exercise_steps_snapshot_json': exerciseStepsSnapshotJson, 'exercise_steps_snapshot_json': exerciseStepsSnapshotJson,
if (autoStartNextTimedStepSnapshot != null)
'auto_start_next_timed_step_snapshot': autoStartNextTimedStepSnapshot,
if (autoStartNextTimedStepOverride != null)
'auto_start_next_timed_step_override': autoStartNextTimedStepOverride,
if (exerciseVideoMediaIdSnapshot != null) if (exerciseVideoMediaIdSnapshot != null)
'exercise_video_media_id_snapshot': exerciseVideoMediaIdSnapshot, 'exercise_video_media_id_snapshot': exerciseVideoMediaIdSnapshot,
if (exerciseArchivedSnapshot != null) if (exerciseArchivedSnapshot != null)
@ -18846,6 +19032,8 @@ class ProgramExercisesCompanion extends UpdateCompanion<ProgramExercise> {
Value<String?>? exerciseImageMediaIdSnapshot, Value<String?>? exerciseImageMediaIdSnapshot,
Value<String?>? exerciseImageMediaIdsSnapshotJson, Value<String?>? exerciseImageMediaIdsSnapshotJson,
Value<String?>? exerciseStepsSnapshotJson, Value<String?>? exerciseStepsSnapshotJson,
Value<bool>? autoStartNextTimedStepSnapshot,
Value<bool?>? autoStartNextTimedStepOverride,
Value<String?>? exerciseVideoMediaIdSnapshot, Value<String?>? exerciseVideoMediaIdSnapshot,
Value<bool>? exerciseArchivedSnapshot, Value<bool>? exerciseArchivedSnapshot,
Value<bool>? availableTimeSnapshot, Value<bool>? availableTimeSnapshot,
@ -18890,6 +19078,10 @@ class ProgramExercisesCompanion extends UpdateCompanion<ProgramExercise> {
this.exerciseImageMediaIdsSnapshotJson, this.exerciseImageMediaIdsSnapshotJson,
exerciseStepsSnapshotJson: exerciseStepsSnapshotJson:
exerciseStepsSnapshotJson ?? this.exerciseStepsSnapshotJson, exerciseStepsSnapshotJson ?? this.exerciseStepsSnapshotJson,
autoStartNextTimedStepSnapshot:
autoStartNextTimedStepSnapshot ?? this.autoStartNextTimedStepSnapshot,
autoStartNextTimedStepOverride:
autoStartNextTimedStepOverride ?? this.autoStartNextTimedStepOverride,
exerciseVideoMediaIdSnapshot: exerciseVideoMediaIdSnapshot:
exerciseVideoMediaIdSnapshot ?? this.exerciseVideoMediaIdSnapshot, exerciseVideoMediaIdSnapshot ?? this.exerciseVideoMediaIdSnapshot,
exerciseArchivedSnapshot: exerciseArchivedSnapshot:
@ -18989,6 +19181,16 @@ class ProgramExercisesCompanion extends UpdateCompanion<ProgramExercise> {
exerciseStepsSnapshotJson.value, exerciseStepsSnapshotJson.value,
); );
} }
if (autoStartNextTimedStepSnapshot.present) {
map['auto_start_next_timed_step_snapshot'] = Variable<bool>(
autoStartNextTimedStepSnapshot.value,
);
}
if (autoStartNextTimedStepOverride.present) {
map['auto_start_next_timed_step_override'] = Variable<bool>(
autoStartNextTimedStepOverride.value,
);
}
if (exerciseVideoMediaIdSnapshot.present) { if (exerciseVideoMediaIdSnapshot.present) {
map['exercise_video_media_id_snapshot'] = Variable<String>( map['exercise_video_media_id_snapshot'] = Variable<String>(
exerciseVideoMediaIdSnapshot.value, exerciseVideoMediaIdSnapshot.value,
@ -19084,6 +19286,12 @@ class ProgramExercisesCompanion extends UpdateCompanion<ProgramExercise> {
'exerciseImageMediaIdsSnapshotJson: $exerciseImageMediaIdsSnapshotJson, ', 'exerciseImageMediaIdsSnapshotJson: $exerciseImageMediaIdsSnapshotJson, ',
) )
..write('exerciseStepsSnapshotJson: $exerciseStepsSnapshotJson, ') ..write('exerciseStepsSnapshotJson: $exerciseStepsSnapshotJson, ')
..write(
'autoStartNextTimedStepSnapshot: $autoStartNextTimedStepSnapshot, ',
)
..write(
'autoStartNextTimedStepOverride: $autoStartNextTimedStepOverride, ',
)
..write( ..write(
'exerciseVideoMediaIdSnapshot: $exerciseVideoMediaIdSnapshot, ', 'exerciseVideoMediaIdSnapshot: $exerciseVideoMediaIdSnapshot, ',
) )
@ -27197,6 +27405,20 @@ class $WorkoutTemplateExerciseOverridesTable
type: DriftSqlType.int, type: DriftSqlType.int,
requiredDuringInsert: false, requiredDuringInsert: false,
); );
static const VerificationMeta _autoStartNextTimedStepOverrideMeta =
const VerificationMeta('autoStartNextTimedStepOverride');
@override
late final GeneratedColumn<bool> autoStartNextTimedStepOverride =
GeneratedColumn<bool>(
'auto_start_next_timed_step_override',
aliasedName,
true,
type: DriftSqlType.bool,
requiredDuringInsert: false,
defaultConstraints: GeneratedColumn.constraintIsAlways(
'CHECK ("auto_start_next_timed_step_override" IN (0, 1))',
),
);
@override @override
List<GeneratedColumn> get $columns => [ List<GeneratedColumn> get $columns => [
id, id,
@ -27217,6 +27439,7 @@ class $WorkoutTemplateExerciseOverridesTable
targetRepsOverride, targetRepsOverride,
targetScoreOverride, targetScoreOverride,
targetScoreTimeMsOverride, targetScoreTimeMsOverride,
autoStartNextTimedStepOverride,
]; ];
@override @override
String get aliasedName => _alias ?? actualTableName; String get aliasedName => _alias ?? actualTableName;
@ -27390,6 +27613,15 @@ class $WorkoutTemplateExerciseOverridesTable
), ),
); );
} }
if (data.containsKey('auto_start_next_timed_step_override')) {
context.handle(
_autoStartNextTimedStepOverrideMeta,
autoStartNextTimedStepOverride.isAcceptableOrUnknown(
data['auto_start_next_timed_step_override']!,
_autoStartNextTimedStepOverrideMeta,
),
);
}
return context; return context;
} }
@ -27474,6 +27706,10 @@ class $WorkoutTemplateExerciseOverridesTable
DriftSqlType.int, DriftSqlType.int,
data['${effectivePrefix}target_score_time_ms_override'], data['${effectivePrefix}target_score_time_ms_override'],
), ),
autoStartNextTimedStepOverride: attachedDatabase.typeMapping.read(
DriftSqlType.bool,
data['${effectivePrefix}auto_start_next_timed_step_override'],
),
); );
} }
@ -27503,6 +27739,7 @@ class WorkoutTemplateExerciseOverride extends DataClass
final int? targetRepsOverride; final int? targetRepsOverride;
final double? targetScoreOverride; final double? targetScoreOverride;
final int? targetScoreTimeMsOverride; final int? targetScoreTimeMsOverride;
final bool? autoStartNextTimedStepOverride;
const WorkoutTemplateExerciseOverride({ const WorkoutTemplateExerciseOverride({
required this.id, required this.id,
required this.createdAt, required this.createdAt,
@ -27522,6 +27759,7 @@ class WorkoutTemplateExerciseOverride extends DataClass
this.targetRepsOverride, this.targetRepsOverride,
this.targetScoreOverride, this.targetScoreOverride,
this.targetScoreTimeMsOverride, this.targetScoreTimeMsOverride,
this.autoStartNextTimedStepOverride,
}); });
@override @override
Map<String, Expression> toColumns(bool nullToAbsent) { Map<String, Expression> toColumns(bool nullToAbsent) {
@ -27570,6 +27808,11 @@ class WorkoutTemplateExerciseOverride extends DataClass
targetScoreTimeMsOverride, targetScoreTimeMsOverride,
); );
} }
if (!nullToAbsent || autoStartNextTimedStepOverride != null) {
map['auto_start_next_timed_step_override'] = Variable<bool>(
autoStartNextTimedStepOverride,
);
}
return map; return map;
} }
@ -27613,6 +27856,10 @@ class WorkoutTemplateExerciseOverride extends DataClass
targetScoreTimeMsOverride == null && nullToAbsent targetScoreTimeMsOverride == null && nullToAbsent
? const Value.absent() ? const Value.absent()
: Value(targetScoreTimeMsOverride), : Value(targetScoreTimeMsOverride),
autoStartNextTimedStepOverride:
autoStartNextTimedStepOverride == null && nullToAbsent
? const Value.absent()
: Value(autoStartNextTimedStepOverride),
); );
} }
@ -27652,6 +27899,9 @@ class WorkoutTemplateExerciseOverride extends DataClass
targetScoreTimeMsOverride: serializer.fromJson<int?>( targetScoreTimeMsOverride: serializer.fromJson<int?>(
json['targetScoreTimeMsOverride'], json['targetScoreTimeMsOverride'],
), ),
autoStartNextTimedStepOverride: serializer.fromJson<bool?>(
json['autoStartNextTimedStepOverride'],
),
); );
} }
@override @override
@ -27684,6 +27934,9 @@ class WorkoutTemplateExerciseOverride extends DataClass
'targetScoreTimeMsOverride': serializer.toJson<int?>( 'targetScoreTimeMsOverride': serializer.toJson<int?>(
targetScoreTimeMsOverride, targetScoreTimeMsOverride,
), ),
'autoStartNextTimedStepOverride': serializer.toJson<bool?>(
autoStartNextTimedStepOverride,
),
}; };
} }
@ -27706,6 +27959,7 @@ class WorkoutTemplateExerciseOverride extends DataClass
Value<int?> targetRepsOverride = const Value.absent(), Value<int?> targetRepsOverride = const Value.absent(),
Value<double?> targetScoreOverride = const Value.absent(), Value<double?> targetScoreOverride = const Value.absent(),
Value<int?> targetScoreTimeMsOverride = const Value.absent(), Value<int?> targetScoreTimeMsOverride = const Value.absent(),
Value<bool?> autoStartNextTimedStepOverride = const Value.absent(),
}) => WorkoutTemplateExerciseOverride( }) => WorkoutTemplateExerciseOverride(
id: id ?? this.id, id: id ?? this.id,
createdAt: createdAt ?? this.createdAt, createdAt: createdAt ?? this.createdAt,
@ -27741,6 +27995,9 @@ class WorkoutTemplateExerciseOverride extends DataClass
targetScoreTimeMsOverride: targetScoreTimeMsOverride.present targetScoreTimeMsOverride: targetScoreTimeMsOverride.present
? targetScoreTimeMsOverride.value ? targetScoreTimeMsOverride.value
: this.targetScoreTimeMsOverride, : this.targetScoreTimeMsOverride,
autoStartNextTimedStepOverride: autoStartNextTimedStepOverride.present
? autoStartNextTimedStepOverride.value
: this.autoStartNextTimedStepOverride,
); );
WorkoutTemplateExerciseOverride copyWithCompanion( WorkoutTemplateExerciseOverride copyWithCompanion(
WorkoutTemplateExerciseOverridesCompanion data, WorkoutTemplateExerciseOverridesCompanion data,
@ -27790,6 +28047,10 @@ class WorkoutTemplateExerciseOverride extends DataClass
targetScoreTimeMsOverride: data.targetScoreTimeMsOverride.present targetScoreTimeMsOverride: data.targetScoreTimeMsOverride.present
? data.targetScoreTimeMsOverride.value ? data.targetScoreTimeMsOverride.value
: this.targetScoreTimeMsOverride, : this.targetScoreTimeMsOverride,
autoStartNextTimedStepOverride:
data.autoStartNextTimedStepOverride.present
? data.autoStartNextTimedStepOverride.value
: this.autoStartNextTimedStepOverride,
); );
} }
@ -27813,7 +28074,10 @@ class WorkoutTemplateExerciseOverride extends DataClass
..write('targetTimeSecondsOverride: $targetTimeSecondsOverride, ') ..write('targetTimeSecondsOverride: $targetTimeSecondsOverride, ')
..write('targetRepsOverride: $targetRepsOverride, ') ..write('targetRepsOverride: $targetRepsOverride, ')
..write('targetScoreOverride: $targetScoreOverride, ') ..write('targetScoreOverride: $targetScoreOverride, ')
..write('targetScoreTimeMsOverride: $targetScoreTimeMsOverride') ..write('targetScoreTimeMsOverride: $targetScoreTimeMsOverride, ')
..write(
'autoStartNextTimedStepOverride: $autoStartNextTimedStepOverride',
)
..write(')')) ..write(')'))
.toString(); .toString();
} }
@ -27838,6 +28102,7 @@ class WorkoutTemplateExerciseOverride extends DataClass
targetRepsOverride, targetRepsOverride,
targetScoreOverride, targetScoreOverride,
targetScoreTimeMsOverride, targetScoreTimeMsOverride,
autoStartNextTimedStepOverride,
); );
@override @override
bool operator ==(Object other) => bool operator ==(Object other) =>
@ -27860,7 +28125,9 @@ class WorkoutTemplateExerciseOverride extends DataClass
other.targetTimeSecondsOverride == this.targetTimeSecondsOverride && other.targetTimeSecondsOverride == this.targetTimeSecondsOverride &&
other.targetRepsOverride == this.targetRepsOverride && other.targetRepsOverride == this.targetRepsOverride &&
other.targetScoreOverride == this.targetScoreOverride && other.targetScoreOverride == this.targetScoreOverride &&
other.targetScoreTimeMsOverride == this.targetScoreTimeMsOverride); other.targetScoreTimeMsOverride == this.targetScoreTimeMsOverride &&
other.autoStartNextTimedStepOverride ==
this.autoStartNextTimedStepOverride);
} }
class WorkoutTemplateExerciseOverridesCompanion class WorkoutTemplateExerciseOverridesCompanion
@ -27883,6 +28150,7 @@ class WorkoutTemplateExerciseOverridesCompanion
final Value<int?> targetRepsOverride; final Value<int?> targetRepsOverride;
final Value<double?> targetScoreOverride; final Value<double?> targetScoreOverride;
final Value<int?> targetScoreTimeMsOverride; final Value<int?> targetScoreTimeMsOverride;
final Value<bool?> autoStartNextTimedStepOverride;
final Value<int> rowid; final Value<int> rowid;
const WorkoutTemplateExerciseOverridesCompanion({ const WorkoutTemplateExerciseOverridesCompanion({
this.id = const Value.absent(), this.id = const Value.absent(),
@ -27903,6 +28171,7 @@ class WorkoutTemplateExerciseOverridesCompanion
this.targetRepsOverride = const Value.absent(), this.targetRepsOverride = const Value.absent(),
this.targetScoreOverride = const Value.absent(), this.targetScoreOverride = const Value.absent(),
this.targetScoreTimeMsOverride = const Value.absent(), this.targetScoreTimeMsOverride = const Value.absent(),
this.autoStartNextTimedStepOverride = const Value.absent(),
this.rowid = const Value.absent(), this.rowid = const Value.absent(),
}); });
WorkoutTemplateExerciseOverridesCompanion.insert({ WorkoutTemplateExerciseOverridesCompanion.insert({
@ -27924,6 +28193,7 @@ class WorkoutTemplateExerciseOverridesCompanion
this.targetRepsOverride = const Value.absent(), this.targetRepsOverride = const Value.absent(),
this.targetScoreOverride = const Value.absent(), this.targetScoreOverride = const Value.absent(),
this.targetScoreTimeMsOverride = const Value.absent(), this.targetScoreTimeMsOverride = const Value.absent(),
this.autoStartNextTimedStepOverride = const Value.absent(),
this.rowid = const Value.absent(), this.rowid = const Value.absent(),
}) : id = Value(id), }) : id = Value(id),
createdAt = Value(createdAt), createdAt = Value(createdAt),
@ -27952,6 +28222,7 @@ class WorkoutTemplateExerciseOverridesCompanion
Expression<int>? targetRepsOverride, Expression<int>? targetRepsOverride,
Expression<double>? targetScoreOverride, Expression<double>? targetScoreOverride,
Expression<int>? targetScoreTimeMsOverride, Expression<int>? targetScoreTimeMsOverride,
Expression<bool>? autoStartNextTimedStepOverride,
Expression<int>? rowid, Expression<int>? rowid,
}) { }) {
return RawValuesInsertable({ return RawValuesInsertable({
@ -27980,6 +28251,8 @@ class WorkoutTemplateExerciseOverridesCompanion
'target_score_override': targetScoreOverride, 'target_score_override': targetScoreOverride,
if (targetScoreTimeMsOverride != null) if (targetScoreTimeMsOverride != null)
'target_score_time_ms_override': targetScoreTimeMsOverride, 'target_score_time_ms_override': targetScoreTimeMsOverride,
if (autoStartNextTimedStepOverride != null)
'auto_start_next_timed_step_override': autoStartNextTimedStepOverride,
if (rowid != null) 'rowid': rowid, if (rowid != null) 'rowid': rowid,
}); });
} }
@ -28003,6 +28276,7 @@ class WorkoutTemplateExerciseOverridesCompanion
Value<int?>? targetRepsOverride, Value<int?>? targetRepsOverride,
Value<double?>? targetScoreOverride, Value<double?>? targetScoreOverride,
Value<int?>? targetScoreTimeMsOverride, Value<int?>? targetScoreTimeMsOverride,
Value<bool?>? autoStartNextTimedStepOverride,
Value<int>? rowid, Value<int>? rowid,
}) { }) {
return WorkoutTemplateExerciseOverridesCompanion( return WorkoutTemplateExerciseOverridesCompanion(
@ -28028,6 +28302,8 @@ class WorkoutTemplateExerciseOverridesCompanion
targetScoreOverride: targetScoreOverride ?? this.targetScoreOverride, targetScoreOverride: targetScoreOverride ?? this.targetScoreOverride,
targetScoreTimeMsOverride: targetScoreTimeMsOverride:
targetScoreTimeMsOverride ?? this.targetScoreTimeMsOverride, targetScoreTimeMsOverride ?? this.targetScoreTimeMsOverride,
autoStartNextTimedStepOverride:
autoStartNextTimedStepOverride ?? this.autoStartNextTimedStepOverride,
rowid: rowid ?? this.rowid, rowid: rowid ?? this.rowid,
); );
} }
@ -28101,6 +28377,11 @@ class WorkoutTemplateExerciseOverridesCompanion
targetScoreTimeMsOverride.value, targetScoreTimeMsOverride.value,
); );
} }
if (autoStartNextTimedStepOverride.present) {
map['auto_start_next_timed_step_override'] = Variable<bool>(
autoStartNextTimedStepOverride.value,
);
}
if (rowid.present) { if (rowid.present) {
map['rowid'] = Variable<int>(rowid.value); map['rowid'] = Variable<int>(rowid.value);
} }
@ -28128,6 +28409,9 @@ class WorkoutTemplateExerciseOverridesCompanion
..write('targetRepsOverride: $targetRepsOverride, ') ..write('targetRepsOverride: $targetRepsOverride, ')
..write('targetScoreOverride: $targetScoreOverride, ') ..write('targetScoreOverride: $targetScoreOverride, ')
..write('targetScoreTimeMsOverride: $targetScoreTimeMsOverride, ') ..write('targetScoreTimeMsOverride: $targetScoreTimeMsOverride, ')
..write(
'autoStartNextTimedStepOverride: $autoStartNextTimedStepOverride, ',
)
..write('rowid: $rowid') ..write('rowid: $rowid')
..write(')')) ..write(')'))
.toString(); .toString();
@ -35424,6 +35708,7 @@ typedef $$ExercisesTableCreateCompanionBuilder =
Value<int?> defaultTargetReps, Value<int?> defaultTargetReps,
Value<double?> defaultTargetScore, Value<double?> defaultTargetScore,
Value<int?> defaultTargetScoreTimeMs, Value<int?> defaultTargetScoreTimeMs,
Value<bool> autoStartNextTimedStep,
Value<DateTime?> archivedAt, Value<DateTime?> archivedAt,
Value<int> rowid, Value<int> rowid,
}); });
@ -35454,6 +35739,7 @@ typedef $$ExercisesTableUpdateCompanionBuilder =
Value<int?> defaultTargetReps, Value<int?> defaultTargetReps,
Value<double?> defaultTargetScore, Value<double?> defaultTargetScore,
Value<int?> defaultTargetScoreTimeMs, Value<int?> defaultTargetScoreTimeMs,
Value<bool> autoStartNextTimedStep,
Value<DateTime?> archivedAt, Value<DateTime?> archivedAt,
Value<int> rowid, Value<int> rowid,
}); });
@ -35677,6 +35963,11 @@ class $$ExercisesTableFilterComposer
builder: (column) => ColumnFilters(column), builder: (column) => ColumnFilters(column),
); );
ColumnFilters<bool> get autoStartNextTimedStep => $composableBuilder(
column: $table.autoStartNextTimedStep,
builder: (column) => ColumnFilters(column),
);
ColumnFilters<DateTime> get archivedAt => $composableBuilder( ColumnFilters<DateTime> get archivedAt => $composableBuilder(
column: $table.archivedAt, column: $table.archivedAt,
builder: (column) => ColumnFilters(column), builder: (column) => ColumnFilters(column),
@ -35928,6 +36219,11 @@ class $$ExercisesTableOrderingComposer
builder: (column) => ColumnOrderings(column), builder: (column) => ColumnOrderings(column),
); );
ColumnOrderings<bool> get autoStartNextTimedStep => $composableBuilder(
column: $table.autoStartNextTimedStep,
builder: (column) => ColumnOrderings(column),
);
ColumnOrderings<DateTime> get archivedAt => $composableBuilder( ColumnOrderings<DateTime> get archivedAt => $composableBuilder(
column: $table.archivedAt, column: $table.archivedAt,
builder: (column) => ColumnOrderings(column), builder: (column) => ColumnOrderings(column),
@ -36090,6 +36386,11 @@ class $$ExercisesTableAnnotationComposer
builder: (column) => column, builder: (column) => column,
); );
GeneratedColumn<bool> get autoStartNextTimedStep => $composableBuilder(
column: $table.autoStartNextTimedStep,
builder: (column) => column,
);
GeneratedColumn<DateTime> get archivedAt => $composableBuilder( GeneratedColumn<DateTime> get archivedAt => $composableBuilder(
column: $table.archivedAt, column: $table.archivedAt,
builder: (column) => column, builder: (column) => column,
@ -36276,6 +36577,7 @@ class $$ExercisesTableTableManager
Value<int?> defaultTargetReps = const Value.absent(), Value<int?> defaultTargetReps = const Value.absent(),
Value<double?> defaultTargetScore = const Value.absent(), Value<double?> defaultTargetScore = const Value.absent(),
Value<int?> defaultTargetScoreTimeMs = const Value.absent(), Value<int?> defaultTargetScoreTimeMs = const Value.absent(),
Value<bool> autoStartNextTimedStep = const Value.absent(),
Value<DateTime?> archivedAt = const Value.absent(), Value<DateTime?> archivedAt = const Value.absent(),
Value<int> rowid = const Value.absent(), Value<int> rowid = const Value.absent(),
}) => ExercisesCompanion( }) => ExercisesCompanion(
@ -36304,6 +36606,7 @@ class $$ExercisesTableTableManager
defaultTargetReps: defaultTargetReps, defaultTargetReps: defaultTargetReps,
defaultTargetScore: defaultTargetScore, defaultTargetScore: defaultTargetScore,
defaultTargetScoreTimeMs: defaultTargetScoreTimeMs, defaultTargetScoreTimeMs: defaultTargetScoreTimeMs,
autoStartNextTimedStep: autoStartNextTimedStep,
archivedAt: archivedAt, archivedAt: archivedAt,
rowid: rowid, rowid: rowid,
), ),
@ -36334,6 +36637,7 @@ class $$ExercisesTableTableManager
Value<int?> defaultTargetReps = const Value.absent(), Value<int?> defaultTargetReps = const Value.absent(),
Value<double?> defaultTargetScore = const Value.absent(), Value<double?> defaultTargetScore = const Value.absent(),
Value<int?> defaultTargetScoreTimeMs = const Value.absent(), Value<int?> defaultTargetScoreTimeMs = const Value.absent(),
Value<bool> autoStartNextTimedStep = const Value.absent(),
Value<DateTime?> archivedAt = const Value.absent(), Value<DateTime?> archivedAt = const Value.absent(),
Value<int> rowid = const Value.absent(), Value<int> rowid = const Value.absent(),
}) => ExercisesCompanion.insert( }) => ExercisesCompanion.insert(
@ -36362,6 +36666,7 @@ class $$ExercisesTableTableManager
defaultTargetReps: defaultTargetReps, defaultTargetReps: defaultTargetReps,
defaultTargetScore: defaultTargetScore, defaultTargetScore: defaultTargetScore,
defaultTargetScoreTimeMs: defaultTargetScoreTimeMs, defaultTargetScoreTimeMs: defaultTargetScoreTimeMs,
autoStartNextTimedStep: autoStartNextTimedStep,
archivedAt: archivedAt, archivedAt: archivedAt,
rowid: rowid, rowid: rowid,
), ),
@ -39001,6 +39306,8 @@ typedef $$ProgramExercisesTableCreateCompanionBuilder =
Value<String?> exerciseImageMediaIdSnapshot, Value<String?> exerciseImageMediaIdSnapshot,
Value<String?> exerciseImageMediaIdsSnapshotJson, Value<String?> exerciseImageMediaIdsSnapshotJson,
Value<String?> exerciseStepsSnapshotJson, Value<String?> exerciseStepsSnapshotJson,
Value<bool> autoStartNextTimedStepSnapshot,
Value<bool?> autoStartNextTimedStepOverride,
Value<String?> exerciseVideoMediaIdSnapshot, Value<String?> exerciseVideoMediaIdSnapshot,
Value<bool> exerciseArchivedSnapshot, Value<bool> exerciseArchivedSnapshot,
required bool availableTimeSnapshot, required bool availableTimeSnapshot,
@ -39041,6 +39348,8 @@ typedef $$ProgramExercisesTableUpdateCompanionBuilder =
Value<String?> exerciseImageMediaIdSnapshot, Value<String?> exerciseImageMediaIdSnapshot,
Value<String?> exerciseImageMediaIdsSnapshotJson, Value<String?> exerciseImageMediaIdsSnapshotJson,
Value<String?> exerciseStepsSnapshotJson, Value<String?> exerciseStepsSnapshotJson,
Value<bool> autoStartNextTimedStepSnapshot,
Value<bool?> autoStartNextTimedStepOverride,
Value<String?> exerciseVideoMediaIdSnapshot, Value<String?> exerciseVideoMediaIdSnapshot,
Value<bool> exerciseArchivedSnapshot, Value<bool> exerciseArchivedSnapshot,
Value<bool> availableTimeSnapshot, Value<bool> availableTimeSnapshot,
@ -39240,6 +39549,16 @@ class $$ProgramExercisesTableFilterComposer
builder: (column) => ColumnFilters(column), builder: (column) => ColumnFilters(column),
); );
ColumnFilters<bool> get autoStartNextTimedStepSnapshot => $composableBuilder(
column: $table.autoStartNextTimedStepSnapshot,
builder: (column) => ColumnFilters(column),
);
ColumnFilters<bool> get autoStartNextTimedStepOverride => $composableBuilder(
column: $table.autoStartNextTimedStepOverride,
builder: (column) => ColumnFilters(column),
);
ColumnFilters<bool> get exerciseArchivedSnapshot => $composableBuilder( ColumnFilters<bool> get exerciseArchivedSnapshot => $composableBuilder(
column: $table.exerciseArchivedSnapshot, column: $table.exerciseArchivedSnapshot,
builder: (column) => ColumnFilters(column), builder: (column) => ColumnFilters(column),
@ -39503,6 +39822,18 @@ class $$ProgramExercisesTableOrderingComposer
builder: (column) => ColumnOrderings(column), builder: (column) => ColumnOrderings(column),
); );
ColumnOrderings<bool> get autoStartNextTimedStepSnapshot =>
$composableBuilder(
column: $table.autoStartNextTimedStepSnapshot,
builder: (column) => ColumnOrderings(column),
);
ColumnOrderings<bool> get autoStartNextTimedStepOverride =>
$composableBuilder(
column: $table.autoStartNextTimedStepOverride,
builder: (column) => ColumnOrderings(column),
);
ColumnOrderings<bool> get exerciseArchivedSnapshot => $composableBuilder( ColumnOrderings<bool> get exerciseArchivedSnapshot => $composableBuilder(
column: $table.exerciseArchivedSnapshot, column: $table.exerciseArchivedSnapshot,
builder: (column) => ColumnOrderings(column), builder: (column) => ColumnOrderings(column),
@ -39754,6 +40085,18 @@ class $$ProgramExercisesTableAnnotationComposer
builder: (column) => column, builder: (column) => column,
); );
GeneratedColumn<bool> get autoStartNextTimedStepSnapshot =>
$composableBuilder(
column: $table.autoStartNextTimedStepSnapshot,
builder: (column) => column,
);
GeneratedColumn<bool> get autoStartNextTimedStepOverride =>
$composableBuilder(
column: $table.autoStartNextTimedStepOverride,
builder: (column) => column,
);
GeneratedColumn<bool> get exerciseArchivedSnapshot => $composableBuilder( GeneratedColumn<bool> get exerciseArchivedSnapshot => $composableBuilder(
column: $table.exerciseArchivedSnapshot, column: $table.exerciseArchivedSnapshot,
builder: (column) => column, builder: (column) => column,
@ -39982,6 +40325,10 @@ class $$ProgramExercisesTableTableManager
Value<String?> exerciseImageMediaIdsSnapshotJson = Value<String?> exerciseImageMediaIdsSnapshotJson =
const Value.absent(), const Value.absent(),
Value<String?> exerciseStepsSnapshotJson = const Value.absent(), Value<String?> exerciseStepsSnapshotJson = const Value.absent(),
Value<bool> autoStartNextTimedStepSnapshot =
const Value.absent(),
Value<bool?> autoStartNextTimedStepOverride =
const Value.absent(),
Value<String?> exerciseVideoMediaIdSnapshot = Value<String?> exerciseVideoMediaIdSnapshot =
const Value.absent(), const Value.absent(),
Value<bool> exerciseArchivedSnapshot = const Value.absent(), Value<bool> exerciseArchivedSnapshot = const Value.absent(),
@ -40022,6 +40369,8 @@ class $$ProgramExercisesTableTableManager
exerciseImageMediaIdsSnapshotJson: exerciseImageMediaIdsSnapshotJson:
exerciseImageMediaIdsSnapshotJson, exerciseImageMediaIdsSnapshotJson,
exerciseStepsSnapshotJson: exerciseStepsSnapshotJson, exerciseStepsSnapshotJson: exerciseStepsSnapshotJson,
autoStartNextTimedStepSnapshot: autoStartNextTimedStepSnapshot,
autoStartNextTimedStepOverride: autoStartNextTimedStepOverride,
exerciseVideoMediaIdSnapshot: exerciseVideoMediaIdSnapshot, exerciseVideoMediaIdSnapshot: exerciseVideoMediaIdSnapshot,
exerciseArchivedSnapshot: exerciseArchivedSnapshot, exerciseArchivedSnapshot: exerciseArchivedSnapshot,
availableTimeSnapshot: availableTimeSnapshot, availableTimeSnapshot: availableTimeSnapshot,
@ -40065,6 +40414,10 @@ class $$ProgramExercisesTableTableManager
Value<String?> exerciseImageMediaIdsSnapshotJson = Value<String?> exerciseImageMediaIdsSnapshotJson =
const Value.absent(), const Value.absent(),
Value<String?> exerciseStepsSnapshotJson = const Value.absent(), Value<String?> exerciseStepsSnapshotJson = const Value.absent(),
Value<bool> autoStartNextTimedStepSnapshot =
const Value.absent(),
Value<bool?> autoStartNextTimedStepOverride =
const Value.absent(),
Value<String?> exerciseVideoMediaIdSnapshot = Value<String?> exerciseVideoMediaIdSnapshot =
const Value.absent(), const Value.absent(),
Value<bool> exerciseArchivedSnapshot = const Value.absent(), Value<bool> exerciseArchivedSnapshot = const Value.absent(),
@ -40105,6 +40458,8 @@ class $$ProgramExercisesTableTableManager
exerciseImageMediaIdsSnapshotJson: exerciseImageMediaIdsSnapshotJson:
exerciseImageMediaIdsSnapshotJson, exerciseImageMediaIdsSnapshotJson,
exerciseStepsSnapshotJson: exerciseStepsSnapshotJson, exerciseStepsSnapshotJson: exerciseStepsSnapshotJson,
autoStartNextTimedStepSnapshot: autoStartNextTimedStepSnapshot,
autoStartNextTimedStepOverride: autoStartNextTimedStepOverride,
exerciseVideoMediaIdSnapshot: exerciseVideoMediaIdSnapshot, exerciseVideoMediaIdSnapshot: exerciseVideoMediaIdSnapshot,
exerciseArchivedSnapshot: exerciseArchivedSnapshot, exerciseArchivedSnapshot: exerciseArchivedSnapshot,
availableTimeSnapshot: availableTimeSnapshot, availableTimeSnapshot: availableTimeSnapshot,
@ -44787,6 +45142,7 @@ typedef $$WorkoutTemplateExerciseOverridesTableCreateCompanionBuilder =
Value<int?> targetRepsOverride, Value<int?> targetRepsOverride,
Value<double?> targetScoreOverride, Value<double?> targetScoreOverride,
Value<int?> targetScoreTimeMsOverride, Value<int?> targetScoreTimeMsOverride,
Value<bool?> autoStartNextTimedStepOverride,
Value<int> rowid, Value<int> rowid,
}); });
typedef $$WorkoutTemplateExerciseOverridesTableUpdateCompanionBuilder = typedef $$WorkoutTemplateExerciseOverridesTableUpdateCompanionBuilder =
@ -44809,6 +45165,7 @@ typedef $$WorkoutTemplateExerciseOverridesTableUpdateCompanionBuilder =
Value<int?> targetRepsOverride, Value<int?> targetRepsOverride,
Value<double?> targetScoreOverride, Value<double?> targetScoreOverride,
Value<int?> targetScoreTimeMsOverride, Value<int?> targetScoreTimeMsOverride,
Value<bool?> autoStartNextTimedStepOverride,
Value<int> rowid, Value<int> rowid,
}); });
@ -44943,6 +45300,11 @@ class $$WorkoutTemplateExerciseOverridesTableFilterComposer
builder: (column) => ColumnFilters(column), builder: (column) => ColumnFilters(column),
); );
ColumnFilters<bool> get autoStartNextTimedStepOverride => $composableBuilder(
column: $table.autoStartNextTimedStepOverride,
builder: (column) => ColumnFilters(column),
);
$$WorkoutTemplateProgramsTableFilterComposer get workoutTemplateProgramId { $$WorkoutTemplateProgramsTableFilterComposer get workoutTemplateProgramId {
final $$WorkoutTemplateProgramsTableFilterComposer composer = final $$WorkoutTemplateProgramsTableFilterComposer composer =
$composerBuilder( $composerBuilder(
@ -45062,6 +45424,12 @@ class $$WorkoutTemplateExerciseOverridesTableOrderingComposer
builder: (column) => ColumnOrderings(column), builder: (column) => ColumnOrderings(column),
); );
ColumnOrderings<bool> get autoStartNextTimedStepOverride =>
$composableBuilder(
column: $table.autoStartNextTimedStepOverride,
builder: (column) => ColumnOrderings(column),
);
$$WorkoutTemplateProgramsTableOrderingComposer get workoutTemplateProgramId { $$WorkoutTemplateProgramsTableOrderingComposer get workoutTemplateProgramId {
final $$WorkoutTemplateProgramsTableOrderingComposer composer = final $$WorkoutTemplateProgramsTableOrderingComposer composer =
$composerBuilder( $composerBuilder(
@ -45171,6 +45539,12 @@ class $$WorkoutTemplateExerciseOverridesTableAnnotationComposer
builder: (column) => column, builder: (column) => column,
); );
GeneratedColumn<bool> get autoStartNextTimedStepOverride =>
$composableBuilder(
column: $table.autoStartNextTimedStepOverride,
builder: (column) => column,
);
$$WorkoutTemplateProgramsTableAnnotationComposer $$WorkoutTemplateProgramsTableAnnotationComposer
get workoutTemplateProgramId { get workoutTemplateProgramId {
final $$WorkoutTemplateProgramsTableAnnotationComposer composer = final $$WorkoutTemplateProgramsTableAnnotationComposer composer =
@ -45257,6 +45631,8 @@ class $$WorkoutTemplateExerciseOverridesTableTableManager
Value<int?> targetRepsOverride = const Value.absent(), Value<int?> targetRepsOverride = const Value.absent(),
Value<double?> targetScoreOverride = const Value.absent(), Value<double?> targetScoreOverride = const Value.absent(),
Value<int?> targetScoreTimeMsOverride = const Value.absent(), Value<int?> targetScoreTimeMsOverride = const Value.absent(),
Value<bool?> autoStartNextTimedStepOverride =
const Value.absent(),
Value<int> rowid = const Value.absent(), Value<int> rowid = const Value.absent(),
}) => WorkoutTemplateExerciseOverridesCompanion( }) => WorkoutTemplateExerciseOverridesCompanion(
id: id, id: id,
@ -45277,6 +45653,7 @@ class $$WorkoutTemplateExerciseOverridesTableTableManager
targetRepsOverride: targetRepsOverride, targetRepsOverride: targetRepsOverride,
targetScoreOverride: targetScoreOverride, targetScoreOverride: targetScoreOverride,
targetScoreTimeMsOverride: targetScoreTimeMsOverride, targetScoreTimeMsOverride: targetScoreTimeMsOverride,
autoStartNextTimedStepOverride: autoStartNextTimedStepOverride,
rowid: rowid, rowid: rowid,
), ),
createCompanionCallback: createCompanionCallback:
@ -45299,6 +45676,8 @@ class $$WorkoutTemplateExerciseOverridesTableTableManager
Value<int?> targetRepsOverride = const Value.absent(), Value<int?> targetRepsOverride = const Value.absent(),
Value<double?> targetScoreOverride = const Value.absent(), Value<double?> targetScoreOverride = const Value.absent(),
Value<int?> targetScoreTimeMsOverride = const Value.absent(), Value<int?> targetScoreTimeMsOverride = const Value.absent(),
Value<bool?> autoStartNextTimedStepOverride =
const Value.absent(),
Value<int> rowid = const Value.absent(), Value<int> rowid = const Value.absent(),
}) => WorkoutTemplateExerciseOverridesCompanion.insert( }) => WorkoutTemplateExerciseOverridesCompanion.insert(
id: id, id: id,
@ -45319,6 +45698,7 @@ class $$WorkoutTemplateExerciseOverridesTableTableManager
targetRepsOverride: targetRepsOverride, targetRepsOverride: targetRepsOverride,
targetScoreOverride: targetScoreOverride, targetScoreOverride: targetScoreOverride,
targetScoreTimeMsOverride: targetScoreTimeMsOverride, targetScoreTimeMsOverride: targetScoreTimeMsOverride,
autoStartNextTimedStepOverride: autoStartNextTimedStepOverride,
rowid: rowid, rowid: rowid,
), ),
withReferenceMapper: (p0) => p0 withReferenceMapper: (p0) => p0

View File

@ -1881,6 +1881,7 @@ db.ExercisesCompanion _exerciseCompanion(domain.Exercise exercise) {
defaultTargetReps: Value(exercise.defaultTargetReps), defaultTargetReps: Value(exercise.defaultTargetReps),
defaultTargetScore: Value(exercise.defaultTargetScore), defaultTargetScore: Value(exercise.defaultTargetScore),
defaultTargetScoreTimeMs: Value(exercise.defaultTargetScoreTimeMs), defaultTargetScoreTimeMs: Value(exercise.defaultTargetScoreTimeMs),
autoStartNextTimedStep: Value(exercise.autoStartNextTimedStep),
archivedAt: Value(_utcOrNull(exercise.archivedAt)), archivedAt: Value(_utcOrNull(exercise.archivedAt)),
); );
} }
@ -1907,6 +1908,7 @@ domain.Exercise _exerciseFromRow(
defaultTargetReps: row.defaultTargetReps, defaultTargetReps: row.defaultTargetReps,
defaultTargetScore: row.defaultTargetScore, defaultTargetScore: row.defaultTargetScore,
defaultTargetScoreTimeMs: row.defaultTargetScoreTimeMs, defaultTargetScoreTimeMs: row.defaultTargetScoreTimeMs,
autoStartNextTimedStep: row.autoStartNextTimedStep,
steps: steps, steps: steps,
archivedAt: _utcOrNull(row.archivedAt), archivedAt: _utcOrNull(row.archivedAt),
); );
@ -2132,6 +2134,12 @@ db.ProgramExercisesCompanion _programExerciseCompanion(
exerciseStepsSnapshotJson: Value( exerciseStepsSnapshotJson: Value(
_encodeExerciseStepsSnapshot(exercise.exerciseStepsSnapshot), _encodeExerciseStepsSnapshot(exercise.exerciseStepsSnapshot),
), ),
autoStartNextTimedStepSnapshot: Value(
exercise.autoStartNextTimedStepSnapshot,
),
autoStartNextTimedStepOverride: Value(
exercise.autoStartNextTimedStepOverride,
),
exerciseVideoMediaIdSnapshot: Value(exercise.exerciseVideoMediaIdSnapshot), exerciseVideoMediaIdSnapshot: Value(exercise.exerciseVideoMediaIdSnapshot),
exerciseArchivedSnapshot: Value(exercise.exerciseArchivedSnapshot), exerciseArchivedSnapshot: Value(exercise.exerciseArchivedSnapshot),
availableTimeSnapshot: Value(exercise.availableTimeSnapshot), availableTimeSnapshot: Value(exercise.availableTimeSnapshot),
@ -2170,6 +2178,8 @@ domain.ProgramExercise _programExerciseFromRow(db.ProgramExercise row) {
exerciseStepsSnapshot: _decodeExerciseStepsSnapshot( exerciseStepsSnapshot: _decodeExerciseStepsSnapshot(
row.exerciseStepsSnapshotJson, row.exerciseStepsSnapshotJson,
), ),
autoStartNextTimedStepSnapshot: row.autoStartNextTimedStepSnapshot,
autoStartNextTimedStepOverride: row.autoStartNextTimedStepOverride,
exerciseVideoMediaIdSnapshot: row.exerciseVideoMediaIdSnapshot, exerciseVideoMediaIdSnapshot: row.exerciseVideoMediaIdSnapshot,
exerciseArchivedSnapshot: row.exerciseArchivedSnapshot, exerciseArchivedSnapshot: row.exerciseArchivedSnapshot,
availableTimeSnapshot: row.availableTimeSnapshot, availableTimeSnapshot: row.availableTimeSnapshot,
@ -2288,6 +2298,9 @@ _workoutTemplateExerciseOverrideCompanion(
targetRepsOverride: Value(override.targetRepsOverride), targetRepsOverride: Value(override.targetRepsOverride),
targetScoreOverride: Value(override.targetScoreOverride), targetScoreOverride: Value(override.targetScoreOverride),
targetScoreTimeMsOverride: Value(override.targetScoreTimeMsOverride), targetScoreTimeMsOverride: Value(override.targetScoreTimeMsOverride),
autoStartNextTimedStepOverride: Value(
override.autoStartNextTimedStepOverride,
),
); );
} }
@ -2303,6 +2316,7 @@ domain.WorkoutTemplateExerciseOverride _workoutTemplateExerciseOverrideFromRow(
targetRepsOverride: row.targetRepsOverride, targetRepsOverride: row.targetRepsOverride,
targetScoreOverride: row.targetScoreOverride, targetScoreOverride: row.targetScoreOverride,
targetScoreTimeMsOverride: row.targetScoreTimeMsOverride, targetScoreTimeMsOverride: row.targetScoreTimeMsOverride,
autoStartNextTimedStepOverride: row.autoStartNextTimedStepOverride,
); );
} }
@ -2933,6 +2947,7 @@ Map<String, Object?> _exercisePayload(domain.Exercise exercise) => {
'defaultTargetReps': exercise.defaultTargetReps, 'defaultTargetReps': exercise.defaultTargetReps,
'defaultTargetScore': exercise.defaultTargetScore, 'defaultTargetScore': exercise.defaultTargetScore,
'defaultTargetScoreTimeMs': exercise.defaultTargetScoreTimeMs, 'defaultTargetScoreTimeMs': exercise.defaultTargetScoreTimeMs,
'autoStartNextTimedStep': exercise.autoStartNextTimedStep,
'steps': exercise.steps.map((step) => step.toSnapshotJson()).toList(), 'steps': exercise.steps.map((step) => step.toSnapshotJson()).toList(),
'archivedAt': exercise.archivedAt?.toUtc().toIso8601String(), 'archivedAt': exercise.archivedAt?.toUtc().toIso8601String(),
}; };
@ -2991,6 +3006,8 @@ Map<String, Object?> _workoutTemplatePayload(domain.WorkoutTemplate template) =>
'targetRepsOverride': override.targetRepsOverride, 'targetRepsOverride': override.targetRepsOverride,
'targetScoreOverride': override.targetScoreOverride, 'targetScoreOverride': override.targetScoreOverride,
'targetScoreTimeMsOverride': override.targetScoreTimeMsOverride, 'targetScoreTimeMsOverride': override.targetScoreTimeMsOverride,
'autoStartNextTimedStepOverride':
override.autoStartNextTimedStepOverride,
}, },
) )
.toList(), .toList(),
@ -3030,6 +3047,8 @@ domain.Exercise _exerciseFromPayload(RemoteSyncedItem item) {
defaultTargetReps: payload['defaultTargetReps'] as int?, defaultTargetReps: payload['defaultTargetReps'] as int?,
defaultTargetScore: (payload['defaultTargetScore'] as num?)?.toDouble(), defaultTargetScore: (payload['defaultTargetScore'] as num?)?.toDouble(),
defaultTargetScoreTimeMs: payload['defaultTargetScoreTimeMs'] as int?, defaultTargetScoreTimeMs: payload['defaultTargetScoreTimeMs'] as int?,
autoStartNextTimedStep:
payload['autoStartNextTimedStep'] as bool? ?? true,
steps: _stepsFromPayload(payload['steps']), steps: _stepsFromPayload(payload['steps']),
archivedAt: _dateTimeFromPayload(payload['archivedAt']), archivedAt: _dateTimeFromPayload(payload['archivedAt']),
); );
@ -3133,6 +3152,10 @@ List<domain.ProgramExercise> _programExercisesFromPayload(
exerciseStepsSnapshot: _stepsFromPayload( exerciseStepsSnapshot: _stepsFromPayload(
map['exerciseStepsSnapshot'], map['exerciseStepsSnapshot'],
), ),
autoStartNextTimedStepSnapshot:
map['autoStartNextTimedStepSnapshot'] as bool? ?? true,
autoStartNextTimedStepOverride:
map['autoStartNextTimedStepOverride'] as bool?,
exerciseArchivedSnapshot: map['exerciseArchivedSnapshot'] == true, exerciseArchivedSnapshot: map['exerciseArchivedSnapshot'] == true,
availableTimeSnapshot: map['availableTimeSnapshot'] == true, availableTimeSnapshot: map['availableTimeSnapshot'] == true,
availableRepsSnapshot: map['availableRepsSnapshot'] == true, availableRepsSnapshot: map['availableRepsSnapshot'] == true,
@ -3217,6 +3240,8 @@ _workoutTemplateOverridesFromPayload(
targetRepsOverride: map['targetRepsOverride'] as int?, targetRepsOverride: map['targetRepsOverride'] as int?,
targetScoreOverride: (map['targetScoreOverride'] as num?)?.toDouble(), targetScoreOverride: (map['targetScoreOverride'] as num?)?.toDouble(),
targetScoreTimeMsOverride: map['targetScoreTimeMsOverride'] as int?, targetScoreTimeMsOverride: map['targetScoreTimeMsOverride'] as int?,
autoStartNextTimedStepOverride:
map['autoStartNextTimedStepOverride'] as bool?,
); );
}) })
.toList(growable: false); .toList(growable: false);

View File

@ -191,6 +191,8 @@ class Exercises extends SyncableTable {
IntColumn get defaultTargetReps => integer().nullable()(); IntColumn get defaultTargetReps => integer().nullable()();
RealColumn get defaultTargetScore => real().nullable()(); RealColumn get defaultTargetScore => real().nullable()();
IntColumn get defaultTargetScoreTimeMs => integer().nullable()(); IntColumn get defaultTargetScoreTimeMs => integer().nullable()();
BoolColumn get autoStartNextTimedStep =>
boolean().withDefault(const Constant(true))();
DateTimeColumn get archivedAt => dateTime().nullable()(); DateTimeColumn get archivedAt => dateTime().nullable()();
@override @override
@ -296,6 +298,9 @@ class ProgramExercises extends SyncableTable {
text().nullable().references(MediaAssets, #id)(); text().nullable().references(MediaAssets, #id)();
TextColumn get exerciseImageMediaIdsSnapshotJson => text().nullable()(); TextColumn get exerciseImageMediaIdsSnapshotJson => text().nullable()();
TextColumn get exerciseStepsSnapshotJson => text().nullable()(); TextColumn get exerciseStepsSnapshotJson => text().nullable()();
BoolColumn get autoStartNextTimedStepSnapshot =>
boolean().withDefault(const Constant(true))();
BoolColumn get autoStartNextTimedStepOverride => boolean().nullable()();
@ReferenceName('programExerciseVideoSnapshotReferences') @ReferenceName('programExerciseVideoSnapshotReferences')
TextColumn get exerciseVideoMediaIdSnapshot => TextColumn get exerciseVideoMediaIdSnapshot =>
@ -390,6 +395,7 @@ class WorkoutTemplateExerciseOverrides extends SyncableTable {
IntColumn get targetRepsOverride => integer().nullable()(); IntColumn get targetRepsOverride => integer().nullable()();
RealColumn get targetScoreOverride => real().nullable()(); RealColumn get targetScoreOverride => real().nullable()();
IntColumn get targetScoreTimeMsOverride => integer().nullable()(); IntColumn get targetScoreTimeMsOverride => integer().nullable()();
BoolColumn get autoStartNextTimedStepOverride => boolean().nullable()();
@override @override
List<String> get customConstraints => [ List<String> get customConstraints => [

View File

@ -479,6 +479,129 @@ void main() {
); );
}); });
test('program exercise snapshots step chaining setting from exercise', () async {
final exerciseRepository = _FakeExerciseRepository()
..exercise = Exercise(
metadata: _metadata('exercise-1'),
name: 'Circuit',
hasTimeMeasure: false,
hasRepsMeasure: true,
hasScoreMeasure: false,
defaultTargetReps: 10,
autoStartNextTimedStep: false,
);
final programRepository = _FakeProgramRepository()
..programs.add(
Program(
metadata: _metadata('program-1'),
name: 'Programme',
defaultRestSeconds: 60,
),
);
final useCase = ProgramUseCases(
programRepository: programRepository,
exerciseRepository: exerciseRepository,
templateRepository: _FakeWorkoutTemplateRepository(),
clock: _FakeClock(DateTime.utc(2026, 7, 17, 12)),
ids: _FakeIds(),
originDeviceId: 'device-1',
);
final snapshot = await useCase.addExercise(
programId: 'program-1',
exerciseId: 'exercise-1',
position: 0,
setsCount: 3,
enabledMeasures: const {WorkoutMeasure.reps},
);
expect(snapshot.autoStartNextTimedStepSnapshot, isFalse);
expect(snapshot.autoStartNextTimedStepOverride, isNull);
expect(
snapshot.toSnapshotJson()['autoStartNextTimedStepSnapshot'],
isFalse,
);
});
test('program saveConfigured preserves step chaining override', () async {
final programRepository = _FakeProgramRepository();
final useCase = ProgramUseCases(
programRepository: programRepository,
exerciseRepository: _FakeExerciseRepository(),
templateRepository: _FakeWorkoutTemplateRepository(),
clock: _FakeClock(DateTime.utc(2026, 7, 17, 12)),
ids: _FakeIds(),
originDeviceId: 'device-1',
);
final program = await useCase.saveConfigured(
name: 'Programme',
defaultRestSeconds: 60,
exercises: const [
ProgramExerciseConfig(
exerciseNameSnapshot: 'Circuit',
availableTimeSnapshot: false,
availableRepsSnapshot: true,
availableScoreSnapshot: false,
setsCount: 3,
enabledMeasures: {WorkoutMeasure.reps},
targetReps: 10,
autoStartNextTimedStepSnapshot: true,
autoStartNextTimedStepOverride: false,
),
],
);
expect(program.exercises.single.autoStartNextTimedStepSnapshot, isTrue);
expect(program.exercises.single.autoStartNextTimedStepOverride, isFalse);
});
test('workout template override preserves step chaining override', () async {
final templateRepository = _FakeWorkoutTemplateRepository();
final useCase = WorkoutTemplateUseCases(
templateRepository: templateRepository,
programRepository: _FakeProgramRepository(),
clock: _FakeClock(DateTime.utc(2026, 7, 17, 12)),
ids: _FakeIds(),
originDeviceId: 'device-1',
);
final template = await useCase.saveConfigured(
name: 'Séance',
programs: [
WorkoutTemplateProgramConfig(
clientKey: 'program-1',
programNameSnapshot: 'Programme',
defaultRestSecondsSnapshot: 60,
programSnapshotJson: jsonEncode({
'exercises': [
{
'id': 'exercise-snapshot-1',
'exerciseNameSnapshot': 'Circuit',
'setsCount': 3,
'timeEnabled': false,
'repsEnabled': true,
'scoreEnabled': false,
},
],
}),
),
],
overrides: const [
WorkoutTemplateExerciseOverrideConfig(
workoutTemplateProgramClientKey: 'program-1',
snapshotProgramExerciseId: 'exercise-snapshot-1',
autoStartNextTimedStepOverride: false,
),
],
);
expect(
template.overrides.single.autoStartNextTimedStepOverride,
isFalse,
);
});
test('delete exercise keeps existing program snapshots unchanged', () async { test('delete exercise keeps existing program snapshots unchanged', () async {
final exerciseRepository = _FakeExerciseRepository() final exerciseRepository = _FakeExerciseRepository()
..exercise = Exercise( ..exercise = Exercise(

View File

@ -98,6 +98,100 @@ void main() {
expect(restored!.defaultTargetScore, 0); expect(restored!.defaultTargetScore, 0);
}); });
test('step chaining settings round-trip through drift repositories', () async {
final now = DateTime.utc(2026, 7, 17, 12);
final exercise = Exercise(
metadata: _metadata('exercise-chain-1', now),
name: 'Circuit',
hasTimeMeasure: false,
hasRepsMeasure: true,
hasScoreMeasure: false,
defaultTargetReps: 10,
autoStartNextTimedStep: false,
);
await exerciseRepository.save(exercise);
final restoredExercise = await exerciseRepository.findById(
exercise.metadata.id,
);
expect(restoredExercise!.autoStartNextTimedStep, isFalse);
final programExercise = _programExercise(
'program-exercise-chain-1',
now,
programId: 'program-chain-1',
position: 0,
autoStartNextTimedStepSnapshot: false,
autoStartNextTimedStepOverride: true,
);
await programRepository.save(
Program(
metadata: _metadata('program-chain-1', now),
name: 'Programme',
defaultRestSeconds: 60,
exercises: [programExercise],
),
);
final restoredProgram = await programRepository.findById('program-chain-1');
expect(
restoredProgram!.exercises.single.autoStartNextTimedStepSnapshot,
isFalse,
);
expect(
restoredProgram.exercises.single.autoStartNextTimedStepOverride,
isTrue,
);
final templateProgram = WorkoutTemplateProgram(
metadata: _metadata('template-program-chain-1', now),
workoutTemplateId: 'template-chain-1',
sourceProgramId: 'program-chain-1',
position: 0,
programNameSnapshot: 'Programme',
defaultRestSecondsSnapshot: 60,
programSnapshotJson: jsonEncode({
'exercises': [programExercise.toSnapshotJson()],
}),
);
await templateRepository.save(
WorkoutTemplate(
metadata: _metadata('template-chain-1', now),
name: 'Séance',
programs: [templateProgram],
overrides: [
WorkoutTemplateExerciseOverride(
metadata: _metadata('override-chain-1', now),
workoutTemplateProgramId: templateProgram.metadata.id,
snapshotProgramExerciseId: programExercise.metadata.id,
),
WorkoutTemplateExerciseOverride(
metadata: _metadata('override-chain-2', now),
workoutTemplateProgramId: templateProgram.metadata.id,
snapshotProgramExerciseId: 'program-exercise-chain-2',
autoStartNextTimedStepOverride: false,
),
],
),
);
final restoredTemplate = await templateRepository.findById(
'template-chain-1',
);
expect(
restoredTemplate!.overrides
.singleWhere((override) => override.metadata.id == 'override-chain-1')
.autoStartNextTimedStepOverride,
isNull,
);
expect(
restoredTemplate.overrides
.singleWhere((override) => override.metadata.id == 'override-chain-2')
.autoStartNextTimedStepOverride,
isFalse,
);
});
test('exercise repository round-trips configured steps', () async { test('exercise repository round-trips configured steps', () async {
final now = DateTime.utc(2026, 7, 17, 12); final now = DateTime.utc(2026, 7, 17, 12);
final exercise = Exercise( final exercise = Exercise(
@ -453,13 +547,18 @@ EntityMetadata _metadata(String id, DateTime now, [int localRevision = 0]) {
ProgramExercise _programExercise( ProgramExercise _programExercise(
String id, String id,
DateTime now, { DateTime now, {
String programId = 'program-1',
required int position, required int position,
bool autoStartNextTimedStepSnapshot = true,
bool? autoStartNextTimedStepOverride,
}) { }) {
return ProgramExercise( return ProgramExercise(
metadata: _metadata(id, now), metadata: _metadata(id, now),
programId: 'program-1', programId: programId,
position: position, position: position,
exerciseNameSnapshot: 'Exercise $position', exerciseNameSnapshot: 'Exercise $position',
autoStartNextTimedStepSnapshot: autoStartNextTimedStepSnapshot,
autoStartNextTimedStepOverride: autoStartNextTimedStepOverride,
availableTimeSnapshot: false, availableTimeSnapshot: false,
availableRepsSnapshot: true, availableRepsSnapshot: true,
availableScoreSnapshot: false, availableScoreSnapshot: false,