feat(exercice): valeurs par défaut d'exercice (tickets #39/#40, parent #30)

Étend le modèle Drift (tables.dart, app_database.dart/.g.dart), les
entités/use cases/repositories et les écrans bibliothèque d'exercices
et programme pour supporter des valeurs par défaut par exercice
(répétitions/temps/poids proposés à la création d'une série).
flutter analyze propre, 51/51 tests verts, build APK debug validé.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-18 10:18:31 +02:00
parent 6ee06fef01
commit 88af0387da
14 changed files with 882 additions and 27 deletions

View File

@ -36,7 +36,7 @@ final class AppDatabase extends _$AppDatabase {
}
@override
int get schemaVersion => 3;
int get schemaVersion => 4;
@override
MigrationStrategy get migration {
@ -60,6 +60,9 @@ final class AppDatabase extends _$AppDatabase {
if (from < 3) {
await _migrateToSchema3(migrator);
}
if (from < 4) {
await _migrateToSchema4();
}
await _createIndexes();
},
beforeOpen: (details) async {
@ -202,4 +205,25 @@ extension on AppDatabase {
);
await migrator.createTable(activeScoreStopwatchStates);
}
Future<void> _migrateToSchema4() async {
await customStatement(
'ALTER TABLE exercises ADD COLUMN default_target_time_seconds INTEGER '
'CHECK (default_target_time_seconds IS NULL OR '
'default_target_time_seconds > 0)',
);
await customStatement(
'ALTER TABLE exercises ADD COLUMN default_target_reps INTEGER '
'CHECK (default_target_reps IS NULL OR default_target_reps > 0)',
);
await customStatement(
'ALTER TABLE exercises ADD COLUMN default_target_score REAL '
'CHECK (default_target_score IS NULL OR default_target_score > 0)',
);
await customStatement(
'ALTER TABLE exercises ADD COLUMN default_target_score_time_ms INTEGER '
'CHECK (default_target_score_time_ms IS NULL OR '
'default_target_score_time_ms > 0)',
);
}
}

View File

@ -8063,6 +8063,50 @@ class $ExercisesTable extends Exercises
type: DriftSqlType.string,
requiredDuringInsert: false,
);
static const VerificationMeta _defaultTargetTimeSecondsMeta =
const VerificationMeta('defaultTargetTimeSeconds');
@override
late final GeneratedColumn<int> defaultTargetTimeSeconds =
GeneratedColumn<int>(
'default_target_time_seconds',
aliasedName,
true,
type: DriftSqlType.int,
requiredDuringInsert: false,
);
static const VerificationMeta _defaultTargetRepsMeta = const VerificationMeta(
'defaultTargetReps',
);
@override
late final GeneratedColumn<int> defaultTargetReps = GeneratedColumn<int>(
'default_target_reps',
aliasedName,
true,
type: DriftSqlType.int,
requiredDuringInsert: false,
);
static const VerificationMeta _defaultTargetScoreMeta =
const VerificationMeta('defaultTargetScore');
@override
late final GeneratedColumn<double> defaultTargetScore =
GeneratedColumn<double>(
'default_target_score',
aliasedName,
true,
type: DriftSqlType.double,
requiredDuringInsert: false,
);
static const VerificationMeta _defaultTargetScoreTimeMsMeta =
const VerificationMeta('defaultTargetScoreTimeMs');
@override
late final GeneratedColumn<int> defaultTargetScoreTimeMs =
GeneratedColumn<int>(
'default_target_score_time_ms',
aliasedName,
true,
type: DriftSqlType.int,
requiredDuringInsert: false,
);
static const VerificationMeta _archivedAtMeta = const VerificationMeta(
'archivedAt',
);
@ -8097,6 +8141,10 @@ class $ExercisesTable extends Exercises
scoreInputMode,
scoreLabel,
scoreUnit,
defaultTargetTimeSeconds,
defaultTargetReps,
defaultTargetScore,
defaultTargetScoreTimeMs,
archivedAt,
];
@override
@ -8293,6 +8341,42 @@ class $ExercisesTable extends Exercises
scoreUnit.isAcceptableOrUnknown(data['score_unit']!, _scoreUnitMeta),
);
}
if (data.containsKey('default_target_time_seconds')) {
context.handle(
_defaultTargetTimeSecondsMeta,
defaultTargetTimeSeconds.isAcceptableOrUnknown(
data['default_target_time_seconds']!,
_defaultTargetTimeSecondsMeta,
),
);
}
if (data.containsKey('default_target_reps')) {
context.handle(
_defaultTargetRepsMeta,
defaultTargetReps.isAcceptableOrUnknown(
data['default_target_reps']!,
_defaultTargetRepsMeta,
),
);
}
if (data.containsKey('default_target_score')) {
context.handle(
_defaultTargetScoreMeta,
defaultTargetScore.isAcceptableOrUnknown(
data['default_target_score']!,
_defaultTargetScoreMeta,
),
);
}
if (data.containsKey('default_target_score_time_ms')) {
context.handle(
_defaultTargetScoreTimeMsMeta,
defaultTargetScoreTimeMs.isAcceptableOrUnknown(
data['default_target_score_time_ms']!,
_defaultTargetScoreTimeMsMeta,
),
);
}
if (data.containsKey('archived_at')) {
context.handle(
_archivedAtMeta,
@ -8392,6 +8476,22 @@ class $ExercisesTable extends Exercises
DriftSqlType.string,
data['${effectivePrefix}score_unit'],
),
defaultTargetTimeSeconds: attachedDatabase.typeMapping.read(
DriftSqlType.int,
data['${effectivePrefix}default_target_time_seconds'],
),
defaultTargetReps: attachedDatabase.typeMapping.read(
DriftSqlType.int,
data['${effectivePrefix}default_target_reps'],
),
defaultTargetScore: attachedDatabase.typeMapping.read(
DriftSqlType.double,
data['${effectivePrefix}default_target_score'],
),
defaultTargetScoreTimeMs: attachedDatabase.typeMapping.read(
DriftSqlType.int,
data['${effectivePrefix}default_target_score_time_ms'],
),
archivedAt: attachedDatabase.typeMapping.read(
DriftSqlType.dateTime,
data['${effectivePrefix}archived_at'],
@ -8427,6 +8527,10 @@ class Exercise extends DataClass implements Insertable<Exercise> {
final String scoreInputMode;
final String? scoreLabel;
final String? scoreUnit;
final int? defaultTargetTimeSeconds;
final int? defaultTargetReps;
final double? defaultTargetScore;
final int? defaultTargetScoreTimeMs;
final DateTime? archivedAt;
const Exercise({
required this.id,
@ -8450,6 +8554,10 @@ class Exercise extends DataClass implements Insertable<Exercise> {
required this.scoreInputMode,
this.scoreLabel,
this.scoreUnit,
this.defaultTargetTimeSeconds,
this.defaultTargetReps,
this.defaultTargetScore,
this.defaultTargetScoreTimeMs,
this.archivedAt,
});
@override
@ -8494,6 +8602,22 @@ class Exercise extends DataClass implements Insertable<Exercise> {
if (!nullToAbsent || scoreUnit != null) {
map['score_unit'] = Variable<String>(scoreUnit);
}
if (!nullToAbsent || defaultTargetTimeSeconds != null) {
map['default_target_time_seconds'] = Variable<int>(
defaultTargetTimeSeconds,
);
}
if (!nullToAbsent || defaultTargetReps != null) {
map['default_target_reps'] = Variable<int>(defaultTargetReps);
}
if (!nullToAbsent || defaultTargetScore != null) {
map['default_target_score'] = Variable<double>(defaultTargetScore);
}
if (!nullToAbsent || defaultTargetScoreTimeMs != null) {
map['default_target_score_time_ms'] = Variable<int>(
defaultTargetScoreTimeMs,
);
}
if (!nullToAbsent || archivedAt != null) {
map['archived_at'] = Variable<DateTime>(archivedAt);
}
@ -8541,6 +8665,18 @@ class Exercise extends DataClass implements Insertable<Exercise> {
scoreUnit: scoreUnit == null && nullToAbsent
? const Value.absent()
: Value(scoreUnit),
defaultTargetTimeSeconds: defaultTargetTimeSeconds == null && nullToAbsent
? const Value.absent()
: Value(defaultTargetTimeSeconds),
defaultTargetReps: defaultTargetReps == null && nullToAbsent
? const Value.absent()
: Value(defaultTargetReps),
defaultTargetScore: defaultTargetScore == null && nullToAbsent
? const Value.absent()
: Value(defaultTargetScore),
defaultTargetScoreTimeMs: defaultTargetScoreTimeMs == null && nullToAbsent
? const Value.absent()
: Value(defaultTargetScoreTimeMs),
archivedAt: archivedAt == null && nullToAbsent
? const Value.absent()
: Value(archivedAt),
@ -8576,6 +8712,16 @@ class Exercise extends DataClass implements Insertable<Exercise> {
scoreInputMode: serializer.fromJson<String>(json['scoreInputMode']),
scoreLabel: serializer.fromJson<String?>(json['scoreLabel']),
scoreUnit: serializer.fromJson<String?>(json['scoreUnit']),
defaultTargetTimeSeconds: serializer.fromJson<int?>(
json['defaultTargetTimeSeconds'],
),
defaultTargetReps: serializer.fromJson<int?>(json['defaultTargetReps']),
defaultTargetScore: serializer.fromJson<double?>(
json['defaultTargetScore'],
),
defaultTargetScoreTimeMs: serializer.fromJson<int?>(
json['defaultTargetScoreTimeMs'],
),
archivedAt: serializer.fromJson<DateTime?>(json['archivedAt']),
);
}
@ -8604,6 +8750,14 @@ class Exercise extends DataClass implements Insertable<Exercise> {
'scoreInputMode': serializer.toJson<String>(scoreInputMode),
'scoreLabel': serializer.toJson<String?>(scoreLabel),
'scoreUnit': serializer.toJson<String?>(scoreUnit),
'defaultTargetTimeSeconds': serializer.toJson<int?>(
defaultTargetTimeSeconds,
),
'defaultTargetReps': serializer.toJson<int?>(defaultTargetReps),
'defaultTargetScore': serializer.toJson<double?>(defaultTargetScore),
'defaultTargetScoreTimeMs': serializer.toJson<int?>(
defaultTargetScoreTimeMs,
),
'archivedAt': serializer.toJson<DateTime?>(archivedAt),
};
}
@ -8630,6 +8784,10 @@ class Exercise extends DataClass implements Insertable<Exercise> {
String? scoreInputMode,
Value<String?> scoreLabel = const Value.absent(),
Value<String?> scoreUnit = const Value.absent(),
Value<int?> defaultTargetTimeSeconds = const Value.absent(),
Value<int?> defaultTargetReps = const Value.absent(),
Value<double?> defaultTargetScore = const Value.absent(),
Value<int?> defaultTargetScoreTimeMs = const Value.absent(),
Value<DateTime?> archivedAt = const Value.absent(),
}) => Exercise(
id: id ?? this.id,
@ -8657,6 +8815,18 @@ class Exercise extends DataClass implements Insertable<Exercise> {
scoreInputMode: scoreInputMode ?? this.scoreInputMode,
scoreLabel: scoreLabel.present ? scoreLabel.value : this.scoreLabel,
scoreUnit: scoreUnit.present ? scoreUnit.value : this.scoreUnit,
defaultTargetTimeSeconds: defaultTargetTimeSeconds.present
? defaultTargetTimeSeconds.value
: this.defaultTargetTimeSeconds,
defaultTargetReps: defaultTargetReps.present
? defaultTargetReps.value
: this.defaultTargetReps,
defaultTargetScore: defaultTargetScore.present
? defaultTargetScore.value
: this.defaultTargetScore,
defaultTargetScoreTimeMs: defaultTargetScoreTimeMs.present
? defaultTargetScoreTimeMs.value
: this.defaultTargetScoreTimeMs,
archivedAt: archivedAt.present ? archivedAt.value : this.archivedAt,
);
Exercise copyWithCompanion(ExercisesCompanion data) {
@ -8710,6 +8880,18 @@ class Exercise extends DataClass implements Insertable<Exercise> {
? data.scoreLabel.value
: this.scoreLabel,
scoreUnit: data.scoreUnit.present ? data.scoreUnit.value : this.scoreUnit,
defaultTargetTimeSeconds: data.defaultTargetTimeSeconds.present
? data.defaultTargetTimeSeconds.value
: this.defaultTargetTimeSeconds,
defaultTargetReps: data.defaultTargetReps.present
? data.defaultTargetReps.value
: this.defaultTargetReps,
defaultTargetScore: data.defaultTargetScore.present
? data.defaultTargetScore.value
: this.defaultTargetScore,
defaultTargetScoreTimeMs: data.defaultTargetScoreTimeMs.present
? data.defaultTargetScoreTimeMs.value
: this.defaultTargetScoreTimeMs,
archivedAt: data.archivedAt.present
? data.archivedAt.value
: this.archivedAt,
@ -8740,6 +8922,10 @@ class Exercise extends DataClass implements Insertable<Exercise> {
..write('scoreInputMode: $scoreInputMode, ')
..write('scoreLabel: $scoreLabel, ')
..write('scoreUnit: $scoreUnit, ')
..write('defaultTargetTimeSeconds: $defaultTargetTimeSeconds, ')
..write('defaultTargetReps: $defaultTargetReps, ')
..write('defaultTargetScore: $defaultTargetScore, ')
..write('defaultTargetScoreTimeMs: $defaultTargetScoreTimeMs, ')
..write('archivedAt: $archivedAt')
..write(')'))
.toString();
@ -8768,6 +8954,10 @@ class Exercise extends DataClass implements Insertable<Exercise> {
scoreInputMode,
scoreLabel,
scoreUnit,
defaultTargetTimeSeconds,
defaultTargetReps,
defaultTargetScore,
defaultTargetScoreTimeMs,
archivedAt,
]);
@override
@ -8795,6 +8985,10 @@ class Exercise extends DataClass implements Insertable<Exercise> {
other.scoreInputMode == this.scoreInputMode &&
other.scoreLabel == this.scoreLabel &&
other.scoreUnit == this.scoreUnit &&
other.defaultTargetTimeSeconds == this.defaultTargetTimeSeconds &&
other.defaultTargetReps == this.defaultTargetReps &&
other.defaultTargetScore == this.defaultTargetScore &&
other.defaultTargetScoreTimeMs == this.defaultTargetScoreTimeMs &&
other.archivedAt == this.archivedAt);
}
@ -8820,6 +9014,10 @@ class ExercisesCompanion extends UpdateCompanion<Exercise> {
final Value<String> scoreInputMode;
final Value<String?> scoreLabel;
final Value<String?> scoreUnit;
final Value<int?> defaultTargetTimeSeconds;
final Value<int?> defaultTargetReps;
final Value<double?> defaultTargetScore;
final Value<int?> defaultTargetScoreTimeMs;
final Value<DateTime?> archivedAt;
final Value<int> rowid;
const ExercisesCompanion({
@ -8844,6 +9042,10 @@ class ExercisesCompanion extends UpdateCompanion<Exercise> {
this.scoreInputMode = const Value.absent(),
this.scoreLabel = const Value.absent(),
this.scoreUnit = const Value.absent(),
this.defaultTargetTimeSeconds = const Value.absent(),
this.defaultTargetReps = const Value.absent(),
this.defaultTargetScore = const Value.absent(),
this.defaultTargetScoreTimeMs = const Value.absent(),
this.archivedAt = const Value.absent(),
this.rowid = const Value.absent(),
});
@ -8869,6 +9071,10 @@ class ExercisesCompanion extends UpdateCompanion<Exercise> {
this.scoreInputMode = const Value.absent(),
this.scoreLabel = const Value.absent(),
this.scoreUnit = const Value.absent(),
this.defaultTargetTimeSeconds = const Value.absent(),
this.defaultTargetReps = const Value.absent(),
this.defaultTargetScore = const Value.absent(),
this.defaultTargetScoreTimeMs = const Value.absent(),
this.archivedAt = const Value.absent(),
this.rowid = const Value.absent(),
}) : id = Value(id),
@ -8903,6 +9109,10 @@ class ExercisesCompanion extends UpdateCompanion<Exercise> {
Expression<String>? scoreInputMode,
Expression<String>? scoreLabel,
Expression<String>? scoreUnit,
Expression<int>? defaultTargetTimeSeconds,
Expression<int>? defaultTargetReps,
Expression<double>? defaultTargetScore,
Expression<int>? defaultTargetScoreTimeMs,
Expression<DateTime>? archivedAt,
Expression<int>? rowid,
}) {
@ -8929,6 +9139,13 @@ class ExercisesCompanion extends UpdateCompanion<Exercise> {
if (scoreInputMode != null) 'score_input_mode': scoreInputMode,
if (scoreLabel != null) 'score_label': scoreLabel,
if (scoreUnit != null) 'score_unit': scoreUnit,
if (defaultTargetTimeSeconds != null)
'default_target_time_seconds': defaultTargetTimeSeconds,
if (defaultTargetReps != null) 'default_target_reps': defaultTargetReps,
if (defaultTargetScore != null)
'default_target_score': defaultTargetScore,
if (defaultTargetScoreTimeMs != null)
'default_target_score_time_ms': defaultTargetScoreTimeMs,
if (archivedAt != null) 'archived_at': archivedAt,
if (rowid != null) 'rowid': rowid,
});
@ -8956,6 +9173,10 @@ class ExercisesCompanion extends UpdateCompanion<Exercise> {
Value<String>? scoreInputMode,
Value<String?>? scoreLabel,
Value<String?>? scoreUnit,
Value<int?>? defaultTargetTimeSeconds,
Value<int?>? defaultTargetReps,
Value<double?>? defaultTargetScore,
Value<int?>? defaultTargetScoreTimeMs,
Value<DateTime?>? archivedAt,
Value<int>? rowid,
}) {
@ -8981,6 +9202,12 @@ class ExercisesCompanion extends UpdateCompanion<Exercise> {
scoreInputMode: scoreInputMode ?? this.scoreInputMode,
scoreLabel: scoreLabel ?? this.scoreLabel,
scoreUnit: scoreUnit ?? this.scoreUnit,
defaultTargetTimeSeconds:
defaultTargetTimeSeconds ?? this.defaultTargetTimeSeconds,
defaultTargetReps: defaultTargetReps ?? this.defaultTargetReps,
defaultTargetScore: defaultTargetScore ?? this.defaultTargetScore,
defaultTargetScoreTimeMs:
defaultTargetScoreTimeMs ?? this.defaultTargetScoreTimeMs,
archivedAt: archivedAt ?? this.archivedAt,
rowid: rowid ?? this.rowid,
);
@ -9054,6 +9281,22 @@ class ExercisesCompanion extends UpdateCompanion<Exercise> {
if (scoreUnit.present) {
map['score_unit'] = Variable<String>(scoreUnit.value);
}
if (defaultTargetTimeSeconds.present) {
map['default_target_time_seconds'] = Variable<int>(
defaultTargetTimeSeconds.value,
);
}
if (defaultTargetReps.present) {
map['default_target_reps'] = Variable<int>(defaultTargetReps.value);
}
if (defaultTargetScore.present) {
map['default_target_score'] = Variable<double>(defaultTargetScore.value);
}
if (defaultTargetScoreTimeMs.present) {
map['default_target_score_time_ms'] = Variable<int>(
defaultTargetScoreTimeMs.value,
);
}
if (archivedAt.present) {
map['archived_at'] = Variable<DateTime>(archivedAt.value);
}
@ -9087,6 +9330,10 @@ class ExercisesCompanion extends UpdateCompanion<Exercise> {
..write('scoreInputMode: $scoreInputMode, ')
..write('scoreLabel: $scoreLabel, ')
..write('scoreUnit: $scoreUnit, ')
..write('defaultTargetTimeSeconds: $defaultTargetTimeSeconds, ')
..write('defaultTargetReps: $defaultTargetReps, ')
..write('defaultTargetScore: $defaultTargetScore, ')
..write('defaultTargetScoreTimeMs: $defaultTargetScoreTimeMs, ')
..write('archivedAt: $archivedAt, ')
..write('rowid: $rowid')
..write(')'))
@ -22641,6 +22888,10 @@ typedef $$ExercisesTableCreateCompanionBuilder =
Value<String> scoreInputMode,
Value<String?> scoreLabel,
Value<String?> scoreUnit,
Value<int?> defaultTargetTimeSeconds,
Value<int?> defaultTargetReps,
Value<double?> defaultTargetScore,
Value<int?> defaultTargetScoreTimeMs,
Value<DateTime?> archivedAt,
Value<int> rowid,
});
@ -22667,6 +22918,10 @@ typedef $$ExercisesTableUpdateCompanionBuilder =
Value<String> scoreInputMode,
Value<String?> scoreLabel,
Value<String?> scoreUnit,
Value<int?> defaultTargetTimeSeconds,
Value<int?> defaultTargetReps,
Value<double?> defaultTargetScore,
Value<int?> defaultTargetScoreTimeMs,
Value<DateTime?> archivedAt,
Value<int> rowid,
});
@ -22834,6 +23089,26 @@ class $$ExercisesTableFilterComposer
builder: (column) => ColumnFilters(column),
);
ColumnFilters<int> get defaultTargetTimeSeconds => $composableBuilder(
column: $table.defaultTargetTimeSeconds,
builder: (column) => ColumnFilters(column),
);
ColumnFilters<int> get defaultTargetReps => $composableBuilder(
column: $table.defaultTargetReps,
builder: (column) => ColumnFilters(column),
);
ColumnFilters<double> get defaultTargetScore => $composableBuilder(
column: $table.defaultTargetScore,
builder: (column) => ColumnFilters(column),
);
ColumnFilters<int> get defaultTargetScoreTimeMs => $composableBuilder(
column: $table.defaultTargetScoreTimeMs,
builder: (column) => ColumnFilters(column),
);
ColumnFilters<DateTime> get archivedAt => $composableBuilder(
column: $table.archivedAt,
builder: (column) => ColumnFilters(column),
@ -23015,6 +23290,26 @@ class $$ExercisesTableOrderingComposer
builder: (column) => ColumnOrderings(column),
);
ColumnOrderings<int> get defaultTargetTimeSeconds => $composableBuilder(
column: $table.defaultTargetTimeSeconds,
builder: (column) => ColumnOrderings(column),
);
ColumnOrderings<int> get defaultTargetReps => $composableBuilder(
column: $table.defaultTargetReps,
builder: (column) => ColumnOrderings(column),
);
ColumnOrderings<double> get defaultTargetScore => $composableBuilder(
column: $table.defaultTargetScore,
builder: (column) => ColumnOrderings(column),
);
ColumnOrderings<int> get defaultTargetScoreTimeMs => $composableBuilder(
column: $table.defaultTargetScoreTimeMs,
builder: (column) => ColumnOrderings(column),
);
ColumnOrderings<DateTime> get archivedAt => $composableBuilder(
column: $table.archivedAt,
builder: (column) => ColumnOrderings(column),
@ -23157,6 +23452,26 @@ class $$ExercisesTableAnnotationComposer
GeneratedColumn<String> get scoreUnit =>
$composableBuilder(column: $table.scoreUnit, builder: (column) => column);
GeneratedColumn<int> get defaultTargetTimeSeconds => $composableBuilder(
column: $table.defaultTargetTimeSeconds,
builder: (column) => column,
);
GeneratedColumn<int> get defaultTargetReps => $composableBuilder(
column: $table.defaultTargetReps,
builder: (column) => column,
);
GeneratedColumn<double> get defaultTargetScore => $composableBuilder(
column: $table.defaultTargetScore,
builder: (column) => column,
);
GeneratedColumn<int> get defaultTargetScoreTimeMs => $composableBuilder(
column: $table.defaultTargetScoreTimeMs,
builder: (column) => column,
);
GeneratedColumn<DateTime> get archivedAt => $composableBuilder(
column: $table.archivedAt,
builder: (column) => column,
@ -23287,6 +23602,10 @@ class $$ExercisesTableTableManager
Value<String> scoreInputMode = const Value.absent(),
Value<String?> scoreLabel = const Value.absent(),
Value<String?> scoreUnit = const Value.absent(),
Value<int?> defaultTargetTimeSeconds = const Value.absent(),
Value<int?> defaultTargetReps = const Value.absent(),
Value<double?> defaultTargetScore = const Value.absent(),
Value<int?> defaultTargetScoreTimeMs = const Value.absent(),
Value<DateTime?> archivedAt = const Value.absent(),
Value<int> rowid = const Value.absent(),
}) => ExercisesCompanion(
@ -23311,6 +23630,10 @@ class $$ExercisesTableTableManager
scoreInputMode: scoreInputMode,
scoreLabel: scoreLabel,
scoreUnit: scoreUnit,
defaultTargetTimeSeconds: defaultTargetTimeSeconds,
defaultTargetReps: defaultTargetReps,
defaultTargetScore: defaultTargetScore,
defaultTargetScoreTimeMs: defaultTargetScoreTimeMs,
archivedAt: archivedAt,
rowid: rowid,
),
@ -23337,6 +23660,10 @@ class $$ExercisesTableTableManager
Value<String> scoreInputMode = const Value.absent(),
Value<String?> scoreLabel = const Value.absent(),
Value<String?> scoreUnit = const Value.absent(),
Value<int?> defaultTargetTimeSeconds = const Value.absent(),
Value<int?> defaultTargetReps = const Value.absent(),
Value<double?> defaultTargetScore = const Value.absent(),
Value<int?> defaultTargetScoreTimeMs = const Value.absent(),
Value<DateTime?> archivedAt = const Value.absent(),
Value<int> rowid = const Value.absent(),
}) => ExercisesCompanion.insert(
@ -23361,6 +23688,10 @@ class $$ExercisesTableTableManager
scoreInputMode: scoreInputMode,
scoreLabel: scoreLabel,
scoreUnit: scoreUnit,
defaultTargetTimeSeconds: defaultTargetTimeSeconds,
defaultTargetReps: defaultTargetReps,
defaultTargetScore: defaultTargetScore,
defaultTargetScoreTimeMs: defaultTargetScoreTimeMs,
archivedAt: archivedAt,
rowid: rowid,
),

