From 0eaac20e7eeaf514cb00fcf873d4a72441ccac7a Mon Sep 17 00:00:00 2001 From: Brandon Presley Date: Sat, 11 Nov 2023 14:53:38 +1300 Subject: [PATCH] Expect exercises on plans to be non nullable --- lib/database.g.dart | 37 ++++++++++++++++++------------------- lib/plans.dart | 2 +- lib/plans_page.dart | 13 +++++++++++-- 3 files changed, 30 insertions(+), 22 deletions(-) diff --git a/lib/database.g.dart b/lib/database.g.dart index b37f84f..e0395e8 100644 --- a/lib/database.g.dart +++ b/lib/database.g.dart @@ -1248,8 +1248,8 @@ class $GymSetsTable extends GymSets with TableInfo<$GymSetsTable, GymSet> { class Plan extends DataClass implements Insertable { final int id; final String days; - final String? exercises; - Plan({required this.id, required this.days, this.exercises}); + final String exercises; + Plan({required this.id, required this.days, required this.exercises}); factory Plan.fromData(Map data, GeneratedDatabase db, {String? prefix}) { final effectivePrefix = prefix ?? ''; @@ -1259,7 +1259,7 @@ class Plan extends DataClass implements Insertable { days: const StringType() .mapFromDatabaseResponse(data['${effectivePrefix}days'])!, exercises: const StringType() - .mapFromDatabaseResponse(data['${effectivePrefix}exercises']), + .mapFromDatabaseResponse(data['${effectivePrefix}exercises'])!, ); } @override @@ -1267,9 +1267,7 @@ class Plan extends DataClass implements Insertable { final map = {}; map['id'] = Variable(id); map['days'] = Variable(days); - if (!nullToAbsent || exercises != null) { - map['exercises'] = Variable(exercises); - } + map['exercises'] = Variable(exercises); return map; } @@ -1277,9 +1275,7 @@ class Plan extends DataClass implements Insertable { return PlansCompanion( id: Value(id), days: Value(days), - exercises: exercises == null && nullToAbsent - ? const Value.absent() - : Value(exercises), + exercises: Value(exercises), ); } @@ -1289,7 +1285,7 @@ class Plan extends DataClass implements Insertable { return Plan( id: serializer.fromJson(json['id']), days: serializer.fromJson(json['days']), - exercises: serializer.fromJson(json['exercises']), + exercises: serializer.fromJson(json['exercises']), ); } @override @@ -1298,7 +1294,7 @@ class Plan extends DataClass implements Insertable { return { 'id': serializer.toJson(id), 'days': serializer.toJson(days), - 'exercises': serializer.toJson(exercises), + 'exercises': serializer.toJson(exercises), }; } @@ -1331,7 +1327,7 @@ class Plan extends DataClass implements Insertable { class PlansCompanion extends UpdateCompanion { final Value id; final Value days; - final Value exercises; + final Value exercises; const PlansCompanion({ this.id = const Value.absent(), this.days = const Value.absent(), @@ -1340,12 +1336,13 @@ class PlansCompanion extends UpdateCompanion { PlansCompanion.insert({ this.id = const Value.absent(), required String days, - this.exercises = const Value.absent(), - }) : days = Value(days); + required String exercises, + }) : days = Value(days), + exercises = Value(exercises); static Insertable custom({ Expression? id, Expression? days, - Expression? exercises, + Expression? exercises, }) { return RawValuesInsertable({ if (id != null) 'id': id, @@ -1355,7 +1352,7 @@ class PlansCompanion extends UpdateCompanion { } PlansCompanion copyWith( - {Value? id, Value? days, Value? exercises}) { + {Value? id, Value? days, Value? exercises}) { return PlansCompanion( id: id ?? this.id, days: days ?? this.days, @@ -1373,7 +1370,7 @@ class PlansCompanion extends UpdateCompanion { map['days'] = Variable(days.value); } if (exercises.present) { - map['exercises'] = Variable(exercises.value); + map['exercises'] = Variable(exercises.value); } return map; } @@ -1409,8 +1406,8 @@ class $PlansTable extends Plans with TableInfo<$PlansTable, Plan> { final VerificationMeta _exercisesMeta = const VerificationMeta('exercises'); @override late final GeneratedColumn exercises = GeneratedColumn( - 'exercises', aliasedName, true, - type: const StringType(), requiredDuringInsert: false); + 'exercises', aliasedName, false, + type: const StringType(), requiredDuringInsert: true); @override List get $columns => [id, days, exercises]; @override @@ -1434,6 +1431,8 @@ class $PlansTable extends Plans with TableInfo<$PlansTable, Plan> { if (data.containsKey('exercises')) { context.handle(_exercisesMeta, exercises.isAcceptableOrUnknown(data['exercises']!, _exercisesMeta)); + } else if (isInserting) { + context.missing(_exercisesMeta); } return context; } diff --git a/lib/plans.dart b/lib/plans.dart index 869b15f..736bd33 100644 --- a/lib/plans.dart +++ b/lib/plans.dart @@ -3,5 +3,5 @@ import 'package:moor/moor.dart'; class Plans extends Table { IntColumn get id => integer().autoIncrement()(); TextColumn get days => text()(); - TextColumn get exercises => text().nullable()(); + TextColumn get exercises => text()(); } diff --git a/lib/plans_page.dart b/lib/plans_page.dart index 3825875..18b20a4 100644 --- a/lib/plans_page.dart +++ b/lib/plans_page.dart @@ -65,6 +65,16 @@ class _PlansPageState extends State<_PlansPage> { builder: (context, snapshot) { final plans = snapshot.data; + if (snapshot.hasError) + return Center( + child: Padding( + padding: const EdgeInsets.all(16.0), + child: Text( + 'Error: ${snapshot.error}', + style: Theme.of(context).textTheme.headlineSmall, + )), + ); + if (plans == null) return const Center(child: CircularProgressIndicator()); @@ -73,8 +83,7 @@ class _PlansPageState extends State<_PlansPage> { itemBuilder: (context, index) { return ListTile( title: Text(plans[index].days.replaceAll(',', ', ')), - subtitle: Text( - plans[index].exercises?.replaceAll(',', ', ') ?? ''), + subtitle: Text(plans[index].exercises), onTap: () async { await Navigator.push( context,