further refactoring, conversion to stream

This commit is contained in:
Joshua Burman
2024-12-27 20:59:48 -05:00
parent fa374a5bc2
commit 8e0ec614a0
15 changed files with 315 additions and 282 deletions

View File

@ -4,7 +4,8 @@ import 'package:sendtrain/database/database.dart';
part 'activities_dao.g.dart';
@DriftAccessor(tables: [Activities])
class ActivitiesDao extends DatabaseAccessor<AppDatabase> with _$ActivitiesDaoMixin {
class ActivitiesDao extends DatabaseAccessor<AppDatabase>
with _$ActivitiesDaoMixin {
ActivitiesDao(super.db);
Future<List<Activity>> all() async {
@ -12,26 +13,71 @@ class ActivitiesDao extends DatabaseAccessor<AppDatabase> with _$ActivitiesDaoMi
}
Future<Activity> find(int id) async {
return await (select(activities)..where((activity) => activity.id.equals(id) )).getSingle();
return await (select(activities)
..where((activity) => activity.id.equals(id)))
.getSingle();
}
Future remove(Activity activity) => delete(activities).delete(activity);
Future<List<Activity>> sessionActivities(int id) async {
final result = select(db.sessionActivities).join(
Future<List<Activity>> activitiesFromSession(int id) async {
final result = select(db.sessionActivities).join(
[
innerJoin(
db.activities,
db.activities.id
.equalsExp(db.sessionActivities.activityId),
db.activities.id.equalsExp(db.sessionActivities.activityId),
),
],
)..where(db.sessionActivities.sessionId.equals(id));
final activities = (await result.get())
.map((e) => e.readTable(db.activities))
.toList();
final activities =
(await result.get()).map((e) => e.readTable(db.activities)).toList();
return activities;
}
}
Stream<List<Activity>> watchSessionActivities(int id) {
final query = select(db.sessionActivities).join(
[
innerJoin(
db.activities,
db.activities.id.equalsExp(db.sessionActivities.activityId),
),
],
)..where(db.sessionActivities.sessionId.equals(id));
return query.watch().map((rows){
final activities =
(rows).map((e) => e.readTable(db.activities)).toList();
return activities;
});
}
// MultiSelectable<SessionActivity> _selectableSessionActivities(int id) {
// // return select(db.sessionActivities)..limit(1, offset: 1);
// // final query = select(db.sessionActivities).join(
// // [
// // innerJoin(
// // db.activities,
// // db.activities.id.equalsExp(db.sessionActivities.activityId),
// // ),
// // ],
// // )..where(db.sessionActivities.sessionId.equals(id));
// // return query;
// final query = select(db.sessionActivities)..where((row) => row.sessionId.equals(id));
// query.join(
// [
// innerJoin(
// db.activities,
// db.activities.id.equalsExp(db.sessionActivities.activityId),
// ),
// ],
// );
// return query;
// }
}