TKK_E32230206/lib/repositories/iot_repository.dart

44 lines
1.7 KiB
Dart

import '../models/sensor_model.dart';
import '../services/iot_service.dart';
import '../services/api_iot_service.dart'; // import api service untuk case khusus
/// Repository IoT — lapisan jembatan antara State Notifier (Presentation Layer) dan Layanan API Hardware (Service Layer).
/// Menyediakan data sensor real-time serta agregasi riwayat sensor (per jam / harian).
class IotRepository {
final IotService _service;
IotRepository(this._service);
/// Mengambil data status sensor real-time terbaru dari hardware.
Future<SensorModel> getSensorData() {
return _service.fetchSensorData();
}
/// Mengambil data riwayat sensor mentah (history) untuk grafik.
/// Hanya dieksekusi jika tipe service yang terpasang adalah [ApiIotService].
Future<List<SensorModel>> getHistoryData() {
if (_service is ApiIotService) {
return _service.fetchHistory();
}
return Future.value([]);
}
/// Mengambil data agregasi riwayat sensor harian (rata-rata per hari) untuk grafik bulanan.
/// [days] menentukan berapa hari ke belakang data yang akan diambil (default: 30 hari).
Future<List<Map<String, dynamic>>> getDailyHistory({int days = 30}) {
if (_service is ApiIotService) {
return _service.fetchDailyHistory(days: days);
}
return Future.value([]);
}
/// Mengambil data agregasi riwayat sensor per jam (rata-rata per jam) untuk grafik harian.
/// [days] menentukan rentang hari ke belakang data yang diambil (default: 7 hari).
Future<List<Map<String, dynamic>>> getHourlyHistory({int days = 7}) {
if (_service is ApiIotService) {
return _service.fetchHourlyHistory(days: days);
}
return Future.value([]);
}
}