import 'package:drift/drift.dart'; import 'package:sendtrain/database/database.dart'; part 'media_items_dao.g.dart'; @DriftAccessor(tables: [MediaItems]) class MediaItemsDao extends DatabaseAccessor with _$MediaItemsDaoMixin { MediaItemsDao(super.db); Future> all() async { return await select(mediaItems).get(); } Future> find(int id) async { return await (select(mediaItems)..where((mediaItem) => mediaItem.id.equals(id) )).get(); } Future> mediaItemsFromSession(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; } }