mucke/lib/system/repositories/music_data_repository_impl.dart

35 lines
1.1 KiB
Dart
Raw Normal View History

2020-03-24 22:17:03 +01:00
import 'package:dartz/dartz.dart';
import 'package:meta/meta.dart';
import '../../core/error/failures.dart';
import '../../domain/entities/album.dart';
import '../../domain/repositories/music_data_repository.dart';
import '../datasources/local_music_fetcher_contract.dart';
import '../datasources/music_data_source_contract.dart';
2020-03-26 11:58:30 +01:00
import '../models/album_model.dart';
2020-03-24 22:17:03 +01:00
class MusicDataRepositoryImpl implements MusicDataRepository {
MusicDataRepositoryImpl(
{@required this.localMusicFetcher, @required this.musicDataSource});
2020-03-26 11:58:30 +01:00
final LocalMusicFetcher localMusicFetcher;
final MusicDataSource musicDataSource;
2020-03-24 22:17:03 +01:00
@override
Future<Either<Failure, List<Album>>> getAlbums() async {
2020-03-26 11:58:30 +01:00
return musicDataSource.getAlbums().then(
(List<AlbumModel> albums) => Right<Failure, List<AlbumModel>>(albums));
2020-03-24 22:17:03 +01:00
}
@override
Future<void> updateDatabase() async {
2020-03-26 11:58:30 +01:00
final List<AlbumModel> albums = await localMusicFetcher.getAlbums();
2020-03-24 22:17:03 +01:00
2020-03-26 11:58:30 +01:00
for (final AlbumModel album in albums) {
2020-03-24 22:17:03 +01:00
if (!await musicDataSource.albumExists(album)) {
musicDataSource.insertAlbum(album);
}
}
}
}