58 lines
1.6 KiB
Dart
58 lines
1.6 KiB
Dart
import 'package:drift/drift.dart';
|
|
import 'package:sendtrain/database/database.dart';
|
|
|
|
part 'media_items_dao.g.dart';
|
|
|
|
@DriftAccessor(tables: [MediaItems])
|
|
class MediaItemsDao extends DatabaseAccessor<AppDatabase> with _$MediaItemsDaoMixin {
|
|
MediaItemsDao(super.db);
|
|
|
|
Future<List<MediaItem>> all() async {
|
|
return await select(mediaItems).get();
|
|
}
|
|
|
|
Future<MediaItem> find(int id) async {
|
|
return await (select(mediaItems)..where((mediaItem) => mediaItem.id.equals(id) )).getSingle();
|
|
}
|
|
|
|
Future<List<MediaItem>> fromActivity(Activity activity) async {
|
|
final result = select(db.objectMediaItems).join(
|
|
[
|
|
innerJoin(
|
|
db.mediaItems,
|
|
db.mediaItems.id.equalsExp(db.objectMediaItems.mediaId),
|
|
),
|
|
],
|
|
)
|
|
..where(
|
|
db.objectMediaItems.objectType.equals(ObjectType.activities.name))
|
|
..where(db.objectMediaItems.objectId.equals(activity.id));
|
|
|
|
final mediaItems = (await result.get())
|
|
.map((e) => e.readTable(db.mediaItems))
|
|
.toList();
|
|
|
|
return mediaItems;
|
|
}
|
|
|
|
Future<List<MediaItem>> fromSession(Session session) async {
|
|
final result = select(db.objectMediaItems).join(
|
|
[
|
|
innerJoin(
|
|
db.mediaItems,
|
|
db.mediaItems.id.equalsExp(db.objectMediaItems.mediaId),
|
|
),
|
|
],
|
|
)
|
|
..where(
|
|
db.objectMediaItems.objectType.equals(ObjectType.sessions.name))
|
|
..where(db.objectMediaItems.objectId.equals(session.id));
|
|
|
|
final mediaItems = (await result.get())
|
|
.map((e) => e.readTable(db.mediaItems))
|
|
.toList();
|
|
|
|
return mediaItems;
|
|
}
|
|
}
|