Line data Source code
1 : import 'dart:convert'; 2 : 3 : import 'package:flutter/material.dart'; 4 : import 'package:pal/src/database/adapter/version_entity_adapter.dart'; 5 : import 'package:pal/src/database/entity/pageable.dart'; 6 : import 'package:pal/src/database/entity/version_entity.dart'; 7 : import 'package:pal/src/database/repository/base_repository.dart'; 8 : import 'package:pal/src/services/http_client/base_client.dart'; 9 : 10 : abstract class VersionRepository { 11 : 12 0 : Future<Pageable<VersionEntity>> getVersions({String name, int pageSize = 10}) => throw "not implemented yet"; 13 : 14 0 : Future<VersionEntity> getVersion({String name = ''}) => throw "not implemented yet"; 15 : 16 0 : Future<VersionEntity> createVersion(final VersionEntity createVersion) => throw "not implemented yet"; 17 : } 18 : 19 : class VersionHttpRepository extends BaseHttpRepository 20 : implements VersionRepository { 21 : final VersionEntityAdapter _versionEntityAdapter = VersionEntityAdapter(); 22 : final HttpClient httpClient; 23 : 24 9 : VersionHttpRepository({@required this.httpClient}) 25 9 : : super(httpClient: httpClient); 26 : 27 1 : @override 28 : Future<Pageable<VersionEntity>> getVersions({ 29 : String name = '', 30 : int pageSize = 10, 31 : }) { 32 : return this 33 1 : .httpClient 34 2 : .get('editor/versions?versionName=$name&pageSize=$pageSize') 35 5 : .then((res) => _versionEntityAdapter.parsePage(res.body)); 36 : } 37 : 38 1 : @override 39 : Future<VersionEntity> getVersion({String name = ''}) { 40 : return this 41 1 : .httpClient 42 2 : .get('editor/versions?versionName=$name&pageSize=1') 43 2 : .then((res) { 44 3 : Pageable<VersionEntity> pages = _versionEntityAdapter.parsePage(res.body); 45 4 : return (pages.entities != null && pages.entities.length > 0) 46 2 : ? pages.entities.first 47 : : null; 48 : }); 49 : } 50 : 51 1 : Future<VersionEntity> createVersion( 52 : final VersionEntity createVersion, 53 : ) async { 54 : return this 55 1 : .httpClient 56 1 : .post('editor/versions', 57 2 : body: jsonEncode({ 58 1 : 'name': createVersion.name, 59 : })) 60 5 : .then((res) => _versionEntityAdapter.parse(res.body)); 61 : } 62 : }