migration to move achievements to session, prep for achievement and media management

This commit is contained in:
Joshua Burman 2025-01-02 19:50:29 -05:00
parent 48f716cdb0
commit 2206720810
19 changed files with 6771 additions and 186 deletions

View File

@ -35,7 +35,7 @@ class AppDatabase extends _$AppDatabase {
AppDatabase() : super(_openConnection());
@override
int get schemaVersion => 10;
int get schemaVersion => 13;
@override
MigrationStrategy get migration {
@ -66,6 +66,7 @@ class Sessions extends Table {
TextColumn get title => text().withLength(min: 3, max: 32)();
TextColumn get content => text().named('body')();
TextColumn get status => textEnum<SessionStatus>()();
TextColumn get achievements => text().nullable()();
TextColumn get address => text().withLength(min: 3, max: 256).nullable()();
DateTimeColumn get date => dateTime().nullable()();
DateTimeColumn get createdAt =>
@ -78,7 +79,6 @@ class SessionActivities extends Table {
IntColumn get activityId => integer().references(Activities, #id, onDelete: KeyAction.cascade)();
IntColumn get position => integer()();
TextColumn get results => text().nullable()();
TextColumn get achievements => text().nullable()();
DateTimeColumn get createdAt =>
dateTime().withDefault(Variable(DateTime.now()))();
}

View File

@ -37,6 +37,12 @@ class $SessionsTable extends Sessions with TableInfo<$SessionsTable, Session> {
GeneratedColumn<String>('status', aliasedName, false,
type: DriftSqlType.string, requiredDuringInsert: true)
.withConverter<SessionStatus>($SessionsTable.$converterstatus);
static const VerificationMeta _achievementsMeta =
const VerificationMeta('achievements');
@override
late final GeneratedColumn<String> achievements = GeneratedColumn<String>(
'achievements', aliasedName, true,
type: DriftSqlType.string, requiredDuringInsert: false);
static const VerificationMeta _addressMeta =
const VerificationMeta('address');
@override
@ -61,7 +67,7 @@ class $SessionsTable extends Sessions with TableInfo<$SessionsTable, Session> {
defaultValue: Variable(DateTime.now()));
@override
List<GeneratedColumn> get $columns =>
[id, title, content, status, address, date, createdAt];
[id, title, content, status, achievements, address, date, createdAt];
@override
String get aliasedName => _alias ?? actualTableName;
@override
@ -88,6 +94,12 @@ class $SessionsTable extends Sessions with TableInfo<$SessionsTable, Session> {
context.missing(_contentMeta);
}
context.handle(_statusMeta, const VerificationResult.success());
if (data.containsKey('achievements')) {
context.handle(
_achievementsMeta,
achievements.isAcceptableOrUnknown(
data['achievements']!, _achievementsMeta));
}
if (data.containsKey('address')) {
context.handle(_addressMeta,
address.isAcceptableOrUnknown(data['address']!, _addressMeta));
@ -118,6 +130,8 @@ class $SessionsTable extends Sessions with TableInfo<$SessionsTable, Session> {
status: $SessionsTable.$converterstatus.fromSql(attachedDatabase
.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}status'])!),
achievements: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}achievements']),
address: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}address']),
date: attachedDatabase.typeMapping
@ -141,6 +155,7 @@ class Session extends DataClass implements Insertable<Session> {
final String title;
final String content;
final SessionStatus status;
final String? achievements;
final String? address;
final DateTime? date;
final DateTime createdAt;
@ -149,6 +164,7 @@ class Session extends DataClass implements Insertable<Session> {
required this.title,
required this.content,
required this.status,
this.achievements,
this.address,
this.date,
required this.createdAt});
@ -162,6 +178,9 @@ class Session extends DataClass implements Insertable<Session> {
map['status'] =
Variable<String>($SessionsTable.$converterstatus.toSql(status));
}
if (!nullToAbsent || achievements != null) {
map['achievements'] = Variable<String>(achievements);
}
if (!nullToAbsent || address != null) {
map['address'] = Variable<String>(address);
}
@ -178,6 +197,9 @@ class Session extends DataClass implements Insertable<Session> {
title: Value(title),
content: Value(content),
status: Value(status),
achievements: achievements == null && nullToAbsent
? const Value.absent()
: Value(achievements),
address: address == null && nullToAbsent
? const Value.absent()
: Value(address),
@ -195,6 +217,7 @@ class Session extends DataClass implements Insertable<Session> {
content: serializer.fromJson<String>(json['content']),
status: $SessionsTable.$converterstatus
.fromJson(serializer.fromJson<String>(json['status'])),
achievements: serializer.fromJson<String?>(json['achievements']),
address: serializer.fromJson<String?>(json['address']),
date: serializer.fromJson<DateTime?>(json['date']),
createdAt: serializer.fromJson<DateTime>(json['createdAt']),
@ -209,6 +232,7 @@ class Session extends DataClass implements Insertable<Session> {
'content': serializer.toJson<String>(content),
'status': serializer
.toJson<String>($SessionsTable.$converterstatus.toJson(status)),
'achievements': serializer.toJson<String?>(achievements),
'address': serializer.toJson<String?>(address),
'date': serializer.toJson<DateTime?>(date),
'createdAt': serializer.toJson<DateTime>(createdAt),
@ -220,6 +244,7 @@ class Session extends DataClass implements Insertable<Session> {
String? title,
String? content,
SessionStatus? status,
Value<String?> achievements = const Value.absent(),
Value<String?> address = const Value.absent(),
Value<DateTime?> date = const Value.absent(),
DateTime? createdAt}) =>
@ -228,6 +253,8 @@ class Session extends DataClass implements Insertable<Session> {
title: title ?? this.title,
content: content ?? this.content,
status: status ?? this.status,
achievements:
achievements.present ? achievements.value : this.achievements,
address: address.present ? address.value : this.address,
date: date.present ? date.value : this.date,
createdAt: createdAt ?? this.createdAt,
@ -238,6 +265,9 @@ class Session extends DataClass implements Insertable<Session> {
title: data.title.present ? data.title.value : this.title,
content: data.content.present ? data.content.value : this.content,
status: data.status.present ? data.status.value : this.status,
achievements: data.achievements.present
? data.achievements.value
: this.achievements,
address: data.address.present ? data.address.value : this.address,
date: data.date.present ? data.date.value : this.date,
createdAt: data.createdAt.present ? data.createdAt.value : this.createdAt,
@ -251,6 +281,7 @@ class Session extends DataClass implements Insertable<Session> {
..write('title: $title, ')
..write('content: $content, ')
..write('status: $status, ')
..write('achievements: $achievements, ')
..write('address: $address, ')
..write('date: $date, ')
..write('createdAt: $createdAt')
@ -259,8 +290,8 @@ class Session extends DataClass implements Insertable<Session> {
}
@override
int get hashCode =>
Object.hash(id, title, content, status, address, date, createdAt);
int get hashCode => Object.hash(
id, title, content, status, achievements, address, date, createdAt);
@override
bool operator ==(Object other) =>
identical(this, other) ||
@ -269,6 +300,7 @@ class Session extends DataClass implements Insertable<Session> {
other.title == this.title &&
other.content == this.content &&
other.status == this.status &&
other.achievements == this.achievements &&
other.address == this.address &&
other.date == this.date &&
other.createdAt == this.createdAt);
@ -279,6 +311,7 @@ class SessionsCompanion extends UpdateCompanion<Session> {
final Value<String> title;
final Value<String> content;
final Value<SessionStatus> status;
final Value<String?> achievements;
final Value<String?> address;
final Value<DateTime?> date;
final Value<DateTime> createdAt;
@ -287,6 +320,7 @@ class SessionsCompanion extends UpdateCompanion<Session> {
this.title = const Value.absent(),
this.content = const Value.absent(),
this.status = const Value.absent(),
this.achievements = const Value.absent(),
this.address = const Value.absent(),
this.date = const Value.absent(),
this.createdAt = const Value.absent(),
@ -296,6 +330,7 @@ class SessionsCompanion extends UpdateCompanion<Session> {
required String title,
required String content,
required SessionStatus status,
this.achievements = const Value.absent(),
this.address = const Value.absent(),
this.date = const Value.absent(),
this.createdAt = const Value.absent(),
@ -307,6 +342,7 @@ class SessionsCompanion extends UpdateCompanion<Session> {
Expression<String>? title,
Expression<String>? content,
Expression<String>? status,
Expression<String>? achievements,
Expression<String>? address,
Expression<DateTime>? date,
Expression<DateTime>? createdAt,
@ -316,6 +352,7 @@ class SessionsCompanion extends UpdateCompanion<Session> {
if (title != null) 'title': title,
if (content != null) 'body': content,
if (status != null) 'status': status,
if (achievements != null) 'achievements': achievements,
if (address != null) 'address': address,
if (date != null) 'date': date,
if (createdAt != null) 'created_at': createdAt,
@ -327,6 +364,7 @@ class SessionsCompanion extends UpdateCompanion<Session> {
Value<String>? title,
Value<String>? content,
Value<SessionStatus>? status,
Value<String?>? achievements,
Value<String?>? address,
Value<DateTime?>? date,
Value<DateTime>? createdAt}) {
@ -335,6 +373,7 @@ class SessionsCompanion extends UpdateCompanion<Session> {
title: title ?? this.title,
content: content ?? this.content,
status: status ?? this.status,
achievements: achievements ?? this.achievements,
address: address ?? this.address,
date: date ?? this.date,
createdAt: createdAt ?? this.createdAt,
@ -357,6 +396,9 @@ class SessionsCompanion extends UpdateCompanion<Session> {
map['status'] =
Variable<String>($SessionsTable.$converterstatus.toSql(status.value));
}
if (achievements.present) {
map['achievements'] = Variable<String>(achievements.value);
}
if (address.present) {
map['address'] = Variable<String>(address.value);
}
@ -376,6 +418,7 @@ class SessionsCompanion extends UpdateCompanion<Session> {
..write('title: $title, ')
..write('content: $content, ')
..write('status: $status, ')
..write('achievements: $achievements, ')
..write('address: $address, ')
..write('date: $date, ')
..write('createdAt: $createdAt')
@ -779,12 +822,6 @@ class $SessionActivitiesTable extends SessionActivities
late final GeneratedColumn<String> results = GeneratedColumn<String>(
'results', aliasedName, true,
type: DriftSqlType.string, requiredDuringInsert: false);
static const VerificationMeta _achievementsMeta =
const VerificationMeta('achievements');
@override
late final GeneratedColumn<String> achievements = GeneratedColumn<String>(
'achievements', aliasedName, true,
type: DriftSqlType.string, requiredDuringInsert: false);
static const VerificationMeta _createdAtMeta =
const VerificationMeta('createdAt');
@override
@ -795,7 +832,7 @@ class $SessionActivitiesTable extends SessionActivities
defaultValue: Variable(DateTime.now()));
@override
List<GeneratedColumn> get $columns =>
[id, sessionId, activityId, position, results, achievements, createdAt];
[id, sessionId, activityId, position, results, createdAt];
@override
String get aliasedName => _alias ?? actualTableName;
@override
@ -833,12 +870,6 @@ class $SessionActivitiesTable extends SessionActivities
context.handle(_resultsMeta,
results.isAcceptableOrUnknown(data['results']!, _resultsMeta));
}
if (data.containsKey('achievements')) {
context.handle(
_achievementsMeta,
achievements.isAcceptableOrUnknown(
data['achievements']!, _achievementsMeta));
}
if (data.containsKey('created_at')) {
context.handle(_createdAtMeta,
createdAt.isAcceptableOrUnknown(data['created_at']!, _createdAtMeta));
@ -862,8 +893,6 @@ class $SessionActivitiesTable extends SessionActivities
.read(DriftSqlType.int, data['${effectivePrefix}position'])!,
results: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}results']),
achievements: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}achievements']),
createdAt: attachedDatabase.typeMapping
.read(DriftSqlType.dateTime, data['${effectivePrefix}created_at'])!,
);
@ -881,7 +910,6 @@ class SessionActivity extends DataClass implements Insertable<SessionActivity> {
final int activityId;
final int position;
final String? results;
final String? achievements;
final DateTime createdAt;
const SessionActivity(
{required this.id,
@ -889,7 +917,6 @@ class SessionActivity extends DataClass implements Insertable<SessionActivity> {
required this.activityId,
required this.position,
this.results,
this.achievements,
required this.createdAt});
@override
Map<String, Expression> toColumns(bool nullToAbsent) {
@ -901,9 +928,6 @@ class SessionActivity extends DataClass implements Insertable<SessionActivity> {
if (!nullToAbsent || results != null) {
map['results'] = Variable<String>(results);
}
if (!nullToAbsent || achievements != null) {
map['achievements'] = Variable<String>(achievements);
}
map['created_at'] = Variable<DateTime>(createdAt);
return map;
}
@ -917,9 +941,6 @@ class SessionActivity extends DataClass implements Insertable<SessionActivity> {
results: results == null && nullToAbsent
? const Value.absent()
: Value(results),
achievements: achievements == null && nullToAbsent
? const Value.absent()
: Value(achievements),
createdAt: Value(createdAt),
);
}
@ -933,7 +954,6 @@ class SessionActivity extends DataClass implements Insertable<SessionActivity> {
activityId: serializer.fromJson<int>(json['activityId']),
position: serializer.fromJson<int>(json['position']),
results: serializer.fromJson<String?>(json['results']),
achievements: serializer.fromJson<String?>(json['achievements']),
createdAt: serializer.fromJson<DateTime>(json['createdAt']),
);
}
@ -946,7 +966,6 @@ class SessionActivity extends DataClass implements Insertable<SessionActivity> {
'activityId': serializer.toJson<int>(activityId),
'position': serializer.toJson<int>(position),
'results': serializer.toJson<String?>(results),
'achievements': serializer.toJson<String?>(achievements),
'createdAt': serializer.toJson<DateTime>(createdAt),
};
}
@ -957,7 +976,6 @@ class SessionActivity extends DataClass implements Insertable<SessionActivity> {
int? activityId,
int? position,
Value<String?> results = const Value.absent(),
Value<String?> achievements = const Value.absent(),
DateTime? createdAt}) =>
SessionActivity(
id: id ?? this.id,
@ -965,8 +983,6 @@ class SessionActivity extends DataClass implements Insertable<SessionActivity> {
activityId: activityId ?? this.activityId,
position: position ?? this.position,
results: results.present ? results.value : this.results,
achievements:
achievements.present ? achievements.value : this.achievements,
createdAt: createdAt ?? this.createdAt,
);
SessionActivity copyWithCompanion(SessionActivitiesCompanion data) {
@ -977,9 +993,6 @@ class SessionActivity extends DataClass implements Insertable<SessionActivity> {
data.activityId.present ? data.activityId.value : this.activityId,
position: data.position.present ? data.position.value : this.position,
results: data.results.present ? data.results.value : this.results,
achievements: data.achievements.present
? data.achievements.value
: this.achievements,
createdAt: data.createdAt.present ? data.createdAt.value : this.createdAt,
);
}
@ -992,15 +1005,14 @@ class SessionActivity extends DataClass implements Insertable<SessionActivity> {
..write('activityId: $activityId, ')
..write('position: $position, ')
..write('results: $results, ')
..write('achievements: $achievements, ')
..write('createdAt: $createdAt')
..write(')'))
.toString();
}
@override
int get hashCode => Object.hash(
id, sessionId, activityId, position, results, achievements, createdAt);
int get hashCode =>
Object.hash(id, sessionId, activityId, position, results, createdAt);
@override
bool operator ==(Object other) =>
identical(this, other) ||
@ -1010,7 +1022,6 @@ class SessionActivity extends DataClass implements Insertable<SessionActivity> {
other.activityId == this.activityId &&
other.position == this.position &&
other.results == this.results &&
other.achievements == this.achievements &&
other.createdAt == this.createdAt);
}
@ -1020,7 +1031,6 @@ class SessionActivitiesCompanion extends UpdateCompanion<SessionActivity> {
final Value<int> activityId;
final Value<int> position;
final Value<String?> results;
final Value<String?> achievements;
final Value<DateTime> createdAt;
const SessionActivitiesCompanion({
this.id = const Value.absent(),
@ -1028,7 +1038,6 @@ class SessionActivitiesCompanion extends UpdateCompanion<SessionActivity> {
this.activityId = const Value.absent(),
this.position = const Value.absent(),
this.results = const Value.absent(),
this.achievements = const Value.absent(),
this.createdAt = const Value.absent(),
});
SessionActivitiesCompanion.insert({
@ -1037,7 +1046,6 @@ class SessionActivitiesCompanion extends UpdateCompanion<SessionActivity> {
required int activityId,
required int position,
this.results = const Value.absent(),
this.achievements = const Value.absent(),
this.createdAt = const Value.absent(),
}) : sessionId = Value(sessionId),
activityId = Value(activityId),
@ -1048,7 +1056,6 @@ class SessionActivitiesCompanion extends UpdateCompanion<SessionActivity> {
Expression<int>? activityId,
Expression<int>? position,
Expression<String>? results,
Expression<String>? achievements,
Expression<DateTime>? createdAt,
}) {
return RawValuesInsertable({
@ -1057,7 +1064,6 @@ class SessionActivitiesCompanion extends UpdateCompanion<SessionActivity> {
if (activityId != null) 'activity_id': activityId,
if (position != null) 'position': position,
if (results != null) 'results': results,
if (achievements != null) 'achievements': achievements,
if (createdAt != null) 'created_at': createdAt,
});
}
@ -1068,7 +1074,6 @@ class SessionActivitiesCompanion extends UpdateCompanion<SessionActivity> {
Value<int>? activityId,
Value<int>? position,
Value<String?>? results,
Value<String?>? achievements,
Value<DateTime>? createdAt}) {
return SessionActivitiesCompanion(
id: id ?? this.id,
@ -1076,7 +1081,6 @@ class SessionActivitiesCompanion extends UpdateCompanion<SessionActivity> {
activityId: activityId ?? this.activityId,
position: position ?? this.position,
results: results ?? this.results,
achievements: achievements ?? this.achievements,
createdAt: createdAt ?? this.createdAt,
);
}
@ -1099,9 +1103,6 @@ class SessionActivitiesCompanion extends UpdateCompanion<SessionActivity> {
if (results.present) {
map['results'] = Variable<String>(results.value);
}
if (achievements.present) {
map['achievements'] = Variable<String>(achievements.value);
}
if (createdAt.present) {
map['created_at'] = Variable<DateTime>(createdAt.value);
}
@ -1116,7 +1117,6 @@ class SessionActivitiesCompanion extends UpdateCompanion<SessionActivity> {
..write('activityId: $activityId, ')
..write('position: $position, ')
..write('results: $results, ')
..write('achievements: $achievements, ')
..write('createdAt: $createdAt')
..write(')'))
.toString();
@ -2465,6 +2465,7 @@ typedef $$SessionsTableCreateCompanionBuilder = SessionsCompanion Function({
required String title,
required String content,
required SessionStatus status,
Value<String?> achievements,
Value<String?> address,
Value<DateTime?> date,
Value<DateTime> createdAt,
@ -2474,6 +2475,7 @@ typedef $$SessionsTableUpdateCompanionBuilder = SessionsCompanion Function({
Value<String> title,
Value<String> content,
Value<SessionStatus> status,
Value<String?> achievements,
Value<String?> address,
Value<DateTime?> date,
Value<DateTime> createdAt,
@ -2524,6 +2526,9 @@ class $$SessionsTableFilterComposer
column: $table.status,
builder: (column) => ColumnWithTypeConverterFilters(column));
ColumnFilters<String> get achievements => $composableBuilder(
column: $table.achievements, builder: (column) => ColumnFilters(column));
ColumnFilters<String> get address => $composableBuilder(
column: $table.address, builder: (column) => ColumnFilters(column));
@ -2576,6 +2581,10 @@ class $$SessionsTableOrderingComposer
ColumnOrderings<String> get status => $composableBuilder(
column: $table.status, builder: (column) => ColumnOrderings(column));
ColumnOrderings<String> get achievements => $composableBuilder(
column: $table.achievements,
builder: (column) => ColumnOrderings(column));
ColumnOrderings<String> get address => $composableBuilder(
column: $table.address, builder: (column) => ColumnOrderings(column));
@ -2607,6 +2616,9 @@ class $$SessionsTableAnnotationComposer
GeneratedColumnWithTypeConverter<SessionStatus, String> get status =>
$composableBuilder(column: $table.status, builder: (column) => column);
GeneratedColumn<String> get achievements => $composableBuilder(
column: $table.achievements, builder: (column) => column);
GeneratedColumn<String> get address =>
$composableBuilder(column: $table.address, builder: (column) => column);
@ -2666,6 +2678,7 @@ class $$SessionsTableTableManager extends RootTableManager<
Value<String> title = const Value.absent(),
Value<String> content = const Value.absent(),
Value<SessionStatus> status = const Value.absent(),
Value<String?> achievements = const Value.absent(),
Value<String?> address = const Value.absent(),
Value<DateTime?> date = const Value.absent(),
Value<DateTime> createdAt = const Value.absent(),
@ -2675,6 +2688,7 @@ class $$SessionsTableTableManager extends RootTableManager<
title: title,
content: content,
status: status,
achievements: achievements,
address: address,
date: date,
createdAt: createdAt,
@ -2684,6 +2698,7 @@ class $$SessionsTableTableManager extends RootTableManager<
required String title,
required String content,
required SessionStatus status,
Value<String?> achievements = const Value.absent(),
Value<String?> address = const Value.absent(),
Value<DateTime?> date = const Value.absent(),
Value<DateTime> createdAt = const Value.absent(),
@ -2693,6 +2708,7 @@ class $$SessionsTableTableManager extends RootTableManager<
title: title,
content: content,
status: status,
achievements: achievements,
address: address,
date: date,
createdAt: createdAt,
@ -3093,7 +3109,6 @@ typedef $$SessionActivitiesTableCreateCompanionBuilder
required int activityId,
required int position,
Value<String?> results,
Value<String?> achievements,
Value<DateTime> createdAt,
});
typedef $$SessionActivitiesTableUpdateCompanionBuilder
@ -3103,7 +3118,6 @@ typedef $$SessionActivitiesTableUpdateCompanionBuilder
Value<int> activityId,
Value<int> position,
Value<String?> results,
Value<String?> achievements,
Value<DateTime> createdAt,
});
@ -3157,9 +3171,6 @@ class $$SessionActivitiesTableFilterComposer
ColumnFilters<String> get results => $composableBuilder(
column: $table.results, builder: (column) => ColumnFilters(column));
ColumnFilters<String> get achievements => $composableBuilder(
column: $table.achievements, builder: (column) => ColumnFilters(column));
ColumnFilters<DateTime> get createdAt => $composableBuilder(
column: $table.createdAt, builder: (column) => ColumnFilters(column));
@ -3222,10 +3233,6 @@ class $$SessionActivitiesTableOrderingComposer
ColumnOrderings<String> get results => $composableBuilder(
column: $table.results, builder: (column) => ColumnOrderings(column));
ColumnOrderings<String> get achievements => $composableBuilder(
column: $table.achievements,
builder: (column) => ColumnOrderings(column));
ColumnOrderings<DateTime> get createdAt => $composableBuilder(
column: $table.createdAt, builder: (column) => ColumnOrderings(column));
@ -3288,9 +3295,6 @@ class $$SessionActivitiesTableAnnotationComposer
GeneratedColumn<String> get results =>
$composableBuilder(column: $table.results, builder: (column) => column);
GeneratedColumn<String> get achievements => $composableBuilder(
column: $table.achievements, builder: (column) => column);
GeneratedColumn<DateTime> get createdAt =>
$composableBuilder(column: $table.createdAt, builder: (column) => column);
@ -3365,7 +3369,6 @@ class $$SessionActivitiesTableTableManager extends RootTableManager<
Value<int> activityId = const Value.absent(),
Value<int> position = const Value.absent(),
Value<String?> results = const Value.absent(),
Value<String?> achievements = const Value.absent(),
Value<DateTime> createdAt = const Value.absent(),
}) =>
SessionActivitiesCompanion(
@ -3374,7 +3377,6 @@ class $$SessionActivitiesTableTableManager extends RootTableManager<
activityId: activityId,
position: position,
results: results,
achievements: achievements,
createdAt: createdAt,
),
createCompanionCallback: ({
@ -3383,7 +3385,6 @@ class $$SessionActivitiesTableTableManager extends RootTableManager<
required int activityId,
required int position,
Value<String?> results = const Value.absent(),
Value<String?> achievements = const Value.absent(),
Value<DateTime> createdAt = const Value.absent(),
}) =>
SessionActivitiesCompanion.insert(
@ -3392,7 +3393,6 @@ class $$SessionActivitiesTableTableManager extends RootTableManager<
activityId: activityId,
position: position,
results: results,
achievements: achievements,
createdAt: createdAt,
),
withReferenceMapper: (p0) => p0

View File

@ -1488,6 +1488,444 @@ final class Schema10 extends i0.VersionedSchema {
alias: null);
}
final class Schema11 extends i0.VersionedSchema {
Schema11({required super.database}) : super(version: 11);
@override
late final List<i1.DatabaseSchemaEntity> entities = [
sessions,
activities,
sessionActivities,
actions,
activityActions,
mediaItems,
objectMediaItems,
];
late final Shape12 sessions = Shape12(
source: i0.VersionedTable(
entityName: 'sessions',
withoutRowId: false,
isStrict: false,
tableConstraints: [],
columns: [
_column_0,
_column_1,
_column_2,
_column_3,
_column_11,
_column_20,
_column_4,
_column_5,
],
attachedDatabase: database,
),
alias: null);
late final Shape1 activities = Shape1(
source: i0.VersionedTable(
entityName: 'activities',
withoutRowId: false,
isStrict: false,
tableConstraints: [],
columns: [
_column_0,
_column_1,
_column_6,
_column_2,
_column_7,
_column_5,
],
attachedDatabase: database,
),
alias: null);
late final Shape13 sessionActivities = Shape13(
source: i0.VersionedTable(
entityName: 'session_activities',
withoutRowId: false,
isStrict: false,
tableConstraints: [],
columns: [
_column_0,
_column_21,
_column_22,
_column_19,
_column_10,
_column_5,
],
attachedDatabase: database,
),
alias: null);
late final Shape3 actions = Shape3(
source: i0.VersionedTable(
entityName: 'actions',
withoutRowId: false,
isStrict: false,
tableConstraints: [],
columns: [
_column_0,
_column_1,
_column_2,
_column_12,
_column_5,
],
attachedDatabase: database,
),
alias: null);
late final Shape10 activityActions = Shape10(
source: i0.VersionedTable(
entityName: 'activity_actions',
withoutRowId: false,
isStrict: false,
tableConstraints: [],
columns: [
_column_0,
_column_22,
_column_23,
_column_19,
_column_5,
],
attachedDatabase: database,
),
alias: null);
late final Shape5 mediaItems = Shape5(
source: i0.VersionedTable(
entityName: 'media_items',
withoutRowId: false,
isStrict: false,
tableConstraints: [],
columns: [
_column_0,
_column_1,
_column_2,
_column_25,
_column_6,
_column_5,
],
attachedDatabase: database,
),
alias: null);
late final Shape6 objectMediaItems = Shape6(
source: i0.VersionedTable(
entityName: 'object_media_items',
withoutRowId: false,
isStrict: false,
tableConstraints: [],
columns: [
_column_0,
_column_15,
_column_16,
_column_24,
_column_5,
],
attachedDatabase: database,
),
alias: null);
}
class Shape12 extends i0.VersionedTable {
Shape12({required super.source, required super.alias}) : super.aliased();
i1.GeneratedColumn<int> get id =>
columnsByName['id']! as i1.GeneratedColumn<int>;
i1.GeneratedColumn<String> get title =>
columnsByName['title']! as i1.GeneratedColumn<String>;
i1.GeneratedColumn<String> get content =>
columnsByName['body']! as i1.GeneratedColumn<String>;
i1.GeneratedColumn<String> get status =>
columnsByName['status']! as i1.GeneratedColumn<String>;
i1.GeneratedColumn<String> get achievements =>
columnsByName['achievements']! as i1.GeneratedColumn<String>;
i1.GeneratedColumn<String> get address =>
columnsByName['address']! as i1.GeneratedColumn<String>;
i1.GeneratedColumn<DateTime> get date =>
columnsByName['date']! as i1.GeneratedColumn<DateTime>;
i1.GeneratedColumn<DateTime> get createdAt =>
columnsByName['created_at']! as i1.GeneratedColumn<DateTime>;
}
class Shape13 extends i0.VersionedTable {
Shape13({required super.source, required super.alias}) : super.aliased();
i1.GeneratedColumn<int> get id =>
columnsByName['id']! as i1.GeneratedColumn<int>;
i1.GeneratedColumn<int> get sessionId =>
columnsByName['session_id']! as i1.GeneratedColumn<int>;
i1.GeneratedColumn<int> get activityId =>
columnsByName['activity_id']! as i1.GeneratedColumn<int>;
i1.GeneratedColumn<int> get position =>
columnsByName['position']! as i1.GeneratedColumn<int>;
i1.GeneratedColumn<String> get results =>
columnsByName['results']! as i1.GeneratedColumn<String>;
i1.GeneratedColumn<DateTime> get createdAt =>
columnsByName['created_at']! as i1.GeneratedColumn<DateTime>;
}
final class Schema12 extends i0.VersionedSchema {
Schema12({required super.database}) : super(version: 12);
@override
late final List<i1.DatabaseSchemaEntity> entities = [
sessions,
activities,
sessionActivities,
actions,
activityActions,
mediaItems,
objectMediaItems,
];
late final Shape12 sessions = Shape12(
source: i0.VersionedTable(
entityName: 'sessions',
withoutRowId: false,
isStrict: false,
tableConstraints: [],
columns: [
_column_0,
_column_1,
_column_2,
_column_3,
_column_26,
_column_20,
_column_4,
_column_5,
],
attachedDatabase: database,
),
alias: null);
late final Shape1 activities = Shape1(
source: i0.VersionedTable(
entityName: 'activities',
withoutRowId: false,
isStrict: false,
tableConstraints: [],
columns: [
_column_0,
_column_1,
_column_6,
_column_2,
_column_7,
_column_5,
],
attachedDatabase: database,
),
alias: null);
late final Shape13 sessionActivities = Shape13(
source: i0.VersionedTable(
entityName: 'session_activities',
withoutRowId: false,
isStrict: false,
tableConstraints: [],
columns: [
_column_0,
_column_21,
_column_22,
_column_19,
_column_10,
_column_5,
],
attachedDatabase: database,
),
alias: null);
late final Shape3 actions = Shape3(
source: i0.VersionedTable(
entityName: 'actions',
withoutRowId: false,
isStrict: false,
tableConstraints: [],
columns: [
_column_0,
_column_1,
_column_2,
_column_12,
_column_5,
],
attachedDatabase: database,
),
alias: null);
late final Shape10 activityActions = Shape10(
source: i0.VersionedTable(
entityName: 'activity_actions',
withoutRowId: false,
isStrict: false,
tableConstraints: [],
columns: [
_column_0,
_column_22,
_column_23,
_column_19,
_column_5,
],
attachedDatabase: database,
),
alias: null);
late final Shape5 mediaItems = Shape5(
source: i0.VersionedTable(
entityName: 'media_items',
withoutRowId: false,
isStrict: false,
tableConstraints: [],
columns: [
_column_0,
_column_1,
_column_2,
_column_25,
_column_6,
_column_5,
],
attachedDatabase: database,
),
alias: null);
late final Shape6 objectMediaItems = Shape6(
source: i0.VersionedTable(
entityName: 'object_media_items',
withoutRowId: false,
isStrict: false,
tableConstraints: [],
columns: [
_column_0,
_column_15,
_column_16,
_column_24,
_column_5,
],
attachedDatabase: database,
),
alias: null);
}
i1.GeneratedColumn<String> _column_26(String aliasedName) =>
i1.GeneratedColumn<String>('achievements', aliasedName, true,
additionalChecks: i1.GeneratedColumn.checkTextLength(
minTextLength: 3, maxTextLength: 32),
type: i1.DriftSqlType.string);
final class Schema13 extends i0.VersionedSchema {
Schema13({required super.database}) : super(version: 13);
@override
late final List<i1.DatabaseSchemaEntity> entities = [
sessions,
activities,
sessionActivities,
actions,
activityActions,
mediaItems,
objectMediaItems,
];
late final Shape12 sessions = Shape12(
source: i0.VersionedTable(
entityName: 'sessions',
withoutRowId: false,
isStrict: false,
tableConstraints: [],
columns: [
_column_0,
_column_1,
_column_2,
_column_3,
_column_11,
_column_20,
_column_4,
_column_5,
],
attachedDatabase: database,
),
alias: null);
late final Shape1 activities = Shape1(
source: i0.VersionedTable(
entityName: 'activities',
withoutRowId: false,
isStrict: false,
tableConstraints: [],
columns: [
_column_0,
_column_1,
_column_6,
_column_2,
_column_7,
_column_5,
],
attachedDatabase: database,
),
alias: null);
late final Shape13 sessionActivities = Shape13(
source: i0.VersionedTable(
entityName: 'session_activities',
withoutRowId: false,
isStrict: false,
tableConstraints: [],
columns: [
_column_0,
_column_21,
_column_22,
_column_19,
_column_10,
_column_5,
],
attachedDatabase: database,
),
alias: null);
late final Shape3 actions = Shape3(
source: i0.VersionedTable(
entityName: 'actions',
withoutRowId: false,
isStrict: false,
tableConstraints: [],
columns: [
_column_0,
_column_1,
_column_2,
_column_12,
_column_5,
],
attachedDatabase: database,
),
alias: null);
late final Shape10 activityActions = Shape10(
source: i0.VersionedTable(
entityName: 'activity_actions',
withoutRowId: false,
isStrict: false,
tableConstraints: [],
columns: [
_column_0,
_column_22,
_column_23,
_column_19,
_column_5,
],
attachedDatabase: database,
),
alias: null);
late final Shape5 mediaItems = Shape5(
source: i0.VersionedTable(
entityName: 'media_items',
withoutRowId: false,
isStrict: false,
tableConstraints: [],
columns: [
_column_0,
_column_1,
_column_2,
_column_25,
_column_6,
_column_5,
],
attachedDatabase: database,
),
alias: null);
late final Shape6 objectMediaItems = Shape6(
source: i0.VersionedTable(
entityName: 'object_media_items',
withoutRowId: false,
isStrict: false,
tableConstraints: [],
columns: [
_column_0,
_column_15,
_column_16,
_column_24,
_column_5,
],
attachedDatabase: database,
),
alias: null);
}
i0.MigrationStepWithVersion migrationSteps({
required Future<void> Function(i1.Migrator m, Schema2 schema) from1To2,
required Future<void> Function(i1.Migrator m, Schema3 schema) from2To3,
@ -1498,6 +1936,9 @@ i0.MigrationStepWithVersion migrationSteps({
required Future<void> Function(i1.Migrator m, Schema8 schema) from7To8,
required Future<void> Function(i1.Migrator m, Schema9 schema) from8To9,
required Future<void> Function(i1.Migrator m, Schema10 schema) from9To10,
required Future<void> Function(i1.Migrator m, Schema11 schema) from10To11,
required Future<void> Function(i1.Migrator m, Schema12 schema) from11To12,
required Future<void> Function(i1.Migrator m, Schema13 schema) from12To13,
}) {
return (currentVersion, database) async {
switch (currentVersion) {
@ -1546,6 +1987,21 @@ i0.MigrationStepWithVersion migrationSteps({
final migrator = i1.Migrator(database, schema);
await from9To10(migrator, schema);
return 10;
case 10:
final schema = Schema11(database: database);
final migrator = i1.Migrator(database, schema);
await from10To11(migrator, schema);
return 11;
case 11:
final schema = Schema12(database: database);
final migrator = i1.Migrator(database, schema);
await from11To12(migrator, schema);
return 12;
case 12:
final schema = Schema13(database: database);
final migrator = i1.Migrator(database, schema);
await from12To13(migrator, schema);
return 13;
default:
throw ArgumentError.value('Unknown migration from $currentVersion');
}
@ -1562,6 +2018,9 @@ i1.OnUpgrade stepByStep({
required Future<void> Function(i1.Migrator m, Schema8 schema) from7To8,
required Future<void> Function(i1.Migrator m, Schema9 schema) from8To9,
required Future<void> Function(i1.Migrator m, Schema10 schema) from9To10,
required Future<void> Function(i1.Migrator m, Schema11 schema) from10To11,
required Future<void> Function(i1.Migrator m, Schema12 schema) from11To12,
required Future<void> Function(i1.Migrator m, Schema13 schema) from12To13,
}) =>
i0.VersionedSchema.stepByStepHelper(
step: migrationSteps(
@ -1574,4 +2033,7 @@ i1.OnUpgrade stepByStep({
from7To8: from7To8,
from8To9: from8To9,
from9To10: from9To10,
from10To11: from10To11,
from11To12: from11To12,
from12To13: from12To13,
));

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

@ -8,28 +8,28 @@ Future<void> seedDb(AppDatabase database) async {
final List<List> sessionValues = [
[
'Projecting',
'Beta pully beta beta pinch one arm crimpy. Futuristic pinch, dyno dynamic drop knee climb. Climbing ondra slopey onsight beta ondra power endurance.'
'Climbers Rock Inc.'
'Beta pully beta beta pinch one arm crimpy. Futuristic pinch, dyno dynamic drop knee climb. Climbing ondra slopey onsight beta ondra power endurance.',
'Climbers Rock Inc.'
],
[
'Moonboard',
'Beta pully beta beta pinch one arm crimpy. Futuristic pinch, dyno dynamic drop knee climb. Climbing ondra slopey onsight beta ondra power endurance.'
'Beta Bloc'
'Beta pully beta beta pinch one arm crimpy. Futuristic pinch, dyno dynamic drop knee climb. Climbing ondra slopey onsight beta ondra power endurance.',
'Beta Bloc'
],
[
'Off-Wall Training',
'Beta pully beta beta pinch one arm crimpy. Futuristic pinch, dyno dynamic drop knee climb. Climbing ondra slopey onsight beta ondra power endurance.'
'Climbers Rcok Inc.'
'Beta pully beta beta pinch one arm crimpy. Futuristic pinch, dyno dynamic drop knee climb. Climbing ondra slopey onsight beta ondra power endurance.',
'Climbers Rcok Inc.'
],
[
'Climbing Outdoors',
'Beta pully beta beta pinch one arm crimpy. Futuristic pinch, dyno dynamic drop knee climb. Climbing ondra slopey onsight beta ondra power endurance.'
'Gravity Hamilton'
'Beta pully beta beta pinch one arm crimpy. Futuristic pinch, dyno dynamic drop knee climb. Climbing ondra slopey onsight beta ondra power endurance.',
'Gravity Hamilton'
],
[
'Volume Session',
'Beta pully beta beta pinch one arm crimpy. Futuristic pinch, dyno dynamic drop knee climb. Climbing ondra slopey onsight beta ondra power endurance.'
'Up the Bloc'
'Beta pully beta beta pinch one arm crimpy. Futuristic pinch, dyno dynamic drop knee climb. Climbing ondra slopey onsight beta ondra power endurance.',
'Up the Bloc'
],
];
@ -66,7 +66,8 @@ Future<void> seedDb(AppDatabase database) async {
title: sessionValue[0],
content: sessionValue[1],
status: status,
address: sessionValue[2],
address: Value(sessionValue[2]),
achievements: Value("[\"achievement 1\", \"achievement 2\", \"achievement 3\"]"),
date: Value(DateTime.now())))
.then((sessionId) async {
// activities things
@ -90,7 +91,6 @@ Future<void> seedDb(AppDatabase database) async {
activityId: activityId,
position: j,
results: Value("results json, will need to test"),
achievements: Value("comma, seperated, items"),
));
// actions

View File

@ -3,6 +3,10 @@ import 'package:sendtrain/database/database.dart';
import 'package:sendtrain/widgets/media/media_details.dart';
showMediaDetailWidget(BuildContext context, MediaItem media) {
showEditorSheet(context, MediaDetails(media: media));
}
showEditorSheet(BuildContext context, Widget widget) {
showModalBottomSheet<void>(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.all(Radius.circular(10.0)),
@ -12,6 +16,6 @@ showMediaDetailWidget(BuildContext context, MediaItem media) {
isScrollControlled: true,
useSafeArea: true,
builder: (BuildContext context) {
return MediaDetails(media: media);
return widget;
});
}

View File

@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:sendtrain/database/database.dart';
import 'package:sendtrain/helpers/widget_helpers.dart';
import 'package:sendtrain/models/activity_timer_model.dart';
import 'package:sendtrain/widgets/screens/activities_screen.dart';
import 'package:sendtrain/widgets/screens/sessions_screen.dart';
@ -89,7 +90,8 @@ class _AppState extends State<App> {
NavigationDestination(
icon: Icon(Icons.sports), label: "Sessions"),
NavigationDestination(
icon: Icon(Icons.sports_gymnastics_rounded), label: "Activities"),
icon: Icon(Icons.sports_gymnastics_rounded),
label: "Activities"),
NavigationDestination(
icon: Icon(Icons.calendar_month_rounded), label: "Plan"),
NavigationDestination(
@ -99,17 +101,7 @@ class _AppState extends State<App> {
]),
floatingActionButton: FloatingActionButton.extended(
onPressed: () {
showModalBottomSheet<void>(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.all(Radius.circular(10.0)),
),
context: context,
showDragHandle: true,
isScrollControlled: true,
useSafeArea: true,
builder: (BuildContext context) {
return SessionEditor();
});
showEditorSheet(context, SessionEditor());
},
label: const Text('New Session'),
icon: const Icon(Icons.add_chart),

View File

@ -0,0 +1,18 @@
import 'package:flutter/material.dart';
class AchievementEditor extends StatefulWidget {
const AchievementEditor({super.key, this.achievements, this.callback});
final List? achievements;
final Function? callback;
@override
State<AchievementEditor> createState() => _AchievementEditorState();
}
class _AchievementEditorState extends State<AchievementEditor> {
@override
Widget build(BuildContext context, ) {
return Text('this is a test');
}
}

View File

@ -20,8 +20,8 @@ Future showGenericDialog(dynamic object, BuildContext parentContext) {
});
}
Future showRemovalDialog(String title, String content, BuildContext context,
dynamic dao, dynamic object) {
Future showCrudDialog(String title, String content, BuildContext context,
dynamic daoCall, dynamic object) {
return showAdaptiveDialog(
context: context,
builder: (BuildContext context) => AlertDialog(
@ -35,10 +35,20 @@ Future showRemovalDialog(String title, String content, BuildContext context,
child: const Text('Cancel'),
),
TextButton(
onPressed: () => {dao.remove(object), Navigator.pop(context, 'OK')},
onPressed: () => {daoCall(object), Navigator.pop(context, 'OK')},
child: const Text('OK'),
),
],
),
);
}
Future showRemovalDialog(String title, String content, BuildContext context,
dynamic dao, dynamic object) {
return showCrudDialog(title, content, context, dao.remove, object);
}
Future showUpdateDialog(String title, String content, BuildContext context,
dynamic dao, dynamic object) {
return showCrudDialog(title, content, context, dao.replace, object);
}

View File

@ -10,31 +10,31 @@ import 'package:sendtrain/helpers/widget_helpers.dart';
import 'package:sendtrain/widgets/builders/dialogs.dart';
import 'package:video_player/video_player.dart';
class MediaCard extends StatefulWidget {
class MediaCard extends StatelessWidget {
const MediaCard({super.key, required this.media, this.callback});
final MediaItem media;
final Function? callback;
@override
State<MediaCard> createState() => _MediaCardState();
}
// @override
// State<MediaCard> createState() => _MediaCardState();
// }
class _MediaCardState extends State<MediaCard> {
// late VideoPlayerController _controller;
late MediaItem media;
late Function? callback;
// class _MediaCardState extends State<MediaCard> {
// // late VideoPlayerController _controller;
// late MediaItem media;
// late Function? callback;
@override
void initState() {
super.initState();
media = widget.media;
callback = widget.callback;
// @override
// void initState() {
// super.initState();
// media = widget.media;
// callback = widget.callback;
// _controller = VideoPlayerController.asset(dataSource)
// ..initialize().then((_) {
// setState(() {}); //when your thumbnail will show.
// });
}
// }
// @override
// void dispose() {

View File

@ -8,6 +8,7 @@ import 'package:sendtrain/daos/activities_dao.dart';
import 'package:sendtrain/daos/sessions_dao.dart';
import 'package:sendtrain/database/database.dart';
import 'package:sendtrain/extensions/string_extensions.dart';
import 'package:sendtrain/helpers/widget_helpers.dart';
import 'package:sendtrain/widgets/generic/elements/generic_progress_indicator.dart';
import 'package:sendtrain/widgets/sessions/session_editor.dart';
import 'package:sendtrain/widgets/sessions/session_view_achievements.dart';
@ -119,19 +120,10 @@ class _SessionViewState extends State<SessionView> {
icon: const Icon(Icons.edit_outlined),
label: Text('Edit'),
onPressed: () {
showModalBottomSheet<void>(
shape: RoundedRectangleBorder(
borderRadius:
BorderRadius.all(Radius.circular(10.0)),
),
context: context,
showDragHandle: true,
isScrollControlled: true,
useSafeArea: true,
builder: (BuildContext context) {
return SessionEditor(
session: session, callback: resetState);
});
showEditorSheet(
context,
SessionEditor(
session: session, callback: resetState));
},
),
]),

View File

@ -1,82 +1,139 @@
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:sendtrain/daos/session_activities_dao.dart';
import 'package:sendtrain/daos/sessions_dao.dart';
import 'package:sendtrain/database/database.dart';
import 'package:sendtrain/extensions/string_extensions.dart';
import 'package:sendtrain/helpers/widget_helpers.dart';
import 'package:sendtrain/widgets/achievements/achievement_editor.dart';
import 'package:sendtrain/widgets/builders/dialogs.dart';
class SessionViewAchievements extends StatelessWidget {
const SessionViewAchievements({super.key, required this.session});
final Session session;
List<String> getAchievements(List<SessionActivity> sessionActivities) {
List<String> achievements = [];
// List<String> getAchievements(List<SessionActivity> sessionActivities) {
// List<String> achievements = [];
for (int i = 0; i < sessionActivities.length; i++) {
final SessionActivity sessionActivity = sessionActivities[i];
final List? saAchievments = sessionActivity.achievements?.split(',');
// for (int i = 0; i < sessionActivities.length; i++) {
// final SessionActivity sessionActivity = sessionActivities[i];
// final List? saAchievments = sessionActivity.achievements?.split(',');
if (saAchievments != null) {
saAchievments.forEach((achievement) => achievements.add(achievement));
}
}
// if (saAchievments != null) {
// saAchievments.forEach((achievement) => achievements.add(achievement));
// }
// }
return achievements;
// return achievements;
// }
void resetState() {
// setState(() {});
}
@override
Widget build(BuildContext context) {
return FutureBuilder<List<SessionActivity>>(
future: SessionActivitiesDao(Provider.of<AppDatabase>(context))
.fromSessionId(session.id),
builder: (context, snapshot) {
if (snapshot.hasData) {
final sessionActivities = snapshot.data!;
final achievements = getAchievements(sessionActivities);
Widget content;
if (session.achievements == null) {
content = Padding(
padding: const EdgeInsets.only(left: 10, right: 5),
child: ActionChip(
visualDensity: VisualDensity.compact,
avatar: const Icon(Icons.check_circle_outline),
label: Text(maxLines: 1, 'Add Achievements!'),
onPressed: () {
showEditorSheet(context, AchievementEditor(callback: resetState));
},
));
} else {
final achievements = json.decode(session.achievements!);
content = ListView.builder(
scrollDirection: Axis.horizontal,
padding: const EdgeInsets.fromLTRB(10, 0, 10, 0),
itemCount: achievements.length,
itemBuilder: (BuildContext context, int index) {
return Padding(
padding: const EdgeInsets.only(right: 5),
child: ActionChip(
visualDensity: VisualDensity.compact,
avatar: const Icon(Icons.check_circle_outline),
label: Text(maxLines: 1, achievements[index].toString().toTitleCase()),
onPressed: () {
showUpdateDialog(
'Achievement Removal',
'Would you like to remove this achievement?',
context,
SessionsDao(
Provider.of<AppDatabase>(context, listen: false)),
session);
}));
},
);
}
Widget content;
if (achievements.isEmpty) {
content = Padding(
padding: const EdgeInsets.only(left: 10, right: 5),
child: ActionChip(
visualDensity: VisualDensity.compact,
avatar: const Icon(Icons.check_circle_outline),
label: Text(maxLines: 1, 'Add Achievements!'),
onPressed: () {},
));
} else {
content = ListView.builder(
scrollDirection: Axis.horizontal,
padding: const EdgeInsets.fromLTRB(10, 0, 10, 0),
itemCount: achievements.length,
itemBuilder: (BuildContext context, int index) {
return Padding(
padding: const EdgeInsets.only(right: 5),
child: ActionChip(
visualDensity: VisualDensity.compact,
avatar: const Icon(Icons.check_circle_outline),
label: Text(
maxLines: 1, achievements[index].toTitleCase()),
onPressed: () {
// remove achievements
},
));
},
);
}
return Column(
children: [
Padding(
padding: const EdgeInsets.only(bottom: 10),
child: SizedBox(height: 40, child: content)),
],
);
// return StreamBuilder<List<SessionActivity>>(
// stream: SessionActivitiesDao(Provider.of<AppDatabase>(context))
// .fromSessionId(session.id).asStream(),
// builder: (context, snapshot) {
// if (snapshot.hasData) {
// final sessionActivities = snapshot.data!;
// final achievements = getAchievements(sessionActivities);
return Column(
children: [
Padding(
padding: const EdgeInsets.only(bottom: 10),
child: SizedBox(height: 40, child: content)),
],
);
} else {
return Padding(
padding: EdgeInsets.all(15),
child: CircularProgressIndicator());
}
});
// Widget content;
// if (achievements.isEmpty) {
// content = Padding(
// padding: const EdgeInsets.only(left: 10, right: 5),
// child: ActionChip(
// visualDensity: VisualDensity.compact,
// avatar: const Icon(Icons.check_circle_outline),
// label: Text(maxLines: 1, 'Add Achievements!'),
// onPressed: () {
// showEditorSheet(context, AchievementEditor(achievements: achievements, callback: resetState));
// },
// ));
// } else {
// content = ListView.builder(
// scrollDirection: Axis.horizontal,
// padding: const EdgeInsets.fromLTRB(10, 0, 10, 0),
// itemCount: achievements.length,
// itemBuilder: (BuildContext context, int index) {
// return Padding(
// padding: const EdgeInsets.only(right: 5),
// child: ActionChip(
// visualDensity: VisualDensity.compact,
// avatar: const Icon(Icons.check_circle_outline),
// label: Text(
// maxLines: 1, achievements[index].toTitleCase()),
// onPressed: () {
// // remove achievements
// },
// ));
// },
// );
// }
// return Column(
// children: [
// Padding(
// padding: const EdgeInsets.only(bottom: 10),
// child: SizedBox(height: 40, child: content)),
// ],
// );
// } else {
// return Padding(
// padding: EdgeInsets.all(15),
// child: CircularProgressIndicator());
// }
// });
}
}

View File

@ -14,15 +14,23 @@ class SessionViewMedia extends StatefulWidget {
}
class _SessionViewMediaState extends State<SessionViewMedia> {
// late final Session session;
void resetState() {
setState(() {});
}
// @override
// initState() async {
// super.initState();
// }
@override
Widget build(BuildContext context) {
return StreamBuilder<List<MediaItem>>(
stream: MediaItemsDao(Provider.of<AppDatabase>(context))
.fromSession(widget.session.id).asStream(),
return FutureBuilder<List<MediaItem>>(
future: MediaItemsDao(Provider.of<AppDatabase>(context))
.fromSession(widget.session.id),
builder: (context, snapshot) {
if (snapshot.hasData) {
final mediaItems = snapshot.data!;

View File

@ -13,6 +13,9 @@ import 'schema_v7.dart' as v7;
import 'schema_v8.dart' as v8;
import 'schema_v9.dart' as v9;
import 'schema_v10.dart' as v10;
import 'schema_v11.dart' as v11;
import 'schema_v12.dart' as v12;
import 'schema_v13.dart' as v13;
class GeneratedHelper implements SchemaInstantiationHelper {
@override
@ -38,10 +41,16 @@ class GeneratedHelper implements SchemaInstantiationHelper {
return v9.DatabaseAtV9(db);
case 10:
return v10.DatabaseAtV10(db);
case 11:
return v11.DatabaseAtV11(db);
case 12:
return v12.DatabaseAtV12(db);
case 13:
return v13.DatabaseAtV13(db);
default:
throw MissingSchemaException(version, versions);
}
}
static const versions = const [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
static const versions = const [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];
}

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