imported excises, and modified seed/database to accomodate

This commit is contained in:
Joshua Burman 2025-01-05 22:01:38 -05:00
parent acab37eb60
commit a034c16160
22 changed files with 37983 additions and 187 deletions

22617
assets/exercises.json Normal file

File diff suppressed because it is too large Load Diff

View File

@ -35,7 +35,7 @@ class AppDatabase extends _$AppDatabase {
AppDatabase() : super(_openConnection());
@override
int get schemaVersion => 13;
int get schemaVersion => 19;
@override
MigrationStrategy get migration {
@ -75,8 +75,10 @@ class Sessions extends Table {
class SessionActivities extends Table {
IntColumn get id => integer().autoIncrement()();
IntColumn get sessionId => integer().references(Sessions, #id, onDelete: KeyAction.cascade)();
IntColumn get activityId => integer().references(Activities, #id, onDelete: KeyAction.cascade)();
IntColumn get sessionId =>
integer().references(Sessions, #id, onDelete: KeyAction.cascade)();
IntColumn get activityId =>
integer().references(Activities, #id, onDelete: KeyAction.cascade)();
IntColumn get position => integer()();
TextColumn get results => text().nullable()();
DateTimeColumn get createdAt =>
@ -87,31 +89,76 @@ enum ActivityCategories { fundamentals, conditioning, advanced, custom, pro }
enum ActivityType {
strength,
power,
conditioning,
hypertrophy,
endurance,
stability,
mobility,
flexibility,
rehabilitation,
technical
stretching,
plyometrics,
strongman,
powerlifting,
cardio,
olympicWeightlifting
}
enum ActivityLevel { beginner, intermediate, expert }
enum ActivityMechanic { compound, isolation }
enum ActivityEquipment {
bodyOnly,
machine,
other,
foamRoll,
kettlebells,
dumbbell,
cable,
barbell,
bands,
medicineBall,
exerciseBall,
eZCurlBar
}
enum ActivityMuscle {
abdominals,
hamstrings,
calves,
shoulders,
adductors,
glutes,
quadriceps,
biceps,
forearms,
abductors,
triceps,
chest,
lowerBack,
traps,
middleBack,
lats,
neck
}
class Activities extends Table {
IntColumn get id => integer().autoIncrement()();
TextColumn get title => text().withLength(min: 3, max: 32)();
TextColumn get type => textEnum<ActivityType>()();
TextColumn get description => text().named('body')();
TextColumn get category => textEnum<ActivityCategories>()();
TextColumn get title => text().withLength(min: 3, max: 100)();
TextColumn get type => textEnum<ActivityType>().nullable()();
TextColumn get description => text().named('body').nullable()();
TextColumn get category => textEnum<ActivityCategories>().nullable()();
// from exercises.json
TextColumn get force => text().nullable()();
TextColumn get level => textEnum<ActivityLevel>().nullable()();
TextColumn get mechanic => textEnum<ActivityMechanic>().nullable()();
TextColumn get equipment => textEnum<ActivityEquipment>().nullable()();
TextColumn get primaryMuscles => textEnum<ActivityMuscle>().nullable()();
TextColumn get secondaryMuscles => textEnum<ActivityMuscle>().nullable()();
DateTimeColumn get createdAt =>
dateTime().withDefault(Variable(DateTime.now()))();
}
class ActivityActions extends Table {
IntColumn get id => integer().autoIncrement()();
IntColumn get activityId => integer().references(Activities, #id, onDelete: KeyAction.cascade)();
IntColumn get actionId => integer().references(Actions, #id, onDelete: KeyAction.cascade)();
IntColumn get activityId =>
integer().references(Activities, #id, onDelete: KeyAction.cascade)();
IntColumn get actionId =>
integer().references(Actions, #id, onDelete: KeyAction.cascade)();
IntColumn get position => integer()();
DateTimeColumn get createdAt =>
dateTime().withDefault(Variable(DateTime.now()))();
@ -136,7 +183,8 @@ class ObjectMediaItems extends Table {
IntColumn get id => integer().autoIncrement()();
IntColumn get objectId => integer()();
TextColumn get objectType => textEnum<ObjectType>()();
IntColumn get mediaId => integer().references(MediaItems, #id, onDelete: KeyAction.cascade)();
IntColumn get mediaId =>
integer().references(MediaItems, #id, onDelete: KeyAction.cascade)();
DateTimeColumn get createdAt =>
dateTime().withDefault(Variable(DateTime.now()))();
}

View File

@ -447,29 +447,79 @@ class $ActivitiesTable extends Activities
late final GeneratedColumn<String> title = GeneratedColumn<String>(
'title', aliasedName, false,
additionalChecks:
GeneratedColumn.checkTextLength(minTextLength: 3, maxTextLength: 32),
GeneratedColumn.checkTextLength(minTextLength: 3, maxTextLength: 100),
type: DriftSqlType.string,
requiredDuringInsert: true);
static const VerificationMeta _typeMeta = const VerificationMeta('type');
@override
late final GeneratedColumnWithTypeConverter<ActivityType, String> type =
GeneratedColumn<String>('type', aliasedName, false,
type: DriftSqlType.string, requiredDuringInsert: true)
.withConverter<ActivityType>($ActivitiesTable.$convertertype);
late final GeneratedColumnWithTypeConverter<ActivityType?, String> type =
GeneratedColumn<String>('type', aliasedName, true,
type: DriftSqlType.string, requiredDuringInsert: false)
.withConverter<ActivityType?>($ActivitiesTable.$convertertypen);
static const VerificationMeta _descriptionMeta =
const VerificationMeta('description');
@override
late final GeneratedColumn<String> description = GeneratedColumn<String>(
'body', aliasedName, false,
type: DriftSqlType.string, requiredDuringInsert: true);
'body', aliasedName, true,
type: DriftSqlType.string, requiredDuringInsert: false);
static const VerificationMeta _categoryMeta =
const VerificationMeta('category');
@override
late final GeneratedColumnWithTypeConverter<ActivityCategories, String>
category = GeneratedColumn<String>('category', aliasedName, false,
type: DriftSqlType.string, requiredDuringInsert: true)
.withConverter<ActivityCategories>(
$ActivitiesTable.$convertercategory);
late final GeneratedColumnWithTypeConverter<ActivityCategories?, String>
category = GeneratedColumn<String>('category', aliasedName, true,
type: DriftSqlType.string, requiredDuringInsert: false)
.withConverter<ActivityCategories?>(
$ActivitiesTable.$convertercategoryn);
static const VerificationMeta _forceMeta = const VerificationMeta('force');
@override
late final GeneratedColumn<String> force = GeneratedColumn<String>(
'force', aliasedName, true,
type: DriftSqlType.string, requiredDuringInsert: false);
static const VerificationMeta _levelMeta = const VerificationMeta('level');
@override
late final GeneratedColumnWithTypeConverter<ActivityLevel?, String> level =
GeneratedColumn<String>('level', aliasedName, true,
type: DriftSqlType.string, requiredDuringInsert: false)
.withConverter<ActivityLevel?>($ActivitiesTable.$converterleveln);
static const VerificationMeta _mechanicMeta =
const VerificationMeta('mechanic');
@override
late final GeneratedColumnWithTypeConverter<ActivityMechanic?, String>
mechanic = GeneratedColumn<String>('mechanic', aliasedName, true,
type: DriftSqlType.string, requiredDuringInsert: false)
.withConverter<ActivityMechanic?>(
$ActivitiesTable.$convertermechanicn);
static const VerificationMeta _equipmentMeta =
const VerificationMeta('equipment');
@override
late final GeneratedColumnWithTypeConverter<ActivityEquipment?, String>
equipment = GeneratedColumn<String>('equipment', aliasedName, true,
type: DriftSqlType.string, requiredDuringInsert: false)
.withConverter<ActivityEquipment?>(
$ActivitiesTable.$converterequipmentn);
static const VerificationMeta _primaryMusclesMeta =
const VerificationMeta('primaryMuscles');
@override
late final GeneratedColumnWithTypeConverter<ActivityMuscle?, String>
primaryMuscles = GeneratedColumn<String>(
'primary_muscles', aliasedName, true,
type: DriftSqlType.string, requiredDuringInsert: false)
.withConverter<ActivityMuscle?>(
$ActivitiesTable.$converterprimaryMusclesn);
static const VerificationMeta _secondaryMusclesMeta =
const VerificationMeta('secondaryMuscles');
@override
late final GeneratedColumnWithTypeConverter<ActivityMuscle?, String>
secondaryMuscles = GeneratedColumn<String>(
'secondary_muscles', aliasedName, true,
type: DriftSqlType.string, requiredDuringInsert: false)
.withConverter<ActivityMuscle?>(
$ActivitiesTable.$convertersecondaryMusclesn);
static const VerificationMeta _imagesMeta = const VerificationMeta('images');
@override
late final GeneratedColumn<String> images = GeneratedColumn<String>(
'images', aliasedName, true,
type: DriftSqlType.string, requiredDuringInsert: false);
static const VerificationMeta _createdAtMeta =
const VerificationMeta('createdAt');
@override
@ -479,8 +529,21 @@ class $ActivitiesTable extends Activities
requiredDuringInsert: false,
defaultValue: Variable(DateTime.now()));
@override
List<GeneratedColumn> get $columns =>
[id, title, type, description, category, createdAt];
List<GeneratedColumn> get $columns => [
id,
title,
type,
description,
category,
force,
level,
mechanic,
equipment,
primaryMuscles,
secondaryMuscles,
images,
createdAt
];
@override
String get aliasedName => _alias ?? actualTableName;
@override
@ -504,10 +567,21 @@ class $ActivitiesTable extends Activities
if (data.containsKey('body')) {
context.handle(_descriptionMeta,
description.isAcceptableOrUnknown(data['body']!, _descriptionMeta));
} else if (isInserting) {
context.missing(_descriptionMeta);
}
context.handle(_categoryMeta, const VerificationResult.success());
if (data.containsKey('force')) {
context.handle(
_forceMeta, force.isAcceptableOrUnknown(data['force']!, _forceMeta));
}
context.handle(_levelMeta, const VerificationResult.success());
context.handle(_mechanicMeta, const VerificationResult.success());
context.handle(_equipmentMeta, const VerificationResult.success());
context.handle(_primaryMusclesMeta, const VerificationResult.success());
context.handle(_secondaryMusclesMeta, const VerificationResult.success());
if (data.containsKey('images')) {
context.handle(_imagesMeta,
images.isAcceptableOrUnknown(data['images']!, _imagesMeta));
}
if (data.containsKey('created_at')) {
context.handle(_createdAtMeta,
createdAt.isAcceptableOrUnknown(data['created_at']!, _createdAtMeta));
@ -525,13 +599,33 @@ class $ActivitiesTable extends Activities
.read(DriftSqlType.int, data['${effectivePrefix}id'])!,
title: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}title'])!,
type: $ActivitiesTable.$convertertype.fromSql(attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}type'])!),
description: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}body'])!,
category: $ActivitiesTable.$convertercategory.fromSql(attachedDatabase
type: $ActivitiesTable.$convertertypen.fromSql(attachedDatabase
.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}category'])!),
.read(DriftSqlType.string, data['${effectivePrefix}type'])),
description: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}body']),
category: $ActivitiesTable.$convertercategoryn.fromSql(attachedDatabase
.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}category'])),
force: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}force']),
level: $ActivitiesTable.$converterleveln.fromSql(attachedDatabase
.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}level'])),
mechanic: $ActivitiesTable.$convertermechanicn.fromSql(attachedDatabase
.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}mechanic'])),
equipment: $ActivitiesTable.$converterequipmentn.fromSql(attachedDatabase
.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}equipment'])),
primaryMuscles: $ActivitiesTable.$converterprimaryMusclesn.fromSql(
attachedDatabase.typeMapping.read(
DriftSqlType.string, data['${effectivePrefix}primary_muscles'])),
secondaryMuscles: $ActivitiesTable.$convertersecondaryMusclesn.fromSql(
attachedDatabase.typeMapping.read(DriftSqlType.string,
data['${effectivePrefix}secondary_muscles'])),
images: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}images']),
createdAt: attachedDatabase.typeMapping
.read(DriftSqlType.dateTime, data['${effectivePrefix}created_at'])!,
);
@ -544,38 +638,110 @@ class $ActivitiesTable extends Activities
static JsonTypeConverter2<ActivityType, String, String> $convertertype =
const EnumNameConverter<ActivityType>(ActivityType.values);
static JsonTypeConverter2<ActivityType?, String?, String?> $convertertypen =
JsonTypeConverter2.asNullable($convertertype);
static JsonTypeConverter2<ActivityCategories, String, String>
$convertercategory =
const EnumNameConverter<ActivityCategories>(ActivityCategories.values);
static JsonTypeConverter2<ActivityCategories?, String?, String?>
$convertercategoryn = JsonTypeConverter2.asNullable($convertercategory);
static JsonTypeConverter2<ActivityLevel, String, String> $converterlevel =
const EnumNameConverter<ActivityLevel>(ActivityLevel.values);
static JsonTypeConverter2<ActivityLevel?, String?, String?> $converterleveln =
JsonTypeConverter2.asNullable($converterlevel);
static JsonTypeConverter2<ActivityMechanic, String, String>
$convertermechanic =
const EnumNameConverter<ActivityMechanic>(ActivityMechanic.values);
static JsonTypeConverter2<ActivityMechanic?, String?, String?>
$convertermechanicn = JsonTypeConverter2.asNullable($convertermechanic);
static JsonTypeConverter2<ActivityEquipment, String, String>
$converterequipment =
const EnumNameConverter<ActivityEquipment>(ActivityEquipment.values);
static JsonTypeConverter2<ActivityEquipment?, String?, String?>
$converterequipmentn = JsonTypeConverter2.asNullable($converterequipment);
static JsonTypeConverter2<ActivityMuscle, String, String>
$converterprimaryMuscles =
const EnumNameConverter<ActivityMuscle>(ActivityMuscle.values);
static JsonTypeConverter2<ActivityMuscle?, String?, String?>
$converterprimaryMusclesn =
JsonTypeConverter2.asNullable($converterprimaryMuscles);
static JsonTypeConverter2<ActivityMuscle, String, String>
$convertersecondaryMuscles =
const EnumNameConverter<ActivityMuscle>(ActivityMuscle.values);
static JsonTypeConverter2<ActivityMuscle?, String?, String?>
$convertersecondaryMusclesn =
JsonTypeConverter2.asNullable($convertersecondaryMuscles);
}
class Activity extends DataClass implements Insertable<Activity> {
final int id;
final String title;
final ActivityType type;
final String description;
final ActivityCategories category;
final ActivityType? type;
final String? description;
final ActivityCategories? category;
final String? force;
final ActivityLevel? level;
final ActivityMechanic? mechanic;
final ActivityEquipment? equipment;
final ActivityMuscle? primaryMuscles;
final ActivityMuscle? secondaryMuscles;
final String? images;
final DateTime createdAt;
const Activity(
{required this.id,
required this.title,
required this.type,
required this.description,
required this.category,
this.type,
this.description,
this.category,
this.force,
this.level,
this.mechanic,
this.equipment,
this.primaryMuscles,
this.secondaryMuscles,
this.images,
required this.createdAt});
@override
Map<String, Expression> toColumns(bool nullToAbsent) {
final map = <String, Expression>{};
map['id'] = Variable<int>(id);
map['title'] = Variable<String>(title);
{
if (!nullToAbsent || type != null) {
map['type'] =
Variable<String>($ActivitiesTable.$convertertype.toSql(type));
Variable<String>($ActivitiesTable.$convertertypen.toSql(type));
}
map['body'] = Variable<String>(description);
{
map['category'] =
Variable<String>($ActivitiesTable.$convertercategory.toSql(category));
if (!nullToAbsent || description != null) {
map['body'] = Variable<String>(description);
}
if (!nullToAbsent || category != null) {
map['category'] = Variable<String>(
$ActivitiesTable.$convertercategoryn.toSql(category));
}
if (!nullToAbsent || force != null) {
map['force'] = Variable<String>(force);
}
if (!nullToAbsent || level != null) {
map['level'] =
Variable<String>($ActivitiesTable.$converterleveln.toSql(level));
}
if (!nullToAbsent || mechanic != null) {
map['mechanic'] = Variable<String>(
$ActivitiesTable.$convertermechanicn.toSql(mechanic));
}
if (!nullToAbsent || equipment != null) {
map['equipment'] = Variable<String>(
$ActivitiesTable.$converterequipmentn.toSql(equipment));
}
if (!nullToAbsent || primaryMuscles != null) {
map['primary_muscles'] = Variable<String>(
$ActivitiesTable.$converterprimaryMusclesn.toSql(primaryMuscles));
}
if (!nullToAbsent || secondaryMuscles != null) {
map['secondary_muscles'] = Variable<String>(
$ActivitiesTable.$convertersecondaryMusclesn.toSql(secondaryMuscles));
}
if (!nullToAbsent || images != null) {
map['images'] = Variable<String>(images);
}
map['created_at'] = Variable<DateTime>(createdAt);
return map;
@ -585,9 +751,31 @@ class Activity extends DataClass implements Insertable<Activity> {
return ActivitiesCompanion(
id: Value(id),
title: Value(title),
type: Value(type),
description: Value(description),
category: Value(category),
type: type == null && nullToAbsent ? const Value.absent() : Value(type),
description: description == null && nullToAbsent
? const Value.absent()
: Value(description),
category: category == null && nullToAbsent
? const Value.absent()
: Value(category),
force:
force == null && nullToAbsent ? const Value.absent() : Value(force),
level:
level == null && nullToAbsent ? const Value.absent() : Value(level),
mechanic: mechanic == null && nullToAbsent
? const Value.absent()
: Value(mechanic),
equipment: equipment == null && nullToAbsent
? const Value.absent()
: Value(equipment),
primaryMuscles: primaryMuscles == null && nullToAbsent
? const Value.absent()
: Value(primaryMuscles),
secondaryMuscles: secondaryMuscles == null && nullToAbsent
? const Value.absent()
: Value(secondaryMuscles),
images:
images == null && nullToAbsent ? const Value.absent() : Value(images),
createdAt: Value(createdAt),
);
}
@ -598,11 +786,23 @@ class Activity extends DataClass implements Insertable<Activity> {
return Activity(
id: serializer.fromJson<int>(json['id']),
title: serializer.fromJson<String>(json['title']),
type: $ActivitiesTable.$convertertype
.fromJson(serializer.fromJson<String>(json['type'])),
description: serializer.fromJson<String>(json['description']),
category: $ActivitiesTable.$convertercategory
.fromJson(serializer.fromJson<String>(json['category'])),
type: $ActivitiesTable.$convertertypen
.fromJson(serializer.fromJson<String?>(json['type'])),
description: serializer.fromJson<String?>(json['description']),
category: $ActivitiesTable.$convertercategoryn
.fromJson(serializer.fromJson<String?>(json['category'])),
force: serializer.fromJson<String?>(json['force']),
level: $ActivitiesTable.$converterleveln
.fromJson(serializer.fromJson<String?>(json['level'])),
mechanic: $ActivitiesTable.$convertermechanicn
.fromJson(serializer.fromJson<String?>(json['mechanic'])),
equipment: $ActivitiesTable.$converterequipmentn
.fromJson(serializer.fromJson<String?>(json['equipment'])),
primaryMuscles: $ActivitiesTable.$converterprimaryMusclesn
.fromJson(serializer.fromJson<String?>(json['primaryMuscles'])),
secondaryMuscles: $ActivitiesTable.$convertersecondaryMusclesn
.fromJson(serializer.fromJson<String?>(json['secondaryMuscles'])),
images: serializer.fromJson<String?>(json['images']),
createdAt: serializer.fromJson<DateTime>(json['createdAt']),
);
}
@ -613,10 +813,23 @@ class Activity extends DataClass implements Insertable<Activity> {
'id': serializer.toJson<int>(id),
'title': serializer.toJson<String>(title),
'type': serializer
.toJson<String>($ActivitiesTable.$convertertype.toJson(type)),
'description': serializer.toJson<String>(description),
'category': serializer
.toJson<String>($ActivitiesTable.$convertercategory.toJson(category)),
.toJson<String?>($ActivitiesTable.$convertertypen.toJson(type)),
'description': serializer.toJson<String?>(description),
'category': serializer.toJson<String?>(
$ActivitiesTable.$convertercategoryn.toJson(category)),
'force': serializer.toJson<String?>(force),
'level': serializer
.toJson<String?>($ActivitiesTable.$converterleveln.toJson(level)),
'mechanic': serializer.toJson<String?>(
$ActivitiesTable.$convertermechanicn.toJson(mechanic)),
'equipment': serializer.toJson<String?>(
$ActivitiesTable.$converterequipmentn.toJson(equipment)),
'primaryMuscles': serializer.toJson<String?>(
$ActivitiesTable.$converterprimaryMusclesn.toJson(primaryMuscles)),
'secondaryMuscles': serializer.toJson<String?>($ActivitiesTable
.$convertersecondaryMusclesn
.toJson(secondaryMuscles)),
'images': serializer.toJson<String?>(images),
'createdAt': serializer.toJson<DateTime>(createdAt),
};
}
@ -624,16 +837,33 @@ class Activity extends DataClass implements Insertable<Activity> {
Activity copyWith(
{int? id,
String? title,
ActivityType? type,
String? description,
ActivityCategories? category,
Value<ActivityType?> type = const Value.absent(),
Value<String?> description = const Value.absent(),
Value<ActivityCategories?> category = const Value.absent(),
Value<String?> force = const Value.absent(),
Value<ActivityLevel?> level = const Value.absent(),
Value<ActivityMechanic?> mechanic = const Value.absent(),
Value<ActivityEquipment?> equipment = const Value.absent(),
Value<ActivityMuscle?> primaryMuscles = const Value.absent(),
Value<ActivityMuscle?> secondaryMuscles = const Value.absent(),
Value<String?> images = const Value.absent(),
DateTime? createdAt}) =>
Activity(
id: id ?? this.id,
title: title ?? this.title,
type: type ?? this.type,
description: description ?? this.description,
category: category ?? this.category,
type: type.present ? type.value : this.type,
description: description.present ? description.value : this.description,
category: category.present ? category.value : this.category,
force: force.present ? force.value : this.force,
level: level.present ? level.value : this.level,
mechanic: mechanic.present ? mechanic.value : this.mechanic,
equipment: equipment.present ? equipment.value : this.equipment,
primaryMuscles:
primaryMuscles.present ? primaryMuscles.value : this.primaryMuscles,
secondaryMuscles: secondaryMuscles.present
? secondaryMuscles.value
: this.secondaryMuscles,
images: images.present ? images.value : this.images,
createdAt: createdAt ?? this.createdAt,
);
Activity copyWithCompanion(ActivitiesCompanion data) {
@ -644,6 +874,17 @@ class Activity extends DataClass implements Insertable<Activity> {
description:
data.description.present ? data.description.value : this.description,
category: data.category.present ? data.category.value : this.category,
force: data.force.present ? data.force.value : this.force,
level: data.level.present ? data.level.value : this.level,
mechanic: data.mechanic.present ? data.mechanic.value : this.mechanic,
equipment: data.equipment.present ? data.equipment.value : this.equipment,
primaryMuscles: data.primaryMuscles.present
? data.primaryMuscles.value
: this.primaryMuscles,
secondaryMuscles: data.secondaryMuscles.present
? data.secondaryMuscles.value
: this.secondaryMuscles,
images: data.images.present ? data.images.value : this.images,
createdAt: data.createdAt.present ? data.createdAt.value : this.createdAt,
);
}
@ -656,14 +897,33 @@ class Activity extends DataClass implements Insertable<Activity> {
..write('type: $type, ')
..write('description: $description, ')
..write('category: $category, ')
..write('force: $force, ')
..write('level: $level, ')
..write('mechanic: $mechanic, ')
..write('equipment: $equipment, ')
..write('primaryMuscles: $primaryMuscles, ')
..write('secondaryMuscles: $secondaryMuscles, ')
..write('images: $images, ')
..write('createdAt: $createdAt')
..write(')'))
.toString();
}
@override
int get hashCode =>
Object.hash(id, title, type, description, category, createdAt);
int get hashCode => Object.hash(
id,
title,
type,
description,
category,
force,
level,
mechanic,
equipment,
primaryMuscles,
secondaryMuscles,
images,
createdAt);
@override
bool operator ==(Object other) =>
identical(this, other) ||
@ -673,15 +933,29 @@ class Activity extends DataClass implements Insertable<Activity> {
other.type == this.type &&
other.description == this.description &&
other.category == this.category &&
other.force == this.force &&
other.level == this.level &&
other.mechanic == this.mechanic &&
other.equipment == this.equipment &&
other.primaryMuscles == this.primaryMuscles &&
other.secondaryMuscles == this.secondaryMuscles &&
other.images == this.images &&
other.createdAt == this.createdAt);
}
class ActivitiesCompanion extends UpdateCompanion<Activity> {
final Value<int> id;
final Value<String> title;
final Value<ActivityType> type;
final Value<String> description;
final Value<ActivityCategories> category;
final Value<ActivityType?> type;
final Value<String?> description;
final Value<ActivityCategories?> category;
final Value<String?> force;
final Value<ActivityLevel?> level;
final Value<ActivityMechanic?> mechanic;
final Value<ActivityEquipment?> equipment;
final Value<ActivityMuscle?> primaryMuscles;
final Value<ActivityMuscle?> secondaryMuscles;
final Value<String?> images;
final Value<DateTime> createdAt;
const ActivitiesCompanion({
this.id = const Value.absent(),
@ -689,25 +963,43 @@ class ActivitiesCompanion extends UpdateCompanion<Activity> {
this.type = const Value.absent(),
this.description = const Value.absent(),
this.category = const Value.absent(),
this.force = const Value.absent(),
this.level = const Value.absent(),
this.mechanic = const Value.absent(),
this.equipment = const Value.absent(),
this.primaryMuscles = const Value.absent(),
this.secondaryMuscles = const Value.absent(),
this.images = const Value.absent(),
this.createdAt = const Value.absent(),
});
ActivitiesCompanion.insert({
this.id = const Value.absent(),
required String title,
required ActivityType type,
required String description,
required ActivityCategories category,
this.type = const Value.absent(),
this.description = const Value.absent(),
this.category = const Value.absent(),
this.force = const Value.absent(),
this.level = const Value.absent(),
this.mechanic = const Value.absent(),
this.equipment = const Value.absent(),
this.primaryMuscles = const Value.absent(),
this.secondaryMuscles = const Value.absent(),
this.images = const Value.absent(),
this.createdAt = const Value.absent(),
}) : title = Value(title),
type = Value(type),
description = Value(description),
category = Value(category);
}) : title = Value(title);
static Insertable<Activity> custom({
Expression<int>? id,
Expression<String>? title,
Expression<String>? type,
Expression<String>? description,
Expression<String>? category,
Expression<String>? force,
Expression<String>? level,
Expression<String>? mechanic,
Expression<String>? equipment,
Expression<String>? primaryMuscles,
Expression<String>? secondaryMuscles,
Expression<String>? images,
Expression<DateTime>? createdAt,
}) {
return RawValuesInsertable({
@ -716,6 +1008,13 @@ class ActivitiesCompanion extends UpdateCompanion<Activity> {
if (type != null) 'type': type,
if (description != null) 'body': description,
if (category != null) 'category': category,
if (force != null) 'force': force,
if (level != null) 'level': level,
if (mechanic != null) 'mechanic': mechanic,
if (equipment != null) 'equipment': equipment,
if (primaryMuscles != null) 'primary_muscles': primaryMuscles,
if (secondaryMuscles != null) 'secondary_muscles': secondaryMuscles,
if (images != null) 'images': images,
if (createdAt != null) 'created_at': createdAt,
});
}
@ -723,9 +1022,16 @@ class ActivitiesCompanion extends UpdateCompanion<Activity> {
ActivitiesCompanion copyWith(
{Value<int>? id,
Value<String>? title,
Value<ActivityType>? type,
Value<String>? description,
Value<ActivityCategories>? category,
Value<ActivityType?>? type,
Value<String?>? description,
Value<ActivityCategories?>? category,
Value<String?>? force,
Value<ActivityLevel?>? level,
Value<ActivityMechanic?>? mechanic,
Value<ActivityEquipment?>? equipment,
Value<ActivityMuscle?>? primaryMuscles,
Value<ActivityMuscle?>? secondaryMuscles,
Value<String?>? images,
Value<DateTime>? createdAt}) {
return ActivitiesCompanion(
id: id ?? this.id,
@ -733,6 +1039,13 @@ class ActivitiesCompanion extends UpdateCompanion<Activity> {
type: type ?? this.type,
description: description ?? this.description,
category: category ?? this.category,
force: force ?? this.force,
level: level ?? this.level,
mechanic: mechanic ?? this.mechanic,
equipment: equipment ?? this.equipment,
primaryMuscles: primaryMuscles ?? this.primaryMuscles,
secondaryMuscles: secondaryMuscles ?? this.secondaryMuscles,
images: images ?? this.images,
createdAt: createdAt ?? this.createdAt,
);
}
@ -748,14 +1061,42 @@ class ActivitiesCompanion extends UpdateCompanion<Activity> {
}
if (type.present) {
map['type'] =
Variable<String>($ActivitiesTable.$convertertype.toSql(type.value));
Variable<String>($ActivitiesTable.$convertertypen.toSql(type.value));
}
if (description.present) {
map['body'] = Variable<String>(description.value);
}
if (category.present) {
map['category'] = Variable<String>(
$ActivitiesTable.$convertercategory.toSql(category.value));
$ActivitiesTable.$convertercategoryn.toSql(category.value));
}
if (force.present) {
map['force'] = Variable<String>(force.value);
}
if (level.present) {
map['level'] = Variable<String>(
$ActivitiesTable.$converterleveln.toSql(level.value));
}
if (mechanic.present) {
map['mechanic'] = Variable<String>(
$ActivitiesTable.$convertermechanicn.toSql(mechanic.value));
}
if (equipment.present) {
map['equipment'] = Variable<String>(
$ActivitiesTable.$converterequipmentn.toSql(equipment.value));
}
if (primaryMuscles.present) {
map['primary_muscles'] = Variable<String>($ActivitiesTable
.$converterprimaryMusclesn
.toSql(primaryMuscles.value));
}
if (secondaryMuscles.present) {
map['secondary_muscles'] = Variable<String>($ActivitiesTable
.$convertersecondaryMusclesn
.toSql(secondaryMuscles.value));
}
if (images.present) {
map['images'] = Variable<String>(images.value);
}
if (createdAt.present) {
map['created_at'] = Variable<DateTime>(createdAt.value);
@ -771,6 +1112,13 @@ class ActivitiesCompanion extends UpdateCompanion<Activity> {
..write('type: $type, ')
..write('description: $description, ')
..write('category: $category, ')
..write('force: $force, ')
..write('level: $level, ')
..write('mechanic: $mechanic, ')
..write('equipment: $equipment, ')
..write('primaryMuscles: $primaryMuscles, ')
..write('secondaryMuscles: $secondaryMuscles, ')
..write('images: $images, ')
..write('createdAt: $createdAt')
..write(')'))
.toString();
@ -2760,17 +3108,31 @@ typedef $$SessionsTableProcessedTableManager = ProcessedTableManager<
typedef $$ActivitiesTableCreateCompanionBuilder = ActivitiesCompanion Function({
Value<int> id,
required String title,
required ActivityType type,
required String description,
required ActivityCategories category,
Value<ActivityType?> type,
Value<String?> description,
Value<ActivityCategories?> category,
Value<String?> force,
Value<ActivityLevel?> level,
Value<ActivityMechanic?> mechanic,
Value<ActivityEquipment?> equipment,
Value<ActivityMuscle?> primaryMuscles,
Value<ActivityMuscle?> secondaryMuscles,
Value<String?> images,
Value<DateTime> createdAt,
});
typedef $$ActivitiesTableUpdateCompanionBuilder = ActivitiesCompanion Function({
Value<int> id,
Value<String> title,
Value<ActivityType> type,
Value<String> description,
Value<ActivityCategories> category,
Value<ActivityType?> type,
Value<String?> description,
Value<ActivityCategories?> category,
Value<String?> force,
Value<ActivityLevel?> level,
Value<ActivityMechanic?> mechanic,
Value<ActivityEquipment?> equipment,
Value<ActivityMuscle?> primaryMuscles,
Value<ActivityMuscle?> secondaryMuscles,
Value<String?> images,
Value<DateTime> createdAt,
});
@ -2828,19 +3190,51 @@ class $$ActivitiesTableFilterComposer
ColumnFilters<String> get title => $composableBuilder(
column: $table.title, builder: (column) => ColumnFilters(column));
ColumnWithTypeConverterFilters<ActivityType, ActivityType, String> get type =>
$composableBuilder(
ColumnWithTypeConverterFilters<ActivityType?, ActivityType, String>
get type => $composableBuilder(
column: $table.type,
builder: (column) => ColumnWithTypeConverterFilters(column));
ColumnFilters<String> get description => $composableBuilder(
column: $table.description, builder: (column) => ColumnFilters(column));
ColumnWithTypeConverterFilters<ActivityCategories, ActivityCategories, String>
ColumnWithTypeConverterFilters<ActivityCategories?, ActivityCategories,
String>
get category => $composableBuilder(
column: $table.category,
builder: (column) => ColumnWithTypeConverterFilters(column));
ColumnFilters<String> get force => $composableBuilder(
column: $table.force, builder: (column) => ColumnFilters(column));
ColumnWithTypeConverterFilters<ActivityLevel?, ActivityLevel, String>
get level => $composableBuilder(
column: $table.level,
builder: (column) => ColumnWithTypeConverterFilters(column));
ColumnWithTypeConverterFilters<ActivityMechanic?, ActivityMechanic, String>
get mechanic => $composableBuilder(
column: $table.mechanic,
builder: (column) => ColumnWithTypeConverterFilters(column));
ColumnWithTypeConverterFilters<ActivityEquipment?, ActivityEquipment, String>
get equipment => $composableBuilder(
column: $table.equipment,
builder: (column) => ColumnWithTypeConverterFilters(column));
ColumnWithTypeConverterFilters<ActivityMuscle?, ActivityMuscle, String>
get primaryMuscles => $composableBuilder(
column: $table.primaryMuscles,
builder: (column) => ColumnWithTypeConverterFilters(column));
ColumnWithTypeConverterFilters<ActivityMuscle?, ActivityMuscle, String>
get secondaryMuscles => $composableBuilder(
column: $table.secondaryMuscles,
builder: (column) => ColumnWithTypeConverterFilters(column));
ColumnFilters<String> get images => $composableBuilder(
column: $table.images, builder: (column) => ColumnFilters(column));
ColumnFilters<DateTime> get createdAt => $composableBuilder(
column: $table.createdAt, builder: (column) => ColumnFilters(column));
@ -2911,6 +3305,29 @@ class $$ActivitiesTableOrderingComposer
ColumnOrderings<String> get category => $composableBuilder(
column: $table.category, builder: (column) => ColumnOrderings(column));
ColumnOrderings<String> get force => $composableBuilder(
column: $table.force, builder: (column) => ColumnOrderings(column));
ColumnOrderings<String> get level => $composableBuilder(
column: $table.level, builder: (column) => ColumnOrderings(column));
ColumnOrderings<String> get mechanic => $composableBuilder(
column: $table.mechanic, builder: (column) => ColumnOrderings(column));
ColumnOrderings<String> get equipment => $composableBuilder(
column: $table.equipment, builder: (column) => ColumnOrderings(column));
ColumnOrderings<String> get primaryMuscles => $composableBuilder(
column: $table.primaryMuscles,
builder: (column) => ColumnOrderings(column));
ColumnOrderings<String> get secondaryMuscles => $composableBuilder(
column: $table.secondaryMuscles,
builder: (column) => ColumnOrderings(column));
ColumnOrderings<String> get images => $composableBuilder(
column: $table.images, builder: (column) => ColumnOrderings(column));
ColumnOrderings<DateTime> get createdAt => $composableBuilder(
column: $table.createdAt, builder: (column) => ColumnOrderings(column));
}
@ -2930,15 +3347,38 @@ class $$ActivitiesTableAnnotationComposer
GeneratedColumn<String> get title =>
$composableBuilder(column: $table.title, builder: (column) => column);
GeneratedColumnWithTypeConverter<ActivityType, String> get type =>
GeneratedColumnWithTypeConverter<ActivityType?, String> get type =>
$composableBuilder(column: $table.type, builder: (column) => column);
GeneratedColumn<String> get description => $composableBuilder(
column: $table.description, builder: (column) => column);
GeneratedColumnWithTypeConverter<ActivityCategories, String> get category =>
GeneratedColumnWithTypeConverter<ActivityCategories?, String> get category =>
$composableBuilder(column: $table.category, builder: (column) => column);
GeneratedColumn<String> get force =>
$composableBuilder(column: $table.force, builder: (column) => column);
GeneratedColumnWithTypeConverter<ActivityLevel?, String> get level =>
$composableBuilder(column: $table.level, builder: (column) => column);
GeneratedColumnWithTypeConverter<ActivityMechanic?, String> get mechanic =>
$composableBuilder(column: $table.mechanic, builder: (column) => column);
GeneratedColumnWithTypeConverter<ActivityEquipment?, String> get equipment =>
$composableBuilder(column: $table.equipment, builder: (column) => column);
GeneratedColumnWithTypeConverter<ActivityMuscle?, String>
get primaryMuscles => $composableBuilder(
column: $table.primaryMuscles, builder: (column) => column);
GeneratedColumnWithTypeConverter<ActivityMuscle?, String>
get secondaryMuscles => $composableBuilder(
column: $table.secondaryMuscles, builder: (column) => column);
GeneratedColumn<String> get images =>
$composableBuilder(column: $table.images, builder: (column) => column);
GeneratedColumn<DateTime> get createdAt =>
$composableBuilder(column: $table.createdAt, builder: (column) => column);
@ -3012,9 +3452,16 @@ class $$ActivitiesTableTableManager extends RootTableManager<
updateCompanionCallback: ({
Value<int> id = const Value.absent(),
Value<String> title = const Value.absent(),
Value<ActivityType> type = const Value.absent(),
Value<String> description = const Value.absent(),
Value<ActivityCategories> category = const Value.absent(),
Value<ActivityType?> type = const Value.absent(),
Value<String?> description = const Value.absent(),
Value<ActivityCategories?> category = const Value.absent(),
Value<String?> force = const Value.absent(),
Value<ActivityLevel?> level = const Value.absent(),
Value<ActivityMechanic?> mechanic = const Value.absent(),
Value<ActivityEquipment?> equipment = const Value.absent(),
Value<ActivityMuscle?> primaryMuscles = const Value.absent(),
Value<ActivityMuscle?> secondaryMuscles = const Value.absent(),
Value<String?> images = const Value.absent(),
Value<DateTime> createdAt = const Value.absent(),
}) =>
ActivitiesCompanion(
@ -3023,14 +3470,28 @@ class $$ActivitiesTableTableManager extends RootTableManager<
type: type,
description: description,
category: category,
force: force,
level: level,
mechanic: mechanic,
equipment: equipment,
primaryMuscles: primaryMuscles,
secondaryMuscles: secondaryMuscles,
images: images,
createdAt: createdAt,
),
createCompanionCallback: ({
Value<int> id = const Value.absent(),
required String title,
required ActivityType type,
required String description,
required ActivityCategories category,
Value<ActivityType?> type = const Value.absent(),
Value<String?> description = const Value.absent(),
Value<ActivityCategories?> category = const Value.absent(),
Value<String?> force = const Value.absent(),
Value<ActivityLevel?> level = const Value.absent(),
Value<ActivityMechanic?> mechanic = const Value.absent(),
Value<ActivityEquipment?> equipment = const Value.absent(),
Value<ActivityMuscle?> primaryMuscles = const Value.absent(),
Value<ActivityMuscle?> secondaryMuscles = const Value.absent(),
Value<String?> images = const Value.absent(),
Value<DateTime> createdAt = const Value.absent(),
}) =>
ActivitiesCompanion.insert(
@ -3039,6 +3500,13 @@ class $$ActivitiesTableTableManager extends RootTableManager<
type: type,
description: description,
category: category,
force: force,
level: level,
mechanic: mechanic,
equipment: equipment,
primaryMuscles: primaryMuscles,
secondaryMuscles: secondaryMuscles,
images: images,
createdAt: createdAt,
),
withReferenceMapper: (p0) => p0

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,5 +1,7 @@
import 'dart:convert';
import 'dart:math';
import 'package:dart_casing/dart_casing.dart';
import 'package:flutter/services.dart' as root_bundle;
import 'package:drift/drift.dart';
import 'package:sendtrain/database/database.dart';
@ -52,6 +54,93 @@ Future<void> seedDb(AppDatabase database) async {
final int totalMedia = 5;
final random = Random();
// we gotta build all the activities!
final jsondata =
await root_bundle.rootBundle.loadString('assets/exercises.json');
final exercises = json.decode(jsondata);
List<int> activityIds = [];
for (int i = 0; i < exercises.length; i++) {
var exercise = exercises[i];
var images = [];
if (exercise['images'] != null) {
for (int j = 0; j < exercise['images'].length; j++) {
var image = exercise['images'][j];
images.add(
"https://raw.githubusercontent.com/yuhonas/free-exercise-db/main/exercises/$image");
}
}
Map<Symbol, Value> payload = {
Symbol('title'): Value<String>(exercise['name']),
Symbol('description'): Value<String>(exercise['instructions'].toString()),
Symbol('force'): Value<String>(exercise['force'] ?? "")
};
// well this fucking sucks
if (exercise['category'] != null) {
payload[Symbol('type')] = Value<ActivityType>(ActivityType.values
.firstWhere((e) =>
e.toString() ==
"ActivityType.${Casing.camelCase(exercise['category'])}"));
}
if (exercise['level'] != null) {
payload[Symbol('level')] = Value<ActivityLevel>(ActivityLevel.values
.firstWhere((e) =>
e.toString() ==
"ActivityLevel.${Casing.camelCase(exercise['level'])}"));
}
if (exercise['mechanic'] != null) {
payload[Symbol('mechanic')] = Value<ActivityMechanic>(
ActivityMechanic.values.firstWhere((e) =>
e.toString() ==
"ActivityMechanic.${Casing.camelCase(exercise['mechanic'])}"));
}
if (exercise['equipment'] != null) {
payload[Symbol('equipment')] = Value<ActivityEquipment>(
ActivityEquipment.values.firstWhere((e) =>
e.toString() ==
"ActivityEquipment.${Casing.camelCase(exercise['equipment'])}"));
}
if (exercise['primaryMuscles'].isNotEmpty) {
payload[Symbol('primaryMuscles')] = Value<ActivityMuscle>(
ActivityMuscle.values.firstWhere((e) =>
e.toString() ==
"ActivityMuscle.${Casing.camelCase(exercise['primaryMuscles'].first)}"));
}
if (exercise['secondaryMuscles'].isNotEmpty) {
payload[Symbol('secondaryMuscles')] = Value<ActivityMuscle>(
ActivityMuscle.values.firstWhere((e) =>
e.toString() ==
"ActivityMuscle.${Casing.camelCase(exercise['secondaryMuscles'].first)}"));
}
activityIds.add(await database
.into(database.activities)
.insert(Function.apply(ActivitiesCompanion.new, [], payload))
.then((activityId) async {
for (int m = 0; m < images.length; m++) {
final mediaItem = images[m];
await database
.into(database.mediaItems)
.insert(MediaItemsCompanion.insert(
title: 'Media title $m',
description:
'Media description $m Beta pully beta beta pinch one arm crimpy. Futuristic pinch, dyno dynamic drop knee climb. Climbing ondra slopey onsight beta ondra power endurance.',
reference: mediaItem,
type: MediaType.image))
.then((mediaId) async {
await database.into(database.objectMediaItems).insert(
ObjectMediaItemsCompanion.insert(
objectId: activityId,
mediaId: mediaId,
objectType: ObjectType.activities));
});
}
return activityId;
}));
}
// seed loop
for (int i = 0; i < totalSessions; i++) {
// session things
@ -67,87 +156,40 @@ Future<void> seedDb(AppDatabase database) async {
content: sessionValue[1],
status: status,
address: Value(sessionValue[2]),
achievements: Value("[\"achievement 1\", \"achievement 2\", \"achievement 3\"]"),
achievements: Value(
"[\"achievement 1\", \"achievement 2\", \"achievement 3\"]"),
date: Value(DateTime.now())))
.then((sessionId) async {
// activities things
for (int j = 0; j <= random.nextInt(totalActivities); j++) {
int activityId = random.nextInt(activityIds.length);
activityIds.removeAt(activityId);
await database
.into(database.activities)
.insert(ActivitiesCompanion.insert(
title: "Test activity $j",
type: ActivityType
.values[random.nextInt(ActivityType.values.length)],
description:
"$j Beta pully beta beta pinch one arm crimpy. Futuristic pinch, dyno dynamic drop knee climb. Climbing ondra slopey onsight beta ondra power endurance.",
category: ActivityCategories
.values[random.nextInt(ActivityCategories.values.length)]))
.then((activityId) async {
// session activity relationships
.into(database.sessionActivities)
.insert(SessionActivitiesCompanion.insert(
sessionId: sessionId,
activityId: activityId,
position: j,
results: Value("results json, will need to test"),
));
// actions
for (int k = 0; k <= random.nextInt(totalActions); k++) {
await database
.into(database.sessionActivities)
.insert(SessionActivitiesCompanion.insert(
sessionId: sessionId,
activityId: activityId,
position: j,
results: Value("results json, will need to test"),
));
// actions
for (int k = 0; k <= random.nextInt(totalActions); k++) {
await database
.into(database.actions)
.insert(ActionsCompanion.insert(
title: 'Test action $k',
description:
'$k Beta pully beta beta pinch one arm crimpy. Futuristic pinch, dyno dynamic drop knee climb. Climbing ondra slopey onsight beta ondra power endurance.',
set: actionTypes[random.nextInt(actionTypes.length)]))
.then((actionId) async {
// add activity action association
await database.into(database.activityActions).insert(
ActivityActionsCompanion.insert(
activityId: activityId, actionId: actionId, position: k));
for (int l = 0; l <= random.nextInt(totalMedia); l++) {
final mediaItem = mediaItems[random.nextInt(mediaItems.length)];
await database
.into(database.mediaItems)
.insert(MediaItemsCompanion.insert(
title: 'Media title $l',
description:
'Media description $l Beta pully beta beta pinch one arm crimpy. Futuristic pinch, dyno dynamic drop knee climb. Climbing ondra slopey onsight beta ondra power endurance.',
reference: mediaItem[0],
type: mediaItem[1]))
.then((mediaId) async {
await database.into(database.objectMediaItems).insert(
ObjectMediaItemsCompanion.insert(
objectId: actionId,
mediaId: mediaId,
objectType: ObjectType.actions));
});
}
});
}
for (int m = 0; m <= random.nextInt(totalMedia); m++) {
final mediaItem = mediaItems[random.nextInt(mediaItems.length)];
await database
.into(database.mediaItems)
.insert(MediaItemsCompanion.insert(
title: 'Media title $m',
description:
'Media description $m Beta pully beta beta pinch one arm crimpy. Futuristic pinch, dyno dynamic drop knee climb. Climbing ondra slopey onsight beta ondra power endurance.',
reference: mediaItem[0],
type: mediaItem[1]))
.then((mediaId) async {
await database.into(database.objectMediaItems).insert(
ObjectMediaItemsCompanion.insert(
objectId: activityId,
mediaId: mediaId,
objectType: ObjectType.activities));
});
}
});
.into(database.actions)
.insert(ActionsCompanion.insert(
title: 'Test action $k',
description:
'$k Beta pully beta beta pinch one arm crimpy. Futuristic pinch, dyno dynamic drop knee climb. Climbing ondra slopey onsight beta ondra power endurance.',
set: actionTypes[random.nextInt(actionTypes.length)]))
.then((actionId) async {
// add activity action association
await database.into(database.activityActions).insert(
ActivityActionsCompanion.insert(
activityId: activityId, actionId: actionId, position: k));
});
}
}
for (int n = 0; n <= random.nextInt(totalMedia); n++) {

View File

@ -30,7 +30,7 @@ class ActivityFinderService {
// return ActivityCard(activity: activity, callback: callback);
return ListTile(
title: Text(activity.title),
subtitle: Text(activity.description),
subtitle: Text(activity.description ?? ""),
onTap: () {
if (callback != null) {
callback();

View File

@ -63,7 +63,7 @@ class ActivityCardState extends State<ActivityCard> {
},
),
subtitle:
Text(maxLines: 2, widget.activity.description),
Text(maxLines: 2, widget.activity.description ?? ""),
contentPadding: EdgeInsets.only(left: 13),
trailing: Flex(
direction: Axis.vertical,

View File

@ -86,8 +86,8 @@ class _ActivityViewState extends State<ActivityView> {
padding: const EdgeInsets.fromLTRB(10, 0, 0, 10),
child: Flex(direction: Axis.horizontal, children: [
ActivityViewCategories(
categories: [activity.category]),
ActivityViewTypes(types: [activity.type])
categories: activity.category != null ? [activity.category!] : []),
ActivityViewTypes(types: [activity.type!])
])),
Padding(
padding: const EdgeInsets.only(
@ -95,7 +95,7 @@ class _ActivityViewState extends State<ActivityView> {
child: Text(
textAlign: TextAlign.left,
style: const TextStyle(fontSize: 15),
activity.description)),
activity.description ?? "")),
const Padding(
padding: EdgeInsets.fromLTRB(15, 20, 0, 10),
child: Text(

View File

@ -50,6 +50,7 @@ dependencies:
uuid: ^4.5.1
mime: ^2.0.0
video_player: ^2.9.2
dart_casing: ^3.0.1
flutter_launcher_name:
name: "SendTrain"
@ -86,6 +87,7 @@ flutter:
# - images/a_dot_ham.jpeg
assets:
- assets/images/
- assets/exercises.json
# An image asset can refer to one or more resolution-specific "variants", see
# https://flutter.dev/assets-and-images/#resolution-aware

View File

@ -16,6 +16,12 @@ import 'schema_v10.dart' as v10;
import 'schema_v11.dart' as v11;
import 'schema_v12.dart' as v12;
import 'schema_v13.dart' as v13;
import 'schema_v14.dart' as v14;
import 'schema_v15.dart' as v15;
import 'schema_v16.dart' as v16;
import 'schema_v17.dart' as v17;
import 'schema_v18.dart' as v18;
import 'schema_v19.dart' as v19;
class GeneratedHelper implements SchemaInstantiationHelper {
@override
@ -47,10 +53,42 @@ class GeneratedHelper implements SchemaInstantiationHelper {
return v12.DatabaseAtV12(db);
case 13:
return v13.DatabaseAtV13(db);
case 14:
return v14.DatabaseAtV14(db);
case 15:
return v15.DatabaseAtV15(db);
case 16:
return v16.DatabaseAtV16(db);
case 17:
return v17.DatabaseAtV17(db);
case 18:
return v18.DatabaseAtV18(db);
case 19:
return v19.DatabaseAtV19(db);
default:
throw MissingSchemaException(version, versions);
}
}
static const versions = const [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];
static const versions = const [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19
];
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff