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) { return fromDb .split(",") .where((e) => e.isNotEmpty) .map( (e) => SpotubeTrackObject.fromJson( json.decode(e) as Map, ), ) .toList(); } @override String toSql(List value) { return value.map((e) => json.encode(e)).join(","); } }