View File

@ -966,6 +966,10 @@ db.ExercisesCompanion _exerciseCompanion(domain.Exercise exercise) {
scoreInputMode: Value(_scoreInputModeToDb(exercise.scoreInputMode)),
scoreLabel: Value(exercise.scoreLabel),
scoreUnit: Value(exercise.scoreUnit),
defaultTargetTimeSeconds: Value(exercise.defaultTargetTimeSeconds),
defaultTargetReps: Value(exercise.defaultTargetReps),
defaultTargetScore: Value(exercise.defaultTargetScore),
defaultTargetScoreTimeMs: Value(exercise.defaultTargetScoreTimeMs),
archivedAt: Value(_utcOrNull(exercise.archivedAt)),
);
}
@ -983,6 +987,10 @@ domain.Exercise _exerciseFromRow(db.Exercise row) {
scoreInputMode: _scoreInputModeFromDb(row.scoreInputMode),
scoreLabel: row.scoreLabel,
scoreUnit: row.scoreUnit,
defaultTargetTimeSeconds: row.defaultTargetTimeSeconds,
defaultTargetReps: row.defaultTargetReps,
defaultTargetScore: row.defaultTargetScore,
defaultTargetScoreTimeMs: row.defaultTargetScoreTimeMs,
archivedAt: _utcOrNull(row.archivedAt),
);
}

View File

@ -69,6 +69,10 @@ class Exercises extends SyncableTable {
text().withDefault(const Constant('manual'))();
TextColumn get scoreLabel => text().nullable()();
TextColumn get scoreUnit => text().nullable()();
IntColumn get defaultTargetTimeSeconds => integer().nullable()();
IntColumn get defaultTargetReps => integer().nullable()();
RealColumn get defaultTargetScore => real().nullable()();
IntColumn get defaultTargetScoreTimeMs => integer().nullable()();
DateTimeColumn get archivedAt => dateTime().nullable()();
@override
@ -79,6 +83,12 @@ class Exercises extends SyncableTable {
"CHECK (score_input_mode != 'manual' OR NOT has_score_measure OR "
'(score_label IS NOT NULL AND length(trim(score_label)) > 0 '
'AND score_unit IS NOT NULL AND length(trim(score_unit)) > 0))',
'CHECK (default_target_time_seconds IS NULL OR '
'default_target_time_seconds > 0)',
'CHECK (default_target_reps IS NULL OR default_target_reps > 0)',
'CHECK (default_target_score IS NULL OR default_target_score > 0)',
'CHECK (default_target_score_time_ms IS NULL OR '
'default_target_score_time_ms > 0)',
];
}