ambito/lib/src/packages/ambito_api/base.dart
2024-10-28 16:17:09 +01:00

65 lines
2 KiB
Dart

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<bool> 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()));
}
}