LCOV - code coverage report
Current view: top level - src/database/repository/client - schema_repository.dart (source / functions) Hit Total Coverage
Test: lcov.info Lines: 14 21 66.7 %
Date: 2020-12-04 18:41:24 Functions: 0 0 -

          Line data    Source code
       1             : import 'package:flutter/cupertino.dart';
       2             : import 'package:http/http.dart';
       3             : import 'package:pal/src/database/adapter/generic_adapter.dart';
       4             : import 'package:pal/src/database/entity/helper/schema_entity.dart';
       5             : import 'package:pal/src/database/repository/base_repository.dart';
       6             : import 'package:pal/src/services/http_client/base_client.dart';
       7             : import 'package:pal/src/database/adapter/schema_entity_adapter.dart' as Adapter;
       8             : 
       9             : import '../../hive_client.dart';
      10             : 
      11             : abstract class ClientSchemaRepository {
      12             : 
      13             :   /// if [schemaVersion] is null returns the current schemaEntity
      14             :   /// if [schemaVersion] is provided and repository contains an upper version returns the current SchemaEntity
      15             :   /// if [schemaVersion] is provided and repository contains a lower or equal version returns nothing
      16             :   /// if [language] is null, returns the default language
      17             :   /// if [appVersion] must be provided, current application version in user pubspec.yml
      18             :   Future<SchemaEntity> get({int schemaVersion, String language, String appVersion});
      19             : 
      20             : }
      21             : 
      22             : 
      23             : class ClientSchemaRemoteRepository extends BaseHttpRepository implements ClientSchemaRepository {
      24             : 
      25             :   GenericEntityAdapter<SchemaEntity> _adapter = Adapter.SchemaEntityAdapter();
      26             : 
      27           2 :   ClientSchemaRemoteRepository({@required HttpClient httpClient})
      28           2 :     : super(httpClient: httpClient);
      29             : 
      30             :   @override
      31           0 :   Future<SchemaEntity> get({int schemaVersion, String language, @required String appVersion}) async {
      32           0 :     final Response response = await this
      33           0 :       .httpClient
      34           0 :       .get('client/schema', headers: {
      35             :       'appVersion': appVersion,
      36           0 :       'schemaVersion': schemaVersion != null ? schemaVersion.toString() : ''
      37             :     });
      38           0 :     if(response.body.isNotEmpty) {
      39           0 :       return this._adapter.parse(response.body);
      40             :     }
      41             :     return null;
      42             :   }
      43             : 
      44             : }
      45             : 
      46             : class ClientSchemaLocalRepository implements ClientSchemaRepository {
      47             : 
      48             :   final LocalDbOpener<SchemaEntity> _hiveBoxOpener;
      49             : 
      50           4 :   ClientSchemaLocalRepository({ LocalDbOpener<SchemaEntity> hiveBoxOpener})
      51             :     : this._hiveBoxOpener = hiveBoxOpener;
      52             : 
      53             :   @override
      54           2 :   Future<SchemaEntity> get({int schemaVersion, String language, String appVersion}) async {
      55           6 :     var _hiveBox = await _hiveBoxOpener();
      56           2 :     if(_hiveBox.isEmpty)
      57             :       return null;
      58           4 :     return _hiveBox.values.first;
      59             :   }
      60             : 
      61           2 :   Future<void> save(SchemaEntity schema) async {
      62           6 :     var _hiveBox = await _hiveBoxOpener();
      63           4 :     await _hiveBox.clear();
      64           4 :     await _hiveBox.add(schema);
      65             :   }
      66             : 
      67           2 :   Future<void> clear() async {
      68           6 :     var _hiveBox = await _hiveBoxOpener();
      69           4 :     await _hiveBox.clear();
      70             :   }
      71             : 
      72             : }

Generated by: LCOV version 1.14