import 'dart:convert'; import 'package:ambito/src/domain/entity/entities.dart'; import 'package:ambito/src/domain/entity/funding_program/funding_program.dart'; import 'package:ambito/src/packages/ambito_api/restclient.dart'; import 'package:ambito/src/packages/ambito_db/repositories/funding_program_repository.dart'; import 'package:flutter_dotenv/flutter_dotenv.dart'; import '../ambito_db/base_db.dart'; class BaseApi { Map tables = {}; init() { tables = jsonDecode(dotenv.get('BASEROW_IDS')); } Future getContent(String table) async { init(); int tableId = tables[table] ?? 0; if (tableId > 0) { var response = await RestClient().get('$tableId/?user_field_names=true&size=200'); if (response.statusCode == 200) { var json = _jsonDecoded(response.body); switch (table) { case 'baumarten': for (var baumart in json['results']) { BaumartenRepository().put(Baumarten.fromJson(baumart)); } break; case 'measure': for (var measure in json['results']) { MeasureRepository().put(Measure.fromJson(measure)); } break; case 'measure_combination': for (var measure_combination in json['results']) { MeasureCombinationRepository() .put(MeasureCombination.fromJson(measure_combination)); } break; case 'organism': for (var organism in json['results']) { OrganismRepository().put(Organism.fromJson(organism)); } break; case 'funding_program': for (var fundingProgram in json['results']) { FundingProgramRepository() .put(FundingProgram.fromJson(fundingProgram)); } break; } return true; } return false; } return false; } dynamic _jsonDecoded(String input) { return jsonDecode(utf8.decode(input.runes.toList())); } }