feat: align Sensor repo with API, implement Phoenix repo

This commit is contained in:
2026-05-12 16:36:59 +02:00
parent 0cc4a337a9
commit 24d3fc4f1a
2 changed files with 34 additions and 13 deletions
@@ -1,5 +1,4 @@
import '../../domain/models/sensor.dart';
import '../../domain/models/position.dart';
import '../sources/localiser/sensor_client.dart';
import 'sensor_repository.dart';
@@ -9,19 +8,39 @@ class PhoenixSensorRepository implements SensorRepository {
final SensorClient client;
@override
Future<List<Sensor>> getSensors() => throw UnimplementedError();
Future<List<Sensor>> getSensors() async {
final list = await client.getSensors();
return list.map((j) => Sensor.fromJson(j as Map<String, dynamic>)).toList();
}
@override
Future<Sensor> getSensor(String id) => throw UnimplementedError();
Future<List<Sensor>> getUnplacedSensors() async {
final list = await client.getUnplacedSensors();
return list.map((j) => Sensor.fromJson(j as Map<String, dynamic>)).toList();
}
@override
Future<Sensor> createSensor({required String name, required Position position}) =>
throw UnimplementedError();
Future<Sensor> getSensor(int id) async =>
Sensor.fromJson(await client.getSensor(id));
@override
Future<Sensor> updateSensor(String id, {String? name, Position? position}) =>
throw UnimplementedError();
Future<Sensor> updateSensor(int id, {String? name, double? rssiRef}) async {
final params = <String, dynamic>{};
if (name != null) params['name'] = name;
if (rssiRef != null) params['rssi_ref'] = rssiRef;
return Sensor.fromJson(await client.updateSensor(id, params));
}
@override
Future<void> deleteSensor(String id) => throw UnimplementedError();
Future<void> deleteSensor(int id) => client.deleteSensor(id);
@override
Future<Sensor> placeSensor(int id,
{required int roomId, required double x, required double y}) async =>
Sensor.fromJson(
await client.placeSensor(id, {'room_id': roomId, 'x': x, 'y': y}));
@override
Future<Sensor> unplaceSensor(int id) async =>
Sensor.fromJson(await client.unplaceSensor(id));
}
+7 -5
View File
@@ -1,10 +1,12 @@
import '../../domain/models/sensor.dart';
import '../../domain/models/position.dart';
abstract class SensorRepository {
Future<List<Sensor>> getSensors();
Future<Sensor> getSensor(String id);
Future<Sensor> createSensor({required String name, required Position position});
Future<Sensor> updateSensor(String id, {String? name, Position? position});
Future<void> deleteSensor(String id);
Future<List<Sensor>> getUnplacedSensors();
Future<Sensor> getSensor(int id);
Future<Sensor> updateSensor(int id, {String? name, double? rssiRef});
Future<void> deleteSensor(int id);
Future<Sensor> placeSensor(int id,
{required int roomId, required double x, required double y});
Future<Sensor> unplaceSensor(int id);
}