Line data Source code
1 : import 'package:flutter/cupertino.dart'; 2 : import 'package:pal/src/database/entity/version_entity.dart'; 3 : import 'package:pal/src/database/repository/version_repository.dart'; 4 : import 'package:pal/src/services/package_version.dart'; 5 : 6 : abstract class VersionEditorService { 7 : 8 7 : factory VersionEditorService.build({ 9 : @required VersionRepository versionRepository, 10 : @required PackageVersionReader packageVersionReader 11 7 : }) => VersionEditorHttpService(versionRepository, packageVersionReader); 12 : 13 0 : Future<VersionEntity> getCurrentVersion() => throw "not implemented yet"; 14 : 15 0 : Future<List<VersionEntity>> getAll() => throw "not implemented yet"; 16 : 17 0 : Future<VersionEntity> getVersion(String name) => throw "not implemented yet"; 18 : 19 0 : Future<VersionEntity> createVersion(VersionEntity version) => throw "not implemented yet"; 20 : 21 0 : Future<int> getOrCreateVersionId(String versionName) => throw "not implemented yet"; 22 : } 23 : 24 : class VersionEditorHttpService implements VersionEditorService { 25 : final VersionRepository versionRepository; 26 : final PackageVersionReader packageVersionReader; 27 : 28 7 : VersionEditorHttpService(this.versionRepository, this.packageVersionReader); 29 : 30 : @override 31 1 : Future<VersionEntity> getCurrentVersion() async { 32 2 : var currentVersion = packageVersionReader.version; 33 1 : return versionRepository 34 1 : .getVersions(name: currentVersion) 35 6 : .then((res) => res.numberOfElements > 0 ? res.entities.first : null); 36 : } 37 : 38 1 : @override 39 : Future<List<VersionEntity>> getAll() { 40 4 : return versionRepository.getVersions(pageSize: 1000).then((res) => 41 3 : res.numberOfElements > 0 ? res.entities : List<VersionEntity>()); 42 : } 43 : 44 0 : @override 45 : Future<VersionEntity> getVersion(String name) { 46 0 : return versionRepository.getVersion(name: name); 47 : } 48 : 49 0 : @override 50 : Future<VersionEntity> createVersion(VersionEntity createVersion) { 51 0 : return versionRepository.createVersion(createVersion); 52 : } 53 : 54 : @override 55 0 : Future<int> getOrCreateVersionId(String versionName) async { 56 0 : if (versionName == null || versionName.length <= 0) { 57 : throw 'invalid version name'; 58 : } 59 : int versionMinId; 60 0 : VersionEntity resVersion = await this.getVersion(versionName); 61 0 : if (resVersion?.id != null) { 62 0 : versionMinId = resVersion.id; 63 : } else { 64 0 : VersionEntity resVersion = await this.createVersion( 65 0 : VersionEntity(name: versionName), 66 : ); 67 0 : if (resVersion?.id != null) { 68 0 : versionMinId = resVersion?.id; 69 : } else { 70 : throw 'page id is null'; 71 : } 72 : } 73 : return versionMinId; 74 : } 75 : }