part of '../database.dart'; class AudioPlayerStateTable extends Table { IntColumn get id => integer().autoIncrement()(); BoolColumn get playing => boolean()(); TextColumn get loopMode => textEnum()(); BoolColumn get shuffled => boolean()(); TextColumn get collections => text().map(const StringListConverter())(); TextColumn get tracks => text() .map(const SpotubeTrackObjectListConverter()) .withDefault(const Constant("[]"))(); IntColumn get currentIndex => integer().withDefault(const Constant(0))(); } class SpotubeTrackObjectListConverter extends TypeConverter, String> { const SpotubeTrackObjectListConverter(); @override List fromSql(String fromDb) { final raw = (jsonDecode(fromDb) as List).cast(); return raw .map((e) => SpotubeTrackObject.fromJson(e.cast())) .toList(); } @override String toSql(List value) { return jsonEncode( value.map((e) => e.toJson()).toList(), ); } }